使用源代碼包實現LAMP構架模型

    在前一篇博文中使用rpm包實現了LAMP構架模型,在這篇博文中將使用源代碼編譯的形式實現這個經典的LAMP web構建。

    php同httpd結合有3種方式,這裏用到2種:1,做爲httpd的模塊,被加載使用。2.php以獨立守護進程形式存在,同httpd之間使用fastcgi結合在一起。下文通過2個使用場景展現這2中結合方式。
   一定要注意編譯的先後次序,php一定要放在最後進行編譯。

實驗環境:

主機
IP地址
角色
Test01.lijun.com
192.168.100.1/24

承載LAMP構建,在不同的場景中分別實現如下的虛擬主機:

1)提供phpmyadmin web形式管理數據庫。

2)提供Discuz論題。

Server.lijun.com
192.168.100.100/24
測試主機,對web站點進行測試

1.編譯安裝httpd
    1.1)解決依賴關係
       httpd-2.4.x 需要的apr和apr-util均在1.4.0之上,但是centos 6.6 自帶的apr和apr-util 均爲1.3.9,
因此需要事先對其進行升級。

[lijun@Test01 source]$ rpm -qa | grep apr
apr-util-1.3.9-3.el6_0.1.x86_64
apr-1.3.9-5.el6_2.x86_64
[lijun@Test01 source]$

   (1):編譯安裝apr和apr-util:

[lijun@Test01 source]$ tar -xf apr-1.5.0.tar.bz2                           
[lijun@Test01 source]$ cd apr-1.5.0                                        
[lijun@Test01 apr-1.5.0]$ ./configure --prefix=/usr/local/apr && make
[lijun@Test01 apr-1.5.0]$sudo make install
[lijun@Test01 apr-1.5.0]$ ls /usr/local/apr
bin  build-1  include  lib
[lijun@Test01 apr-1.5.0]$

   (2):編譯安裝apr-util:

[lijun@Test01 source]$ tar -xf apr-util-1.5.3.tar.bz2
[lijun@Test01 source]$ cd apr-util-1.5.3
[lijun@Test01 apr-util-1.5.3]$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make
[lijun@Test01 apr-util-1.5.3]$ sudo make install
[lijun@Test01 apr-util-1.5.3]$ ls /usr/local
apr  apr-util  bin  etc  games  include  lib  lib64  libexec  sbin  share  src
[lijun@Test01 apr-util-1.5.3]$

   (3):使用系統光盤安裝pcre-devel:

[lijun@Test01 source]$ sudo mount -r /dev/sr0 /media/
[lijun@Test01 source]$ sudo rpm -ivh /media/Packages/pcre-devel-7.8-6.el6.x86_64.rpm
warning: /media/Packages/pcre-devel-7.8-6.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:pcre-devel             ########################################### [100%]
[lijun@Test01 source]$

   
   1.2)編譯安裝httpd-2.4.10.tar.bz2

[lijun@Test01 source]$ tar -xf httpd-2.4.10.tar.bz2
[lijun@Test01 source]$ cd httpd-2.4.10
[lijun@Test01 httpd-2.4.10]$ ./configure --prefix=/usr/local/apache2410 \
--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=prefork
[lijun@Test01 source]$ make
[lijun@Test01 source]$ sudo make install
[lijun@Test01 httpd-2.4.10]$ ls /usr/local/apache2410/
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules
[lijun@Test01 httpd-2.4.10]$

   
   1.3 )修改PATH路徑,導出頭文件,添加man手冊

[lijun@Test01 httpd-2.4.10]$ sudo vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache2410/bin:$PATH
:wq
[lijun@Test01 httpd-2.4.10]$ sudo ln -sv /usr/local/apache2410/include /usr/include/http
"/usr/include/http" -> "/usr/local/apache2410/include"
[lijun@Test01 httpd-2.4.10]$ sudo vim /etc/man.config
MANPATH /usr/local/apache2410/man
:wq

2 安裝mariadb 二進制程序包

[lijun@Test01 source]$ sudo tar -xf mariadb-5.5.43-linux-x86_64.tar.gz -C /usr/local/
[lijun@Test01 source]$ ls /usr/local
apache2410  apr-util  etc    include  lib64    mariadb-5.5.43-linux-x86_64  share
apr         bin       games  lib      libexec  sbin                         src
[lijun@Test01 source]$ sudo ln -s /usr/local/mariadb-5.5.43-linux-x86_64/  /usr/local/mysql 
[lijun@Test01 source]$ cd /usr/local/mysql
[lijun@Test01 mysql]$sudo groupadd -r mysql
[lijun@Test01 mysql]$sudo useradd -g mysql -r mysql
[lijun@Test01 mysql]$sudo chown -R root:mysql mariadb-5.5.43-linux-x86_64
[lijun@Test01 mysql]$sudo chown -R mysql:mysql mariadb-5.5.43-linux-x86_64/data/
[lijun@Test01 mysql]$sudo mkdir /etc/mysql/
[lijun@Test01 mysql]$sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/mysql/my.cnf
[lijun@Test01 mysql]$ sudo /usr/local/mysqlscripts/mysql_install_db --user=mysql --defaults-file=/etc/mysql/my.cnf
[lijun@Test01 mysql]$sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[lijun@Test01 mysql]$sudo chmod +x /etc/init.d/mysqld
[lijun@Test01 mysql]$ sudo touch /etc/profile.d/mysql.sh
[lijun@Test01 mysql]$ sudo vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
:wq
[lijun@Test01 mysql]$ sudo ln -s /usr/local/mysql/include /usr/include/mysql
[lijun@Test01 mysql]$ sudo vim /etc/man.config
MANPATH /usr/local/mysql/man
:wq


場景一:設定虛擬主機,提供phpamdin的登錄(此場景下要求php編譯爲httpd的模塊使用)
  

  3.編譯安裝php
   3.1)安裝依賴的組件:libxml2-devel,  bzip2-devel

[lijun@Test01 source]$sudo yum -y install bzip2-devel  libxml2-devel

   3.2)編譯安裝:

[root@Test01 lamp]# tar -xf php-5.4.40.tar.bz2 
[root@Test01 lamp]# cd php-5.4.40
[root@Test01 php-5.4.40]# ./configure --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-apxs2=/usr/local/apache2410/bin/apxs --with-freetype-dir \
--with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr \
--enable-xml --enable-sockets --with-bz2 \
--with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/
[root@Test01 php-5.4.40]# make && make install

    3.3)添加配置文件

[root@Test01 php-5.4.40]# cp php.ini-production  /etc/php.ini

    
    4.配置httpd支持php


#vim /usr/local/apache2410/conf/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.做php同httpd的結合測試:

[root@Test01 conf]# touch /usr/local/apache2410/htdocs/index.php
[root@Test01 conf]# vim /usr/local/apache2410/htdocs/index.php
  1 <?php
  2 phpinfo();
  3 ?>
[root@Test01 conf]#

 
wKioL1VGFRKj4XH5AAIwyyTY_J8946.jpg
    6.做php同mariadb連通性測試

[root@Test01 conf]# service mysqld start
Starting MySQL                                             [  OK  ]
[root@Test01 conf]# vim /usr/local/apache2410/htdocs/index.php
<?php
      $link = mysql_connect('127.0.0.1','root','');
      if ($link)
      echo "Success...";
      else
          echo "Failure...";
      mysql_close();
?>
[root@Test01 conf]# apachectl restart

wKioL1VGFWvBG6v3AACOnNSzndE185.jpg
     7 提供phpmyadmin文件。

[root@Test01 conf]#rm -rf /usr/local/apache2410/htdocs/index.php 
[root@Test01 lamp]# tar -xf phpMyAdmin-3.2.5-all-languages.tar.gz 
[root@Test01 lamp]# cp -a phpMyAdmin-3.2.5-all-languages/* /usr/local/apache2410/htdocs/
[root@Test01 lamp]# apachectl restart

wKiom1VGFJXB6DcRAAHgoX_qvx8466.jpg



場景二。設定虛擬主機,安裝discuz論壇(要求php以fpm形式同httpd結合)
     8.恢復httpd的“純淨”狀態

[root@Test01 lamp]# apachectl stop
[root@Test01 lamp]# rm -rf /usr/local/apache2410/conf/httpd.conf
[root@Test01 lamp]# cp  /usr/local/apache2410/conf/httpd.conf.bak /usr/local/apache2410/conf/httpd.conf
[root@Test01 htdocs]# apachectl restart

wKiom1VGF3nDl-2JAACKADV0tm8630.jpg  

  9.編譯php(以fpm形式同httpd結合)

[root@Test01 php-5.4.40]# ./configure --prefix=/usr/local/php5 \
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config  \
--with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib \
--with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm  \
--with-bz2 --with-config-file-path=/etc/php/php.ini \
--with-config-file-scan-dir=/etc/php.d/
[root@Test01 php-5.4.40]#make && make install

     10.提供配置文件

[root@Test01 php-5.4.40]# mkdir /etc/php
[root@Test01 php-5.4.40]# cp php.ini-production  /etc/php/php.ini

     11.爲php-fpm提供啓動腳本


[root@Test01 php-5.4.40]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@Test01 php-5.4.40]# chmod +x /etc/rc.d/init.d/php-fpm
[root@Test01 php-5.4.40]# chkconfig --add php-fpm
[root@Test01 php-5.4.40]# chkconfig php-fpm on
[root@Test01 php-5.4.40]#

     12.爲php-fpm提供配置文件:

[root@Test01 php-5.4.40]# cp /usr/local/php5/etc/php-fpm.conf.default  /usr/local/php5/etc/php-fpm.conf

     13.編輯php-fpm的配置文件:
[root@Test01 php-5.4.40]#vim /usr/local/php5/etc/php-fpm.conf
pid = /usr/local/php5/var/run/php-fpm.pid  --->明確指定pid文件
pm.INDEX = VALUE                           --->根據自己需要修改pm開頭的參數行
    
     14.啓動php-fpm並作測試

[root@Test01 php-5.4.40]# service php-fpm start
[root@Test01 php-5.4.40]# netstat -tlpn | grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      27740/php-fpm       
[root@Test01 php-5.4.40]#

     15.配置httpd使其支持fpm形式的php

[root@Test01 php-5.4.40]# vim  /usr/local/apache2410/conf/httpd.conf
#啓用下面2項
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Include conf/extra/httpd-vhosts.conf
#添加下面2項
 AddType application/x-httpd-php     .php
 AddType application/x-httpd-php-source   .phps
#修改下面項:
DirectoryIndex index.php index.html
#註釋中心主機
#DocumentRoot "/usr/local/apache2410/htdocs"

     16.配置虛擬主機中支持使用fcgi

[root@Test01 php-5.4.40]#vim /usr/local/apache2410/conf/extra/httpd-vhosts.conf
#註釋該文件中所有東東,添加下列內容
<VirtualHost 192.168.100.1:80>
     DocumentRoot "/usr/local/apache2410/docs/mydiscuz.com"
     ServerName www.mydiscuz.com
     ErrorLog "logs/mydiscuz.com-error_log"
     CustomLog "logs/mydiscuz.com-access_log" common
     ProxyRequests Off
     ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2410/docs/mydiscuz.com/$1
     <Directory "/usr/local/apache2410/docs/mydiscuz.com">
             Options none
             AllowOverride none
             Require all granted
     </Directory>
</VirtualHost>

     17.添加虛擬主機需要的文檔

[root@Test01 conf]# cd /usr/local/apache2410/htdocs/
[root@Test01 htdocs]# mkdir mydiscuz.com
[root@Test01 lamp]# unzip Discuz_7.2_FULL_SC_GBK.zip
[root@Test01 lamp]# \cp -a upload/* /usr/local/apache2410/htdocs/mydiscuz.com/

     18 創建discuz論題使用庫和用戶

MariaDB [(none)]> create database discuz;
Query OK, 1 row affected (0.07 sec)
MariaDB [(none)]> create user 'lijun'@'localhost' identified by 'redhat';
Query OK, 0 rows affected (0.61 sec)
MariaDB [(none)]> grant all on discuz.* to 'lijun'@'localhost';
Query OK, 0 rows affected (0.08 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.06 sec)

     19 安裝論壇:
修改測試主機的host文件:C:\Windows\System32\drivers\etc\hosts

#添加下列行

192.168.100.1   www.mydiscuz.com

然後瀏覽器像下面這樣輸入URL路徑:
wKiom1VGGGXCmVe-AAO1EWiDFnA713.jpg

wKiom1VGGKKTKf_0AAMHm_9cfGA536.jpg



[root@Test01 mydiscuz.com]# chmod 777 ./config.inc.php  ./p_w_uploads/ ./forumdata/ ./forumdata/cache/  ./forumdata/templates/ ./forumdata/threadcaches/ ./forumdata/logs/ ./uc_client/data/cache/

然後一路下一項下一項:

wKioL1VGGraxC-PYAAK85n5hdTk062.jpg


wKiom1VGGeDhJJbtAAL67dZ0ub0474.jpg



ps:這篇博文寫的很不滿意,日後待改吧

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