在CentOS 6上編譯安裝LAMP

CentOS 6上編譯安裝LAMP

    在生產中如果需要使用較新的服務,而系統提供的rpm包又較老時該怎么辦呢?其實應用程序的安裝方式有多種,如:使用系統發行商提供rpm包或者下載源碼包手動編譯安裝也是可以的。今天我們編譯的服務不是一個單獨的而是一套。這套黃金搭檔從誕生之初到現在已經經過無數用戶的驗證,各大電商站點、門戶網站、以及各類站點甚至個人網站都在使用著。歲月的痕跡并沒有在它們的身上沉淀,反而越發顯得歷久彌新。

    在編譯之前先簡單介紹下LAMP是什么,那么它們到底是什么呢?別急聽我慢慢道來。LAMP其實是四款軟件首字母的縮寫,L即是在開源領域奉若神明的Linux,而Linux只是系統的內核(kernel),其全稱是GNU/Linux。至于為什么這么稱呼,這里面有一段很長的故事,我怕說下去我這邊天都黑了,如果你們想知道的話,我在以前的博客已經詳細地述說了Linux的歷史,名為“人生若只如初見——Linux”,可自行瀏覽。那么A又是什么呢?A就是apache,念作“阿帕奇”。什么?阿帕奇?美國的武裝直升機?沒錯,你沒有看錯,我也沒有寫錯。不過它可不是什么武裝直升機,它的原意為“a patchy server”,一個充滿補丁的服務。為什么這么叫,這里面也有一段很長的故事。故事的內容我還是選擇不說,如果你們很好奇,可以問百度啊。接下來該M了,M是Mysql或MariaDB的縮寫,為什么要加個或?那你猜。這是個關系型數據庫,用來存放各種數據 。最后一個,P可以是php也可以是perl還可以python,用來解釋執行客戶端發來的動態頁面請求;當然Linux不用我們編譯,直接用系統發行商提供的系統鏡像安裝即可,至于怎么安裝?你應該知道的。

    說了這么多下面我們就動手試試編譯安裝LAMP服務吧,Let‘s go還是Follow me ? 管它了……

一、編譯httpd-2.4

1、準備好開發環境

# yum groupinstall “development tools”

# yum install pcre-devel

2、準備源碼包

apr-1.5.0-tar.gz

apr-util-1.5.3-tar.gz

httpd-2.4.10-tar.gz

3、編譯apr-1.5

# tar xvf apr-1.5.0-tar.gz

# cd apr-1.5.0

# ./configure –prefix=/usr/local/apr

# make && make install

4、編譯apr-util-1.5.3

# tar xvf apr-util-1.5.3-tar.gz

# cd apr-util-1.5.3

# ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr

# make && make install

5、編譯httpd-2.4.10

# tar httpd-2.4.10-tar.gz

# cd httpd-2.4.10

# ./configure –prefix=/usr/local/apache –sysconfdir=/etc/httpd24
–enable-so nable-cgi –enable-rewrite –with-zlib –with-pcre
–with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util
–enable-modules=most –enable-mpms-shared=all –with-mpm=event

# make && make install

6、提供服務腳本/etc/rc.d/init.d/httpd24

拷貝http-2.2的服務腳本并把如下路徑改為編譯后httpd-2.4的路徑即可,pid文件的位置也需要修改

apachectl=/usr/local/apache/bin/apachectl

httpd=/usr/local/apache/bin/httpd

prog=httpd

pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd24}

加入服務列表

# chkconfig –add httpd24

7、配置環境變量并重讀此配置文件

# vim /etc/profile.d/httpd.sh

export PATH=/usr/local/apache/bin:$PATH

# . /etc/profile.d/httpd.sh

8、啟動服務

# service httpd24 start

二、編譯MariaDB-5.5.43

1、準備源碼包

MariaDB-5.5.43-tar.gz

2、創建數據存放目錄

# mkdir -pv /mydata/data

3、創建系統用戶及其系統組并修改其屬主、屬組

# groupadd -r mysql

# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql

# chown -R mysql.mysql /mydata/data

4、安裝并初始化MariaDB

# tar xf MariaDB-5.5.43-tar.gz -C /usr/local

# cd /usr/local

# ln -sv MariaDB-5.5.43 mysql

# cd mysql

# chown -R root.mysql ./*

初始化:

# scripts/mysql_install_db –datadir=/mydata/data/ –user=mysql

5、為mysql提供主配置文件

# mkdir /etc/mysql

# cp support-files/my-large.cnf /etc/mysql/my.cnf

編輯主配置文件如并添加如下內容

# vim /etc/mysql/my.cnf

datadir = /mydata/data

innodb_file_per_table = on

skip_name_resolve = on

6、為mysql提供服務腳本

# cd /usr/local/mysql

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

7、添加至服務列表并啟動服務

# chkconfig –add mysqld

# service mysqld start

8、安裝初始化給root帳號添加密碼以及刪除空帳號

# /usr/local/bin/mysql_secure_installation

三、編譯php-5.4.40

1、準備源碼包

php-5.4.40-tar.gz

2、解決依賴關系

# yum -y install bzip2-devel libmcrypt-devel libxml2-devel

3、編譯并安裝php-5.4.40

# tar xf php-5.4.40

# cd php-5.4.40

# ./configure –prefix=/usr/local/php –with-mysql=/usr/local/mysql
–with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config
–enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir
–with-zlib –with-libxml-dir=/usr –enable-xml –enable-sockets
–with-apxs2=/usr/local/apache/bin/apxs –with-mcrypt
–with-config-file-path=/etc –with-config-file-scan-dir=/etc/php.d
–with-bz2 –enable-maintainer-zts(prefork
模塊不需要此項)

# make && make install

4、為php提供配置文件:

拷貝源碼目錄下的php.ini-production文件到/etc目錄并改名為php.ini

# cp php.ini-production /etc/php.ini

5、編輯apache配置文件httpd.conf,讓apache支持php

# vim /etc/httpd24/httpd.conf

添加如下兩行:

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

并定位至DirectoryIndex index.html將其修改為:

DirectoryIndex index.php index.html

6、提供index.php測試頁面

默認目錄:/usr/local/apache/htdocs

測試頁面index.php示例如下:

<?php

$link = mysql_connect(‘127.0.0.1′,’root’,”);

if ($link)

echo “successfully”;

else

echo “failure”;

mysql_close;

phpinfo();

?>

7、重新啟動httpd服務,測試其是否可正常訪問

# service httpd24 restart

四、編譯安裝xcache,為php加速

1、準備源碼包

xcache-3.2.tar.gz

2、編譯安裝xcache

# tar xf xcache-3.2

# /usr/local/php/bin/phpize 生成./configure腳本

# ./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config

# make && make install

安裝結束后,會出現類似如下行:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

3、編輯php.ini,整合phpxcache

xcache源碼目錄中提供的樣例配置導入php.ini

# mkdir /etc/php.d

# cp xcache.ini /etc/php.d

# vim /etc/php.d/xcache.ini

定位至extension開頭的行,將修改為如下內容:

extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

五、重新編譯httpdfpm方式與php結合

1、刪除之前解壓的目錄并重新解壓

# rm -f php-5.4.0

# tar xf php-5.4.0

2、編譯安裝

# cd php-5.4.0

# ./configure –prefix=/usr/local/php5 –with-mysql=/usr/local/mysql
–with-openssl –with-mysqli=/usr/local/mysql/bin/mysql_config
–enable-mbstring –with-freetype-dir –with-jpeg-dir –with-png-dir
–with-zlib –with-libxml-dir=/usr –enable-xml –enable-sockets
–enable-fpm –with-mcrypt –with-config-file-path=/etc/php5
–with-config-file-scan-dir=/etc/php5.d –with-bz2

# make && make install

3、為php提供配置文件

# mkdir /etc/php5{,.d}

# cp php.ini_production /etc/php5/php.ini

4、為php-fpm提供服務腳本并添加至服務列表

# cp spai/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

# chmod +x /etc/rc.d/init.d/php-fpm

# chkconfig –add php-fpm

5、為php-fpm提供配置文件并編輯:

# cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf

# vim /usr/local/php5/etc/php-fpm.conf

作如下修改:

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

pid = /usr/local/php5/var/run/php-fpm.pid

6、啟動php-fpm

# service php-fpm start

7、驗證php-fpm是否啟動成功

# ps aux | gerp fpm

默認情況下,fpm監聽在127.0.0.19000端口,可使用#
netstat -tnlp | grep php-fpm
驗證是否已經在監聽相關的套接字上

8、配置httdp.conf,以實現fcgi

1、啟用相關的模塊

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

2、配置虛擬主機支持使用fcgi

在相應的虛擬主機中添加類似如下兩行:

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.0:9000/PATH/TO/DOCUMENT_ROOT/$1

提示:/PATH/TO/DOCUMENT_ROOT:為網頁存放的位置

ProxyRequests Off:關閉正向代理

ProxyPassMatch 把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這里直接在fcgi://127.0.0.1:9000后指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。

例:

<VirtualHost *:80>

DocumentRoot “/web/htdocs/www1”

ServerName rzt.com

ServerAlias www.rzt.com

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000web/htdocs/www1/$1

<Directory “/web/htdocs/www1”>

Options none

AllowOverride none

Require all granted

</Directory>

</VirtualHost>

3、讓apache能識別php格式的頁面

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

讓其支持php格式的主頁

DirectoryIndex index.php index.html

原創文章,作者:人字拖,如若轉載,請注明出處:http://www.www58058.com/73954

(0)
人字拖人字拖
上一篇 2017-04-23
下一篇 2017-04-23

相關推薦

  • 第一周n28

    1.計算機的組成及功能 計算機由五大部件組成??刂破鳌⑦\算器、存儲器、輸入輸出設備。 1.控制器(Control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。 2.運算器(Datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工…

    Linux干貨 2017-12-03
  • 文本

    一,復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒 有任何訪問權限; cp -r /etc/skel/ /home/tuser1 chmod -R go= /home/tuser1 二,編輯/etc/group文件,添加組hadoop; vim /etc/group hadoop:x:100…

    Linux干貨 2016-11-20
  • iptables/netfilter入門到進階

    防火墻的概念 Firewall:工作于主機或網絡邊緣,對于進出本主機或網絡的報文根據事先定義的規則作匹配檢測,對于更改被規則匹配到的報文做出相應處理的組件 網絡層防火墻(包過濾防火墻): 優點:對用戶來說透明,處理速度快且易于防護 缺點:一旦黑客突破防火墻,就可以請以偽造數據包源地址、目的地址和IP端口號 代理服務型防火墻(Proxy Service) 優點…

    2017-06-17
  • 第一篇博客

    我的第一篇博客以及接下來的每一篇都要獻給linux運維了。第一次接觸linux是在大三的時候,當時并沒有想到以后還會和linux邂逅并以此謀生。 首先就從最基礎的linux分區與掛載點開始了解介紹,我們熟悉的Windows系統下的分區都分配有盤符,像c盤,d盤之類的,用來存放各種軟件和文件。而linux也有自己的分區,并將分區掛載到不同的掛載點上,掛載是指將…

    2017-07-16
  • 什么是Ansible?

    自動化工具——ansible   ansibleArchitecture ansibleProject 1. 什么是ansible ansible是個什么東西呢?官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT工具。這個工具的目標有這么幾項:讓我們自動化部署APP;自動化管理配置項;自動化的持…

    2017-09-24
  • bash

    bash 配置文件   按生效范圍劃分:存在兩類;     全局配置:            /etc/profile       &nbs…

    Linux干貨 2015-04-15
欧美性久久久久