LAMP分佈式部署

LAMP分佈式部署

LAMP分佈式部署是將數據,PHP(python,perl,這裏主要說PHP)apache分開部署在不同主機上的web架構。PHPfpm獨立守護進程的方式監聽另一臺apache服務器以fcgi模式發送來的請求的工作模式。

如下圖:

         wKioL1YzAnaDX-XzAAERPXSSvFQ843.bmp

 

一、環境準備

IP地址如下:

apache服務器      172.16.1.120  172.16.1.150(其中一個接受用戶請求,一個發送動態內容請求到php服務器)

php服務器               172.16.1.160

數據服務器              172.16.1.170

 

系統環境:

所有系統全部是最小化安裝的centos6.7

# cat/etc/redhat-release
CentOS release6.7 (Final)
 
# uname -rm
2.6.32-573.el6.x86_64x86_64
 
# setenforce 0
# serviceiptables stop

 

需要準備的軟件包

mariadb-5.5.36-linux-x86_64.tar.gz

Discuz_X3.2_SC_GBK.zip 

libiconv-1.9.2.tar.gz 

php-5.6.14.tar.gz

apr-1.5.2.tar.gz 

apr-util-1.5.4.tar.gz 

Discuz_X3.2_SC_GBK.zip 

httpd-2.4.16.tar.gz

 

 

二、安裝MariaDB數據庫服務器

注:如果是集中式安裝LAMP,應先安裝apachemysql。因爲php在安裝時需要指定apache和數據庫的路徑。

我們使用MariaDB 5.5.36通用二進制格式安裝。

# mkdir /tools  把安裝程序放到這個目錄下。

1、解壓軟件包:

#tar xzvf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/src/

# ln -sv/usr/src/mariadb-5.5.36-linux-x86_64/ /usr/local/mysql

            `/usr/local/mysql'-> `/usr/src/mariadb-5.5.36-linux-x86_64/'

            # cd/usr/local/mysql

2、創建mysql用戶和組:

# groupadd -r -g 306mysql

#useradd -r -g 306 -u 306 -s /sbin/nologin -M mysql

3、建立數據目錄並授權:

# mkdir /data/mysql/{data,logs} -pv

mkdir: created directory `/data'

mkdir: created directory `/data/mysql'

mkdir: created directory `/data/mysql/data'

mkdir: created directory `/data/mysql/logs'

# chown -R mysql.mysql /data/mysql/

# chown -R mysql.mysql /usr/local/mysql/

    4、建立配置文件目錄並創建配置文件:

            # mkdir /etc/mysql

            # cp /usr/local/mysql/support-files/my-large.cnf/etc/mysql/my.cnf       主配置文件

            # cp/usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld   啓動腳本

    5、修改配置主文件:

            vim /etc/mysql/my.cnf

            添加和修改如下內容:

            [mysqld]

port    = 3306

socket  = /tmp/mysql.sock

datadir  = /data/mysql/data

pid_file  = /data/mysql/mysql.pid

log-bin  = /data/mysql/logs/mysql-bin

log-error = /data/mysql/logs/mysql.err

    6、修改啓動腳本:

            vim  /etc/rc.d/init.d/mysqld

            修改如下參數:

basedir=/usr/local/mysql

datadir=/data/mysql/data

# chkconfig mysqld –add

# chkconfig mysqld on

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

    7、初始化數據庫:

          #/usr/local/mysql/scripts/mysql_install_db --user=mysql  --datadir=/data/mysql/data/--basedir=/usr/local/mysql/ --defaults-extra-file=/etc/mysql/my.cnf

           一般看到兩個OK就表示初始化成功了。

    8、啓動數據庫並設置數據密碼:

             # service mysqld start

Starting MySQL... SUCCESS!

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

# mysqladmin -u root password ABCabc123

# mysql -u root -pABCabc123

    9、到這裏數據庫就安裝完成了。

三、安裝PHP

172.16.1.160上安裝php服務器.版本選擇PHP5.6.14

# mkdir /tools;cd /tools            創建程序包下載路徑

1、安裝依賴環境:

# cd /etc/yum.repos.d/

# wget http://mirrors.aliyun.com/repo/epel-6.repo

yum install  gcc  gcc-c++ autoconf automake ncurses-devel  libxml2-devel  bison  make    pcre pcre-devel  zlib-devel  libtool-ldtd-devel  libtool flex vim  openssl openssl-devel  bzip2-devel  gmp-devel openldap-devel  libxslt*  libcurl libcurl-devel   libmcrypt libmcrypt-devel  -y

# tar xzvf libiconv-1.9.2.tar.gz -C /usr/src/;cd/usr/src/libiconv-1.9.2/

# ./configure --prefix=/usr/local/libiconv

# make && make install

2、開始編譯安裝PHP

         # tar xzvf php-5.6.14.tar.gz -C/usr/src/;cd /usr/src/php-5.6.14

         # ./configure --prefix=/usr/local/php--with-config-file-path=/etc/php/php.ini --with-config-file-scan-dir=/etc/php.d/--enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir--with-zlib --with-libxml-dir --enable-xml --with-mcrypt --with-bz2--with-openssl --with-curl --with-xsl  --with-iconv=/usr/local/libiconv--enable-sockets --enable-short-tags --enable-static --enable-gd-native-ttf--enable-ftp --enable-maintainer-zts --with-mysql=mysqlnd--with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm

         # make && make install

fastcgiphp-5.3.3 之後的版本自帶了fpm組件,

fpm組件能把PHP解釋器工作爲守護進程,並提供類似prefork模式的應用,它能夠接收來自前端httpd,http-proxy-fcgi反向代理用戶對動態內容請求至後端的fastcgi server

注意:把php編譯爲fpm工作模式時需要加一個重要的選項 --enable-fpm,而不再使用 -with-apxs2=/usr/local/apache/bin/apxs

3、爲php提供主配置文件

# mkdir /etc/php/etc/php.d

# cp/usr/src/php-5.6.14/php.ini-production /etc/php/php.ini

4、配置和修改php-fpm信息

      #cp /usr/src/php-5.6.14/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

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

# chkconfig php-fpm --add

# chkconfig php-fpm on

 

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

 

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

修改php-fpm配置文件,添加和修改如下信息

listen= 192.168.1.160:9000

pm.max_children= 50   ###靜態方式下開啓的php-fpm進程數量

pm.start_servers= 5   ###動態方式下的起始php-fpm進程數量

pm.min_spare_servers= 2   ###動態方式下的最小php-fpm進程數量

pm.max_spare_servers= 8   ###動態方式下的最大php-fpm進程數量

pid =/usr/local/php/var/run/php-fpm.pid    ###PID文件路徑

啓動php-fpm

#service php-fpm start

Startingphp-fpm  done

到這裏,PHP服務器安裝完成!

 

 

四、安裝Apache

         mkdir  /tools  創建包下載目錄

         cd  /tools

1、裝依賴環境:

# yum groupinstall "Development Tools" "Server PlatformDevelopment" -y

# yum install pcre-devel zlib-devel –y

2apr

# tar xzvf apr-1.5.2.tar.gz -C /usr/src/

# cd /usr/src/apr-1.5.2/

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

#  make&& make install

3apr-util

# tar xzvf apr-util-1.5.4.tar.gz -C /usr/src/

# cd /usr/src/apr-util-1.5.4/

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

#  make && makeinstall

 

4、安裝 apache

         cd  /tools

# tar xzvf httpd-2.4.16.tar.gz -C /usr/src/

# cd /usr/src/httpd-2.4.16/

# ./configure --prefix=/usr/local/apache  --with-apr=/usr/local/apr/--with-apr-util=/usr/local/apr-util/ --enable-so --enable-ssl --enable-cgi--enable-rewrite --with-zlib --with-pcre --enable-deflate --enable-expires--enable-headers --enable-modules=most --enable-mpms-shared=all--with-mpm=event

# make && make install

 

編譯參數說明:

--prefix   ###安裝路徑

--sysconfdir   ###指定配置文件路徑

--with-apr   ###指定apr安裝路徑

--with-apr-util   ###指定par-util安裝路徑

--enable-so   ##DSO兼容,DSO=Dynamic Shared Object,動態共享對象,可實現模塊裝載

--enable-ssl   ###支持SSL/TLS,可以實現https訪問

--enable-cgi   ###支持CGI腳本

--enable-rewrite   ###加入mod_rewrite模塊,支持URL重寫

--with-zilb   ###打開zlib庫的支持

--with-pcre   ###支持perl的正則表達式

--enable-deflate   ###支持網頁壓縮

--enable-expires   ###支持HTTP控制,對網站圖片、jscss等內容,提供在客戶端遊覽器緩存

--enable-headers    ###允許對HTTP請求頭的控制

--enable-modules=most   ###支持大多數模塊

--enable-mpms-shared=all   支持動態加載的MPM模塊

--with-mpm=event   #設置默認啓用的MPM模式

 

 

關於MPM模塊的構建:

1)構建MPM爲靜態模塊

在全部平臺中,MPM都可以構建爲靜態模塊。在構建時選擇一種MPM,鏈接到服務器中。如果要改變MPM,必須重新構建。爲了使用指定的MPM,請在執行 configure腳本時,使用參數 --with-mpm=NAMENAME是指定的MPM名稱。編譯完成後,可以使用 ./httpd -l 來確定選擇的MPM。此命令會列出編譯到服務器程序中的所有模塊,包括 MPM

 

2)構建 MPM 爲動態模塊

Unix或類似平臺中,MPM可以構建爲動態模塊,與其它動態模塊一樣在運行時加載。構建 MPM 爲動態模塊允許通過修改LoadModule指令內容來改變MPM,而不用重新構建服務器程序。在執行configure腳本時,使用--enable-mpms-shared選項即可啓用此特性。當給出的參數爲all時,所有此平臺支持的MPM模塊都會被安裝。還可以在參數中給出模塊列表。默認MPM,可以自動選擇或者在執行configure腳本時通過--with-mpm選項來指定,然後出現在生成的服務器配置文件中。編輯LoadModule指令內容可以選擇不同的MPM

 

5apache用戶和組

# groupadd  -r  apache

# useradd -r -gapache -s /sbin/nologin  -M apache

 

6Apache配置文件

# cd/usr/local/apache/conf/

# cp httpd.confhttpd.conf.ori

 

vim  /usrl/local/apache/conf/httpd.conf

1)找到如下模塊並打開

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

wKiom1YzAwfBXI3nAACoHyLavqA472.jpg

2)如下內容

          AddTypeapplication/x-httpd-php .php .phtml

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

wKioL1YzA16iBxK1AAClCektGW4835.jpg 

3)修改監聽地址

Listen 192.168.1.120:80

4)註銷DocumentRoot

#DocumentRoot "/usr/local/apache/htdocs"

#<Directory "/usr/local/apache/htdocs">

因爲我們要使用虛擬主機。

5)添加虛擬主機

                   在文件末尾添加虛擬主機如下:

<VirtualHost *:80>

ServerAdmin [email protected]

DocumentRoot "/data/www/yy"

ServerName www.yy.com

ServerAlias yy.com

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.1.160:9000/data/www/yy/$1

ErrorLog  "/usr/local/apache/logs/phpinfo-error_log"

CustomLog  "/usr/local/apache/logs/phpinfo-access_log"common

<Directory "/data/www/yy">

AllowOverride None

Options None

Require all granted

</Directory>

wKiom1YzA0DxI1ErAAFS60eDK18504.jpg

6)添加PHP主頁索引index.php

<IfModule dir_module>

    DirectoryIndex  index.php index.html

</IfModule>

wKiom1YzA1WTcqTxAABGhERxtLI424.jpg

7)修改ServerName

         ServerName www.yy.com:80

8)戶和組改爲apache

         User apache

   Group apache

9)創建DocumentRoot目錄

         # mkdir /data/www/yy –pv 

這條命令要分別在php服務器和apache服務器上都執行。即兩邊都創建這個目錄

10)提供索引文件

         apache服務器上放置靜態內容

         # echo "www.yy.com" >/data/www/yy/index.html

         php服務器上放置動態內容

         # cat > /data/www/yy/index.php<<EOF

    > <?php

    > phpinfo();

    > ?>

    > EOF       

7Apache

         #/usr/local/apache/bin/apachectl -t

Syntax OK                   語法檢查OK

#/usr/local/apache/bin/apachectl start

 

# netstat -ntpul| grep 80  檢查端口有沒有啓動

 

修改測試客戶端的host地址,

C:\Windows\System32\drivers\etc\hosts下添加

192.168.1.120  www.yy.com  yy.com

使用瀏覽器訪問www.yy.com

wKiom1YzA2XiYRdEAANuN5v-_Rs081.jpg

到這裏LAMP的分佈式部署就完成了。

需要注意的問題:

動態資源需要放在PHP服務器上,當httpd服務器接收到客戶端瀏覽器請求的是動態頁面內容時,

會把請求發往指定的PHP服務器上處理,但是靜態頁面例如:htmljpg等還是會在httpd服務器上

處理,不然圖片等信息可能就無法顯示,因此在部署網站時,需要把網站的資源分別放在兩邊。

分別在HTTPD服務器和PHP服務器上各自創建同樣路徑的目錄,不然啓動httpd服務時會報錯。

 

五、實驗搭建discuz

# cd  /tools

# wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip

# mkdir /data/www/discuz

# unzip Discuz_X3.2_SC_GBK.zip -d /data/www/discuz/

以上操作要同時在PHPapache服務器上都做一次

修改apache服務器添加如下虛擬主機

<VirtualHost *:80>

ServerAdmin [email protected]

DocumentRoot "/data/www/discuz"

ServerName www.discuz.com

ServerAlias discuz.com

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$fcgi://192.168.1.160:9000/data/www/discuz/$1

ErrorLog "/usr/local/apache/logs/phpinfo-error_log"

CustomLog "/usr/local/apache/logs/phpinfo-access_log"common

<Directory "/data/www/discuz">

AllowOverride None

Options None

Require all granted

</Directory>

</VirtualHost>

 

回到MariaDB,創建數據庫並授權

#mysql -u root -p

Enterpassword: ===>輸入密碼,前面設置的 ABCabc123

MariaDB[(none)]> create database bbsdb;

QueryOK, 1 row affected (0.00 sec)

 

MariaDB[(none)]> GRANT ALL ON bbsdb.* TO'bbsAdmin'@'%' IDENTIFIED BY'magelinux';

QueryOK, 0 rows affected (0.02 sec)

 

MariaDB[(none)]> FLUSH PRIVILEGES;

QueryOK, 0 rows affected (0.00 sec)

 

MariaDB[(none)]> SHOW DATABASES;

+--------------------+

|Database           |

+--------------------+

|information_schema |

| bbsdb             |

|mysql             |

|performance_schema |

| test              |

+--------------------+

5 rowsin set (0.01 sec)

 

MariaDB[(none)]>

 

在客戶機添中如下host

192.168.1.120  discuz.com  www.discuz.com

在瀏覽器中訪問http://www.discuz.com/upload/install/

wKioL1YzBEjAujJqAAN3Kx3Iir8359.jpg

後面按提示來即可。由於最小化安裝沒有字符集支持,這裏看到的中文是亂碼。

後面如可提示沒有權限,可把/data/www/discuz目錄設爲777即可。

 

        

 

 

 

 

 

 

 

 

 

 

 

 

 


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