1. 程式人生 > >centos 6 編譯安裝lamp

centos 6 編譯安裝lamp

dex 如果 fpm-php none 解壓 虛擬主機 ets arp stop

Centos 6 系統上編譯安裝lamp
所有操作都是關閉防火墻和selinex的前下提先進行的
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 --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
技術分享圖片
更改vim /etc/rc.d/init.d/httpd2.4
技術分享圖片
上圖中的
將httpd2.4添加到服務列表中去:chkconfig --add httpd2.4
檢查下httpd 2.4 開機是否會自動啟動 chkconfig --list httpd2.4
添加開機自動啟動在345模式下:chkconfig --level 345 httpd2.4 on
技術分享圖片
清除緩存: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
技術分享圖片
重讀下 . /etc/profile.d/httpd2.4.sh

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

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
建立軟鏈接:
技術分享圖片
更改mysql目錄下的屬組為mysql
技術分享圖片
執行scripts目錄下的mysql_install_db初始化數據庫
技術分享圖片
提供配置文件:
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 #每個innnodb表都使用單個文件
Skip_name_resolve = on #跳過主機名解析
技術分享圖片
為mariadb提供啟動服務的腳本:
技術分享圖片
Service mysqld start 啟動服務
Ss -tnl查看3306端口是否處於監聽狀態
技術分享圖片
添加個環境變量:/etc/profile.d/mysqld.sh
技術分享圖片
重讀下 . /etc/profile.d/mysqld.sh
技術分享圖片
安裝成功

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();
    ?>

通過客戶端訪問
技術分享圖片

此時編譯安裝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用戶設置密碼
技術分享圖片
默認的數據庫有兩個匿名用戶是不安全的現在我們將其刪除:
drop user ‘‘@‘localhost‘;
drop user ‘‘@‘localhost.localdomain‘;
然後service mysqld reload就可以登入了
技術分享圖片

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

技術分享圖片
技術分享圖片
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
技術分享圖片
編輯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

技術分享圖片

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

三、下面將php作為獨立的模塊安裝方法
1、在上面的基礎上重新編譯php,首先刪除剛才解壓的rm php-5.4.26 -rf
2、重新解壓 Tar xf rm 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
技術分享圖片
11、fpm-php的主配置文件為/usr/local/php5/etc/php-fpm.conf
12、cp php-fpm.conf.default php-fpm.conf
修改pid路徑
技術分享圖片
13、然後啟動service fpm-php start
技術分享圖片
啟動成功

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

技術分享圖片

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
技術分享圖片

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
技術分享圖片
安裝結束時,會出現類似如下行:
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倍以上
技術分享圖片
20、整個測試完畢

centos 6 編譯安裝lamp