Linux服務器--CentOS6上源碼安裝LAMP(實現WordPress,PhpMyAdmin)

Linux服務--CentOS6實現LAMP(源碼安裝)

實驗要求:

安裝php時實現php模塊嵌入到httpd中和實現fpm兩種方式。在fpm下,提供兩個虛擬主機:

分別用於實現PHPMyadminWordPress,其中PhpMyAdmin提供ssl.

實驗環境:

CentOS系統一臺(IP172.16.99.4),所需的httpdmariadbphpPhpAdminWordPress的源碼包。

實驗步驟:

安裝順序:httpd-->mariadb-->php.

安裝前的準備工作:

1.安裝開發環境:

本地yum安裝開發環境:

yum groupinstall Development Tools Server Platform Development

2.關閉防火牆或者編寫好相應的防火牆規則,關閉Selinux.

一.安裝LAMP:實現php以模塊嵌入到httpd

1.編譯安裝httpd

1.安裝所以來的軟件包pcre-devel軟件包,本地鏡像自帶,所以yum安裝即可。

2.下載aprapr-util源碼包,並編譯安裝。

APR(Apache portable Run-time librariesApache可移植運行庫)的目的如其名稱一樣,主要爲上層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫。在早期 的Apache版本中,應用程序本身必須能夠處理各種具體操作系統平臺的細節,並針對不同的平臺調用不同的處理函數。

隨着Apache的進一步開 發,Apache組織決定將這些通用的函數獨立出來並發展成爲一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅僅是使用 APR而已。目前APR主要還是由Apache使用,不過由於APR的較好的移植性,因此一些需要進行移植的C程序也開始使用APR,開源項目比如 Flood loader tester(http://httpd.apache.org/test/flood/,該項目用於服務器壓力測試,不僅僅適用於Apache)

編譯安裝:apr-1.5.0.tar.bz2 apr-util-1.5.3.tar.bz2

        # tar xf apr-1.5.0.tar.bz2        
        # cd apr-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/local/apr-util --with-apr=/usr/local/apr
        # make && make install


3.編譯安裝httpd-2.4.12.tar.bz2

        # tar xf httpd-2.4.12.tar.bz2        
        # cd httpd-2.4.12
        # ./configure --prefix=/usr/local/httpd  --sysconfdir=/etc/httpd24 --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

4.安裝完成後,進行相應的配置。

a.提供系統服務:

/usr/local/httpd/bin目錄下的apachectl文件複製到/etc/init.d/下,並命名爲httpd

# cp /usr/local/httpd/bin/apachectl  /etc/init.d/httpd

修改httpd文件:在文件前部分添加如下幾行:

# chkconfig: - 85 15

# description: Apache is a World Wide Web server.

添加系統服務:

#  chkconfig --add httpd

b.添加PATH變量:

在目錄/etc/profile.d/目錄下創建一文件httpd.sh,內容如下:

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

3.安裝配置完成,啓動服務測試:

# service httpd start

wKioL1YD7RTSDbz2AACq9PYvpKk343.jpg

wKiom1YD7oGiCWkrAADZgHRnCD4401.jpg

2.編譯安裝Mariadb

1.準備數據存放的文件系統,使用的邏輯卷:

創建一目錄用於掛在創建的邏輯卷:# mkdir -pv /mydata/data

創建邏輯卷並格式化掛在:

先分區,改變分區ID8e 

創建物理卷: # pvcreate  /dev/sda5

創建卷組: # vgcreate myvg /dev/sda5

創建邏輯卷:# lvcreate -n mydata -L 5G myvg

格式化:mkfs -t ext4 /dev/mapper/myvg-mydata

掛在:mount  /dev/mapper/myvg-mydata  /mydata/data

永久掛在:編寫文件/etc/fstab 添加一行:

/dev/mapper/myvg-mydate  /mydata/data   ext4    defaults     0 0

2.創建用戶和組,使服務安全運行:

創建組:# groupadd -g 3333 mysql

創建用戶:# useradd -g 3333 -u 3333 - r -s /sbin/nologin -M -d /mydata/data mysql

3.使用通用二進制格式安裝 mariadb-5.5.43-linux-x86_64.tar.gz

# tar xf  mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local

# cd /usr/local/

# ln -sv  mariadb-5.5.43-linux-x86_64 mysql

# cd mysql

進入mysql 目錄之後,修改該目錄下所有文件和目錄的屬主和屬組:

# chown -R mysql.mysql .

初始化數據庫:

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

再修改該目錄下文件和目錄的屬主:# chown -R root  .

4.進行後續配置:

a.提供系統服務:

# cd /usr/local/mysql

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

# chmod +x /etc/rc.d/init.d/mysqld

添加至服務列表:

# chkconfig --add mysqld

# chkconfig mysqld on

b.提供配置文件,並在配置文件中添加幾項:

# cd /usr/local/mysql

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

修改配置文件:

datadir = /mydata/data

innodb_file_per_table = on

skip_name_resolve = on

c.修改PATH變量,直接可以使用mysql的相關工具:

/etc/profile.d/目錄下創建文件mysqld.sh

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

d.輸出mysql的頭文件至系統頭文件路徑:創建鏈接實現:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

e.輸出mysql的庫文件給系統庫查找路徑:

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

讓系統重新載入系統庫:

# ldconfig

5.測試:

wKioL1YD73fAd5vuAAHAIqV0hnA916.jpg

3.編譯安裝PHP

此次編輯php是把php以模塊的形式編輯到httpd中,下文將介紹使用fpm編輯php,並進行先關的配置,安裝WordPressphpMyAdmin.

編譯安裝php-5.6.4.tar.xz

1.解決依賴關係:

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

2.編譯安裝php-5.6.4.tar.xz

        # tar xf php-5.6.4.tar.xz        
        # cd php-5.6.4
        # ./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、這裏爲了支持apacheworkerevent這兩個MPM,編譯時使用了--enable-maintainer-zts選項。

2、如果使用PHP5.3以上版本,爲了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQLMySQL開發包了。mysqlndphp 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。

#./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

# make &&make install

3. 爲服務提供配置文件:

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

4.編輯httpd的配置文件,是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

5.測試:

index.php頁面文件中添加如下內容:

        <?php        
            $link=mysql_connect('127.0.0.1','root','');
            if ($link)
        echo "OK";
            else
        echo "Failure";
            phpinfo();
        ?>

wKiom1YD8QvDbBUzAADNdXn1-9U591.jpg


4.LAMP到此安裝結束,只是沒有進行相應的配置。我們先對lamp進行一下壓力測試,查看服務器的負載能力。

 # ab -c 200 -n 1000 http://172.16.99.4/index.php

Total transferred:      72493898 bytes

HTML transferred:       72313898 bytes

Requests per second:    24.05 [#/sec] (mean)

Time per request:       8316.375 [ms] (mean)

Time per request:       41.582 [ms] (mean, across all concurrent requests)

Transfer rate:          1702.54 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0   31  79.8      1     800

Processing:    92 7224 10262.6   1290   41014

Waiting:       85 7129 10161.5   1275   41013

Total:        111 7255 10267.4   1364   41032

發現每秒處理24.05個請求:Requests per second:    24.05 [#/sec] (mean)

接下來安裝Xcahe,再來進行壓力測試,來查看結果:

5.安裝xcache ,php加速:

1、安裝

# tar xf xcache-3.2.0.tar.gz

# cd xcache-3.2.0

# /usr/local/php/bin/phpize

wKiom1YD8dChNFwwAADTzi_kqgM484.jpg

# ./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-20131226/

2、編輯php.ini,整合phpxcache

首先將xcache提供的樣例配置導入php.ini

# mkdir /etc/php.d

將源碼包解壓的目錄下的xcache.ini複製到/etc/php.d

# cp xcache.ini /etc/php.d

接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改爲如下行:

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

6.重新啓動httpd服務和mariadb服務進行壓力測試:

wKioL1YD8kWAnqgaAACb3rNGCcQ857.jpg

]# ab -c 200 -n 1000 http://172.16.99.4/index.php

Total transferred:      76241920 bytes

HTML transferred:       76061920 bytes

Requests per second:    562.74 [#/sec] (mean)

Time per request:       355.406 [ms] (mean)

Time per request:       1.777 [ms] (mean, across all concurrent requests)

Transfer rate:          41898.61 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0   32  28.8     27     100

Processing:    15  140 137.7    118    1201

Waiting:        2  101 137.0     75    1200

Total:         22  172 137.1    144    1274

查看結果Requests per second:    562.74 [#/sec] (mean),明顯比上次快了幾倍!


二.安裝LAMP,實現phpfpm方式與Apache互聯

httpdmariadb的安裝與前一部分相同,這裏只需安裝php就行。

1.編譯安裝 php-5.6.4.tar.xz

    # tar xf php-5.4.26.tar.bz2    
    # 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 --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
    make && make install

這裏把--with-apxs2=/usr/local/apache/bin/apxs 改成--enable-fpm ,即,就是在編輯php時,添加fpm模塊。

說明:如果使用PHP5.3以上版本,爲了鏈接MySQL數據庫,可以指定mysqlnd,這樣在本機就不需要先安裝MySQLMySQL開發包了。mysqlndphp 5.3開始可用,可以編譯時綁定到它(而不用和具體的MySQL客戶端庫綁定形成依賴),但從PHP 5.4開始它就是默認設置了。

# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

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

2.配置php-fpm

安裝完php之後,會在php-5.6.4目錄下的有一個目錄提供了php-fpm的服務腳本。

sapi/fpm/init.d.php-fpm

1.將php-fpm添加至服務列表:

php-5.6.4]# cp sapi/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 php-fpm

2.給php-fpm提供配置文件:

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

3.配置php-fpm的配置文件,修改內容:

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 

4.啓動php-fpm服務,查看是否成功:

# service php-fpm start

wKiom1YD9pHjGPHdAAFKMIKIy_U529.jpg

3.配置httpd:添加支持fcig模塊和配置虛擬主機,支持fcgi:

1.讓httpd能識別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

2.添加fcgi模塊

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

wKiom1YD9w_AdZBQAADSxi7dm3M328.jpg

3.配置支持fcgi的虛擬主機

在配置文件中,取消對#Include /etc/httpd24/extra/httpd-vhosts.conf的註釋,使httpd支持虛擬主機。

編輯虛擬主機的配置文件:

        # vim /etc/httpd24/extra/httpd-vhosts.conf        
        <VirtualHost wordp.zkchang.com:80>
            DocumentRoot "/web/vhosts/wordp/"
            ServerName wordp.zkchang.com
            ErrorLog "/var/log/v_wp_error_log"
            CustomLog "/var/log/v_wp_access_log" common
            ProxyRequests off
            ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/wordp/$1
            <Directory "/web/vhosts/wordp/">
                Options None
                Allowoverride None
                Require all denied
                Require ip 172.16.0.0/16
            </Directory>
        </VirtualHost>
         
        <VirtualHost phpma.zkchang.com:80>
            DocumentRoot "/web/vhosts/pma"
            ServerName phpma.zkcang.com
            ErrorLog "/var/log/v_pma_ror_log"
            CustomLog "/var/log/v_pma_access_log" common
            ProxyRequests off
            ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/pma/$1
            <Directory "/web/vhosts/pma/">
                Options None
                Allowoverride None
                Require all denied
                Require ip 172.16.0.0/16
            </Directory>
        </VirtualHost>


4.分別在不同主機的站點目錄下創建測試網頁文件,進行測試:

        # vim /web/vhosts/wordp/index.php        
        <?php
           echo "This is a wordprocess page"
        ?>
        # vim /web/vhosts/pma/index.php
        <?php
            $link = mysql_connect("127.0.0.1","root","");
            if ($link)
        echo "OK";
            else
        echo "Worry!";
            mysql_close();
            phpinfo();
        ?>

測試結果截圖:

wKiom1YD-CuB0lRjAACTERDLnPA215.jpg

wKiom1YD-IjhevMqAACQgXLNnlo862.jpg

5.對fcgi模式下進行壓力測試,並與php以模塊化嵌入httpd的進行比較:

    # ab -c 200 -n 1000 http://phpma.zkchang.com/index.php

    Total transferred:      66731883 bytes

    HTML transferred:       66531883 bytes

    Requests per second:    637.04 [#/sec] (mean)

    Time per request:       313.951 [ms] (mean)

    Time per request:       1.570 [ms] (mean, across all concurrent requests)

    Transfer rate:          41514.64 [Kbytes/sec] received

    Connection Times (ms)

                  min  mean[+/-sd] median   max

    Connect:        0    6  13.3      0      42

    Processing:    30  143 125.8    137    1077

    Waiting:       26  142 125.7    136    1077

    Total:         51  150 123.1    138    1077

6.安裝Xcache,爲php進行加速:

        # tar xf xcache-3.2.0.tar.bz2        
        # cd xcache-3.2.0
        xcache-3.2.0]# /usr/local/php/bin/phpize
        # ./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-20131226/

編輯php.ini,整合phpxcache

首先將xcache提供的樣例配置導入php.ini

# mkdir /etc/php.d

將源碼包解壓的目錄下的xcache.ini複製到/etc/php.d

# cp xcache.ini /etc/php.d

 

接下來編輯/etc/php.d/xcache.ini,找到zend_extension開頭的行,修改爲如下行:

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

 

再次進行壓力測試,進行比較:

# ab -c 200 -n 1000 http://phpma.zkchang.com/index.php

Total transferred:      66731876 bytes

HTML transferred:       66531876 bytes

Requests per second:    1322.20 [#/sec] (mean)

Time per request:       151.263 [ms] (mean)

Time per request:       0.756 [ms] (mean, across all concurrent requests)

Transfer rate:          86165.07 [Kbytes/sec] received

 

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    2   4.6      0      14

Processing:    13  135  36.6    145     351

Waiting:       13  134  36.8    144     350

Total:         19  137  34.8    146     365


三.分別在兩個虛擬主機上安裝phpmyadmin. WordPress,並實現通過ssl訪問phpmyadmin

1.解壓安裝phpmyadmin,並實現ssl

1.提供phpmyadmin:

        ]# unzip phpMyAdmin-4.4.14.1-all-languages.zip        
        ]# cd phpMyAdmin-4.4.14.1-all-languages
        ]# cp -a phpMyAdmin-4.4.14.1-all-languages /web/vhosts/pma/pma
        ]# cp /web/vhost/pma/pma/config.sample.inc.php{,.bak}
        ]# mv /web/vhost/pma/pma/config.sample.inc.php  config.inc.php
        # vim /web/vhost/pma/pma/config.inc.php 
        $cfg['blowfish_secret'] = 'asdfghjkl'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH!


打開網頁測試:

wKioL1YD-XyR5ky4AAC03gCG57I348.jpg

2.給mysql的管理員用戶設置密碼:

MariaDB [(none)]> SET PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('zkchang');

MariaDB [(none)]> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('zkchang');

設置完密碼之後就可以登錄phpmyadmin

3.啓動ssl模塊,支持https協議。

修改httpd主配置文件httpd.conf:把:

#Include /etc/httpd24/extra/httpd-ssl.conf 取消註釋

a.爲httpd服務器生成證書:

由於在主機172.16.99.2上已經創建了CA的私有CA,在此就不在創建證書頒發機構的私有證書,只需在httpd服務器上創建私鑰和證書請求,然後把證書請求發給172.16.99.2,讓CA頒發機構給服務器頒發證書即可。

1.在服務器172.16.99.4上創建私鑰和證書請求,並把證書請求發送給CA頒發機構:

創建私鑰:]# (umask 077;openssl genrsa -out /etc/httpd24/ssl/httpd.key 2048)

創建證書請求:

]# openssl req -new -key /etc/httpd24/ssl/httpd.key  -out /etc/httpd24/ssl/httpdpma.csr -days 365

發給CA頒發機構:

]# scp /etc/httpd24/ssl/httpdpma.csr [email protected]:/tmp/

2.在CA頒發機構172.16.99.2上爲服務器頒發證書,並把證書發送給服務器:

簽發證書:

CA]# openssl ca -in /tmp/httpdpma.csr -out /etc/pki/CA/certs/httpdpma.crt -days 365

發給服務器:

                    # scp /etc/pki/CA/certs/httpdpma.crt [email protected]:/etc/httpd24/ssl


b.編輯/etc/httpd24/extra/httpd-ssl.conf 文件,修改一下內容:

            <VirtualHost _default_:443>            
            DocumentRoot "/web/vhosts/pma/"
            ServerName phpma.zkchang.com:443
            #ServerAdmin [email protected]
            ErrorLog "/var/log/ssl_v_error_log"
            TransferLog "/var/log/ssl_v_access_log"
                <Directory "/web/vhosts/pma/">
                    Options None
                    Allowoverride None
                    Require all denied
                    Require ip 172.16.0.0/16
                </Directory>
            SSLCertificateFile "/etc/httpd24/ssl/httpdpma.crt"
            SSLCertificateKeyFile "/etc/httpd24/ssl/httpd.key

c.在httpd配置文件中啓動相應的ssl模塊

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

LoadModule ssl_module modules/mod_ssl.so

d.將CA頒發機構的CA證書,導入到瀏覽器中進行測試:

wKioL1YD-uOT3p6HAAGHdjW_9FU853.jpg

 

2.解壓安裝WordPress

1.解壓安裝:

        ]# unzip wordpress-4.3.1-zh_CN.zip        
        ]# cp -a wordpress /web/vhosts/wordp/wordp
        ]#cd /web/vhosts/wordp/wordp/
        ]# mv wp-config-sample.php wp-config.php 
        ]# vim wp-config.php

    wKioL1YD-32w7zD9AACofQzsxYk088.jpg

2.創建數據庫,創建用戶和密碼並授權:

        MariaDB [(none)]> CREATE DATABASE wordpdb;        
        MariaDB [(none)]> CREATE USER 'wordpuser'@'127.0.0.1' IDENTIFIED BY 'wordpuser';
        MariaDB [(none)]> CREATE USER 'wordpuser'@'localhost' IDENTIFIED BY 'wordpuser';
        MariaDB [(none)]> GRANT ALL ON wordpdb.* TO 'wordpuser'@'127.0.0.1';
        MariaDB [(none)]> GRANT ALL ON wordpdb.* TO 'wordpuser'@'localhost';

3.網頁打開測試:

wKioL1YD-8_R9DOtAAFo116c-mw223.jpg

4.對一個動態網頁做壓力測試:

# ab -c 200 -n 1000 http://wordp.zkchang.com/wordp/index.php

Requests per second:    16.49 [#/sec] (mean)

Time per request:       12132.181 [ms] (mean)

Time per request:       60.661 [ms] (mean, across all concurrent requests)

Transfer rate:          5.35 [Kbytes/sec] received

Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0   59 168.4      0    1430

Processing:   271 10657 6602.9   9321   50520

Waiting:      271 10379 6469.7   9191   49844

Total:        275 10716 6585.6   9404   50520


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