centos 6 編譯安裝lamp

Centos 6 系統上編譯安裝lamp
所有操作都是關閉防火牆和selinux的前提下進行的
httpd和php的組合方式:
Modules:把php編譯成httpd的DSO對象;
Prefork:需要libphp5的支持
Event、worker:需要libphp5-zts的支持。
所以如果pmp之間需要切換工作方式的化需要有相應的庫支持。
Cgi:很少使用
Fmp(fastcgi):php作爲獨立的模塊服務

我們做httpd+php用兩種方法組合:
1、將php編程成httpd的模塊
2、將php作爲獨立的模塊運行

我們用的是httpd2.4的版本:需要apr-1.4、apr-util-1.4以上的版本支持
安裝順序爲 httpd 、 mariadb 、php
注意php需要最後安裝原因如下:
1、編譯安裝如果是把php編譯進httpd的模塊需要知道httpd的位置。
2、php編譯連接mariadb的驅動需要知道mariadb的位置

準備好安裝包:
apr-1.5.0.tar.bz2
apr-util-1.5.3.tar.bz2
httpd-2.4.6.tar.bz2
mariadb-5.5.59-linux-x86_64.tar.gz
php-5.4.26.tar.bz2
phpMyAdmin-4.0.10.20-all-languages.zip
xcache-3.1.0.tar.bz2

一、開始編譯安裝
1、tar xf apr-1.5.0.tar.bz2
Cd arp-1.5.0
./configure --prefix=/usr/local/apr
Make && make install

Tar xf apr-util-1.5.3.tar.bz2
Cd apr-util-1.5.3
./configure --prefix=/usr/loca/apr-util --with-apr=/usr/local/apr
Make && make install 

2、安裝httpd是需要依賴pcre-devel包所以先安裝
yum install pcre-devel
Tar xf httpd-2.4.6.tar.bz2
cd httpd-2.4.6
./configure --prefix=/usr/local/apache --sysconf=/etc/httpd2.4 --enable-so --enable-ssl --enable-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

3、給編譯安裝的httpd2.4提供一個服務腳本。因爲我的centos6系統上有httpd的服務腳本所以我就直接複製一個拿出來更改成httpd2.4的服務腳本
Cp /etc/rc.d/init.d/httpd/etc/rc.d/init.d/httpd2.4
centos 6 編譯安裝lamp
更改vim /etc/rc.d/init.d/httpd2.4
centos 6 編譯安裝lamp
上圖中的
將httpd2.4添加到服務列表中去:chkconfig --add httpd2.4
檢查下httpd 2.4 開機是否會自動啓動 chkconfig --list httpd2.4
添加開機自動啓動在345模式下:chkconfig --level 345 httpd2.4 on
centos 6 編譯安裝lamp
清除緩存:Hash -r
注意:因爲本機安裝的centos6系統自帶了httpd2.2 所以現在如果啓動httpd還是httpd2.2的版本,並不是我們安裝的httpd2.4。所以我們需要修改環境變量:讓httpd2.4的先運行。
方法爲:vim /etc/profile.d/httpd2.4.sh
Export PATH=/usr/local/apache/bin:$PATH
centos 6 編譯安裝lamp
重讀下 . /etc/profile.d/httpd2.4.sh

檢查httpd語法: httpd -t
centos 6 編譯安裝lamp
我們更改下/etc/httpd2.4/conf/httpd.conf配置文件
添加ServerName localhost:80 解決下上面的AH0058問題
centos 6 編譯安裝lamp
啓動服務:service httpd2.4 start
Ss -tnl 查看端口是否處於監聽狀態
Netstat -aux|grep httpd
centos 6 編譯安裝lamp
Httpd -M :查看已裝載的模塊
很到模塊都沒有裝載,可以在/etc/httpd2.4/conf/httpd.conf中啓用
centos 6 編譯安裝lamp

4、編譯mariadb-5.5.59-linux-x86_64.tar.gz
Tar xf mariadb-5.5.59-linux-x86_64.tar.gz -C /usr/local
創建mysql用戶:useradd -r mysql
創建 數據庫的存儲目錄:mkdir -pv /mydata/data
更改目錄屬主屬組:chown mysql.mysql /mydata/data
Cd /usr/local
建立軟鏈接:
centos 6 編譯安裝lamp
更改mysql目錄下的屬組爲mysql
centos 6 編譯安裝lamp
執行scripts目錄下的mysql_install_db初始化數據庫
centos 6 編譯安裝lamp
提供配置文件:
Mkdir /etc/mysql
Cp support-files/my-large.cnf /etc/mysql/my.cnf
centos 6 編譯安裝lamp
更改配置文件Vim /etc/mysql/my.cnf
添加三行:datadir = /mydata/data #指明數據庫存儲位置
Innodb_file_per_table = on #每個innnodb表都使用單個文件
Skip_name_resolve = on #跳過主機名解析
centos 6 編譯安裝lamp
爲mariadb提供啓動服務的腳本:
centos 6 編譯安裝lamp
Service mysqld start 啓動服務
Ss -tnl查看3306端口是否處於監聽狀態
centos 6 編譯安裝lamp
添加個環境變量:/etc/profile.d/mysqld.sh
centos 6 編譯安裝lamp
重讀下 . /etc/profile.d/mysqld.sh
centos 6 編譯安裝lamp
安裝成功

5、安裝 php-5.4.26.tar.bz2
解決依賴關係:
請配置好yum源(系統安裝源及epel源)後執行如下命令:
yum -y install bzip2-devel libmcrypt-devel
yum install libxml2-devel
Cd php-5.4.26
./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
說明:
1、這裏爲了支持apache的worker或event這兩個MPM,編譯時使用了--enable-maintainer-zts選項。
2、如果使用PHP5.3以上版本,爲了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQL或MySQL開發包了。mysqlnd從php 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。
./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

 make
 make test
 make intall

爲php提供配置文件:
 cp php.ini-production /etc/php.ini

3、 編輯apache配置文件httpd.conf,以apache支持php

vim /etc/httpd/httpd.conf
1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

2、定位至DirectoryIndex index.html
修改爲:
DirectoryIndex index.php index.html

而後重新啓動httpd,或讓其重新載入配置文件即可測試php是否已經可以正常使用。

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

   <?php
      $link = mysql_connect('127.0.0.1','root','');
      if ($link)
        echo "Success...";
      else
        echo "Failure...";

      mysql_close();
    ?>

通過客戶端訪問
centos 6 編譯安裝lamp

此時編譯安裝lamp完成

7、下面安裝phpMyAdmin-4.0.10.20-all-languages
Unzip phpMyAdmin-4.0.10.20-all-languages
mv phpMyAdmin-4.0.10.20-all-languages /usr/local/apache/htdocs/pma
cp config.sample.inc.php config.inc.php
現在沒有密碼不能登入:所以要給mysql的root用戶設置密碼
centos 6 編譯安裝lamp
默認的數據庫有兩個匿名用戶是不安全的現在我們將其刪除:
drop user ''@'localhost';
drop user ''@'localhost.localdomain';
然後service mysqld reload就可以登入了
centos 6 編譯安裝lamp

8、壓力測試:ab -c 10 -n 100 http://192.168.2.106/pma/index.php

centos 6 編譯安裝lamp
centos 6 編譯安裝lamp
9、編譯安裝xcache給php加速 安裝版本爲xcache-3.1.0.tar.bz2
Tar xf # tar xf xcache-3.0.3.tar.gz
cd xcache-3.0.3
/usr/local/php/bin/phpize (這個是爲了使./configure生效)
./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
make && make install
centos 6 編譯安裝lamp
編輯php.ini,整合php和xcache:

首先將xcache提供的樣例配置導入php.ini
 mkdir /etc/php.d
 cp xcache.ini /etc/php.d

說明:xcache.ini文件在xcache的源碼目錄中。

接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改爲如下行:
zend_extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

centos 6 編譯安裝lamp

注意:如果php.ini文件中有多條zend_extension指令行,要確保此新增的行排在第一位。
重啓服務 service httpd2.4 restart 生效
centos 6 編譯安裝lamp
在訪問下測試頁 可以看到我們安裝的xcache信息
10、下面我們再次進行壓力測試:看看
centos 6 編譯安裝lamp
整個過程完畢!!!

三、下面將php作爲獨立的模塊安裝方法
1、在上面的基礎上重新編譯php,首先刪除剛纔解壓的rm php-5.4.26 -rf
2、重新解壓 Tar xf php-5.4.26.tar.bz2
3、Cd php-5.4.26
4、./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 --with-config-file-scan-dir=/etc/php5.d --with-bz2
5、Make && make install
6、Service httpd2.4 stop
7、重新修改httpd.conf的配置文件
8、Mkdir /etc/php5{,.d}
9、Cp php.ini-production /etc/php5/php.ini
10、添加php-fpm 的服務腳本 : cp sapo/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
Chkconfig --level 345 php-fpm on
centos 6 編譯安裝lamp
11、fpm-php的主配置文件爲/usr/local/php5/etc/php-fpm.conf
12、cp php-fpm.conf.default php-fpm.conf
修改pid路徑
centos 6 編譯安裝lamp
13、然後啓動service fpm-php start
centos 6 編譯安裝lamp
啓動成功

14、啓用httpd的相關模塊
在Apache httpd 2.4以後已經專門有一個模塊針對FastCGI的實現,此模塊爲 mod_proxy_fcgi.so,它其實是作爲mod_proxy.so模塊的擴充,因此,這兩個模塊都 要加載
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

定位至DirectoryIndex index.html 
修改爲:DirectoryIndex  index.php  index.html

centos 6 編譯安裝lamp

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

配置虛擬主機支持使用fcgi
在相應的虛擬主機中添加類似如下兩行。
     ProxyRequests Off
     ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1
例如:
<VirtualHost *:80>
        DocumentRoot "/www/pingan.com"
            ServerName pingan.com
            ServerAlias www.pingan.com

            ProxyRequests Off
            ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/pingan.com/$1

             <Directory "/www/pingan.com">
                    Options none
                    AllowOverride none
                    Require all granted
            </Directory>
</VirtualHost>

16、現在進行壓力測試:ab -c 10 -n 100 http://192.168.2.106/pma/index.php
centos 6 編譯安裝lamp

17、我們安裝xcache然後在進行壓力測試。
由於我們已經安裝過了所以現在先刪除root家目錄下的rm -rf xcache-3.1.0
tar xf xcache-3.1.0.tar.bz2
cd xcache-3.1.0
/usr/local/php5/bin/phpize
./configure --enable-xcache --with-php-config=/usr/local/php5/bin/php-config
make && make install
centos 6 編譯安裝lamp
安裝結束時,會出現類似如下行:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

18、編輯php.ini,整合php和xcache:
首先將xcache提供的樣例配置導入php.ini
cp xcache.ini /etc/php5.d
說明:xcache.ini文件在xcache的源碼目錄中。

接下來編輯/etc/php5.d/xcache.ini,找到zend_extension開頭的行,修改爲如下行:
zend_extension =    /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

注意:如果php.ini文件中有多條zend_extension指令行,要確保此新增的行排在  第一位。

18、接下來重啓service php-fpm restart
19、做壓力測試:ab -c 10 -n 100 http://192.168.2.106/pma/index.php
發現效果明顯提升了2倍以上
centos 6 編譯安裝lamp
20、整個測試完畢

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章