lamp分佈式部署+discuz論壇

環境:

主機名 IP地址 部署服務
root@httpd 192.168.1.61 httpd網站服務
root@mysql 192.168.1.62 mysql數據庫
root@php 192.168.1.63 php動態頁面

一.搭建httpd服務(192.168.1.61)

參考博文:web服務1 web服務2
1.準備需要下載的源碼包並將源碼包複製到httpd服務器上
httpd提取碼0fid

[root@httpd ~]# cd /usr/src/
[root@httpd src]# ls //把源碼包放在了/usr/sre下
apr-1.5.2.tar.gz       httpd-2.4.25.tar.gz    pcre-8.39.tar.gz
apr-util-1.5.4.tar.gz  openssl-1.0.1u.tar.gz  zlib-1.2.8.tar.gz

2.編寫http依賴包安裝腳本

[root@httpd src]# cd
[root@httpd ~]# mkdir sh
[root@httpd ~]# cd sh/
[root@httpd sh]# vim yilai.sh  //編輯腳本
#!/bin/bash
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
#如果編譯安裝無法執行,可能是開發軟件工具沒有安裝,需要先安裝開發軟件

cd /usr/src
tar zxf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install

cd ..
tar zxf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install

cd ..
yum -y install zlib-*

tar zxf pcre-8.39.tar.gz
cd pcre-8.39
./configure --prefix=/usr/local/pcre && make && make install

cd ..
tar zxf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
./config -fPIC --prefix=/usr/local/openssl enable-shared && make && make install
[root@httpd sh]# bash yilai.sh  //執行腳本
//需要注意的是,http的依賴源碼包位置,和依賴包版本需要和腳本中對應。

3.編譯安裝httpd

[root@httpd ~]# cd /usr/src/
[root@httpd src]# tar zxf httpd-2.4.25.tar.gz 
[root@httpd src]# cd httpd-2.4.25/
[root@httpd httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi--enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires --enable-deflate && make && make install

相關參數解釋:
–enable-so:支持動態共享模塊(即打開 DSO 支持)
–enable-rewrite:支持 url 重寫
–enable-ssl:支持 ssl
–with-ssl=/usr/local/openssl:指定 ssl 安裝位置
–enable-cgi:啓用 cgi
–enable-cgid:MPM 使用的是 event 或 worker 要啓用 cgid
–enable-modules=most:明確指明要靜態編譯到 httpd 二進制文件的模塊,爲 空格分隔的模塊名列表、all 或者 most,all 表示包含所有模塊,most 表示包含大部分常用模 塊
–enable-mods-shared=most:明確指明要以 DSO 方式編譯的模塊,爲空格分隔 的模塊名列表、all 或者 most,all 表示包含所有模 塊,most 表示包含大部分模塊
–enable-mpms-shared=all:啓用 MPM 所有支持的模式,這樣 event、worker、prefork 就會以 模塊化的方式安裝,要用哪個就在 httpd.conf 裏配置就好了。
–with-mpm=event:指定啓用的 mpm 模式,默認使用 enevt 模式,在 apache 的早期版本 2.0 默認 prefork,2.2 版本是 worker,2.4 版本是 event.
–with-pcre=/usr/local/pcre:支持 pcre
–with-z=/usr/local/zlib:使用 zlib 壓縮庫
–with-apr=/usr/local/apr:指定 apr 的安裝路徑
–with-apr-util=/usr/local/apr-util:指定 apr-util 的安裝路徑
–enable-expires:激活或通過配置文件控制 HTTP 的“Expires:”和“Cache-Control:”頭內容,即 對網站圖片、js、css 等內容,提供客戶端瀏覽器緩存的設置。這個是 apache 調優的一個重 要選項之一。
–enable-deflate:提供對內容的壓縮傳輸編碼支持,一般是 html、js、css 等內容的站點。使 用此參數會打打提高傳輸速度,提升訪問者訪問的體驗。在生產環境中,這是 apache 調優 的一個重要選項之一。

4.優化鏈接

[root@httpd ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/

5.添加爲系統服務

[root@httpd ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@httpd ~]# vim /etc/init.d/httpd 
添加下面內容,注意前面有#號
# chkconfig: 35 85 15   
\\聲明服務啓動級別,開機啓動順序,關機關閉順序
# description: apache 2.4.25	
\\服務聲明,簡要信息

[root@httpd ~]# chkconfig --add httpd 
//添加httpd爲系統服務
[root@httpd ~]# chkconfig httpd on
//設置httpd開機自啓
[root@httpd ~]# systemctl start httpd
//開啓服務

6.查看httpd端口是否開啓

[root@httpd ~]# netstat -anput | grep httpd

二.搭建MySQL數據庫(192.168.1.62)

參考博文:mysql
需要的源碼包:提取碼ftq3
1.將源碼包複製到mysql服務器中

[root@mysql ~]# cd /usr/src/
[root@mysql src]# ls
cmake-2.8.6.tar.gz  mysql-5.6.36.tar.gz

2.安裝環境需要的軟件

[root@mysql ~]# yum -y install ncurses-devel gcc gcc-c++ 

3.添加mysql程序用戶組

[root@mysql ~]# groupadd mysql
[root@mysql ~]# useradd -M -s /sbin/nologin mysql -g mysql

4.mysql需要cmake編譯安裝,所以先安裝cmake包

[root@mysql ~]# cd /usr/src/
[root@mysql src]# tar zxf cmake-2.8.6.tar.gz 
[root@mysql src]# cd cmake-2.8.6/
[root@mysql cmake-2.8.6]# ./configure gmake && gmake install

5.編譯安裝mysql

[root@mysql ~]# cd /usr/src/
[root@mysql src]# tar zxf mysql-5.6.36.tar.gz 
[root@mysql src]# cd mysql-5.6.36/
[root@mysql mysql-5.6.36]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all
[root@mysql mysql-5.6.36]# make && make install

相關參數解釋

-DSYSCONFDIR=/etc 指定初始化參數文件目錄
-DDEFAULT_CHARSET=utf8 指定默認使用字符集 -DDEFAULT_COLLATION=utf8_general_ci 指定默認字符集校對規則 -DWITH_EXTRA_CHARSETS=all 指定額外支持其他字符集

6.賦權

[root@mysql ~]# chown -R mysql:mysql /usr/local/mysql/

7.centos7系統默認支持的是MariaDB數據庫,所以系統默認的/etc/my.cnf配置文件是MariaDB的配置文件,而MySQL默認樣本配置文件在,MySQL源碼包目錄中的support-files文件夾下my-default.cnf,再啓動之前替換MySQL提供的配置文件內容。

[root@mysql mysql-5.6.36]# rm -rf /etc/my.cnf
[root@mysql mysql-5.6.36]# cp support-files/my-default.cnf /etc/my.cnf
[root@mysql mysql-5.6.36]# yum -y install perl-Data-Dumper
//安裝perl模塊 

8.初始化數據庫

[root@mysql mysql-5.6.36]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

9.設置變量

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
. /etc/profile #立即生效
或者
[root@localhost ~]# ln -s /usr/local/mysql/bin/* /usr/local/bin/

10.開啓服務

[root@mysql mysql-5.6.36]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@mysql mysql-5.6.36]# chmod +x /etc/init.d/mysqld 
[root@mysql mysql-5.6.36]# /etc/init.d/mysqld start

11.優化路徑

[root@mysql bin]# ln -s /usr/local/mysql/bin/mysql /usr/local/bin
[root@mysql bin]# ln -s /usr/local/mysql/bin/mysqladmin /usr/local/bin

12.驗證mysql是否開啓

[root@mysql ~]# netstat -anput | grep mysqld

三.搭建php(192.168.1.63)

需要的源碼包 :提取碼4qw4

1.安裝前提軟件

[root@php ~]# yum -y install epel-release.noarch 
//可能有些包yum沒有,所以安裝epel擴展源
[root@php ~]# yum -y install gcc gcc-c++ libxml2-devel lzip2-devel libcurl-devel libmcrypt-devel openssl-devel bzip2-devel

2.複製libmcrpt和php包到php服務器中
安裝libmcrypt加密工具

[root@php ~]# tar zxf libmcrypt-2.5.7.tar.gz 
[root@php ~]# cd libmcrypt-2.5.7/
[root@php libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install

3.編譯安裝php

[root@php ~]# tar zxf php-5.6.27.tar.gz 
[root@php ~]# cd php-5.6.27/
[root@php php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts && make && make install

相關選項的解釋:
–prefix=/usr/local/php5.6//安裝位置
–with-mysql=mysqlnd //支持 mysql
–with-pdo-mysql=mysqlnd //支持 pdo 模塊
–with-mysqli=mysqlnd //支持 mysqli 模塊

注:上面的三選項的作用:數據庫與 php 不在一個服務器上,指定此種方式,安裝數據庫連接驅動

–with-openssl//支持 openssl 模塊–enable-fpm//支持 fpm 模式–enable-sockets//啓用 socket 支持–enable-sysvshm//啓用系統共享內存支持

–enable-mbstring//多字節字串、像我們的中文就是多字節字串–with-freetype-dir//支持 freetype、就要裝 freetype-devel、跟字體相關的、字體解析工具 --with-jpeg-dir

–with-png-dir

注:上面的二選項的作用:處理 jpeg、png 圖片的、php 可以動態生成 jpeg
圖片–with-zlib//是個壓縮庫、在互聯網傳輸時用來壓縮傳輸的

–with-libxml-dir=/usr//這個 libxml 是用來解析 xml 的、指定/usr 下 --enable-xml //支持 xml 的

–with-mhash//支持 mhash

–with-mcrypt=/usr/local/libmcrypt //libmcrypt-devel 這個程序包所指定的 --with-config-file-path=/etc //指定配置文件的存放路徑的 --with-config-file-scan-dir=/etc/php.d //配置文件掃描路徑

–with-bz2 //支持 BZip2

爲了支持 apache 的 worker 或 event 這兩個 MPM,編譯時使用了–enable-
maintainer-zts 選項

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

4.提供php配置文件

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

5.爲 php-fpm 提供腳本

[root@php php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d//php-fpm
[root@php php-5.6.27]# chmod +x /etc/init.d/php-fpm
[root@php php-5.6.27]# chkconfig --add php-fpm
//添加爲系統服務
[root@php php-5.6.27]# chkconfig php-fpm on

6.提供 php-fpm 配置文件並編輯

[root@php php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
[root@php php-5.6.27]# vim /usr/local/php5.6/etc/php-fpm.conf
修改如下
pid = run/php-fpm.pid
listen = 192.168.1.63:9000 //監聽地址及端口
pm.max_children = 50  //開機準備線程
pm.start_servers = 5   //開機準備進程
pm.min_spare_servers = 5 //空閒5
pm.max_spare_servers = 35 //最大35

[root@php php-5.6.27]# systemctl start php-fpm

7.驗證php是否開啓

[root@php php-5.6.27]# netstat -anput | grep php

四.測試Apache與php的靜/動分離

1.啓用Apache服務的代理轉發
配置 apache 通過 fastcgi 協議調用 到php
在 Apache2.4 以後已經專門有一個模塊針對 FastCGI 的實現,此模塊爲 mod_proxy_fcgi.so,
它其實是作爲 mod_proxy.so 模塊的擴充,因此,這兩個模塊都要加載

[root@httpd ~]# vim /usr/local/httpd/conf/httpd.conf 
//加載下面兩個模塊,找到把#去掉即可
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

Include conf/extra/httpd-vhosts.conf  //開啓虛擬主機

//定位 AddType;添加下面兩行:讓 apache 能識別 php 格式的頁面
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

//定位至 DirectoryIndex,添加index.php(支持 php 格式的主頁) 
DirectoryIndex index.php index.html 
[root@httpd ~]# systemctl restart httpd

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

[root@httpd ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf  //添加下面內容
<VirtualHost *:80>
 ServerAdmin [email protected]
 DocumentRoot "/var/www/benet"   //根目錄
 ServerName www.benet.com
 ServerAlias benet.com
 ErrorLog "logs/benet.com-error_log"
 CustomLog "logs/benet.com-access_log" common
 ProxyRequests Off     //關閉正向代理
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://192.168.1.63:9000/var/www/benet/$1 //填寫php主機地址
 #<LocationMatch "^(.*\.php(/.*)?)$">  
 # ProxyPass fcgi://192.168.1.63:9000/var/www/benet
 #</LocationMatch>
<Directory "/var/www/benet">
 Options FollowSymLinks
 AllowOverride None
 Require all granted
</Directory>
</VirtualHost>
[root@httpd ~]# systemctl restart httpd

其中:
ProxyRequests off #關閉正向代理

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

特別注意的是,紅色字體部分需要與中的 DocumentRoot 後的路一致 ProxyPassMatch。

只有滿足特定正則模式的內容纔會匹配並執行此規則,這裏的模式是,^/(..php(/.)?)$ 從網站(虛擬主機的根目錄開始,匹配任何以 .php 結尾,或者在 .php 之後緊跟一個 /再跟別的內容的路徑。

^ (caret) 和 $ (dollar)標誌要匹配的路徑的開始和結束

( )括號裏的內容可以用 $1 來表示,以方便後面引用它。 fcgi:// 192.168.163:9000 通過 mod_proxy_fcgi 來轉發的代理,使用 fastCGI 協議,轉到 PHP-FPM 監聽的端口。

/path/to/your/documentroot/

非常重要!必須與虛擬主機的路徑匹配,且必須是對應 php 文件在操作系統中的絕對路徑。否則會找不到文件。

$1可以從原始請求擴展成整個請求路徑的變量,這裏指代前面( ) 裏面匹配的那個路徑(uri)

充:Apache httpd 2.4 以前的版本中,要麼把 PHP 作爲 Apache 的模塊運行,要麼添加一個第三方模塊支持PHP-FPM 實現。

3.測試
登入mysql服務器創建測試用戶

[root@mysql ~]# mysql
mysql> grant all on *.* to testuser@'%' identified by '123456' ;

在 php 服務器上的/var/www/benet 目錄下創建.php 的測試頁:

[root@php ~]# mkdir -p /var/www/benet
[root@php ~]# vim /var/www/benet/index.php
<?php
phpinfo();
?>
[root@php ~]# vim /var/www/benet/test.php
<?php
$link=mysql_connect('192.168.1.62','testuser','123456');
if ($link)echo "connection success......";
mysql_close();
?>

訪問測試php
在這裏插入圖片描述測試訪問數據庫
在這裏插入圖片描述
看到上面兩個測試頁說明 apache、php、mysql 之間可以協同工作了

五.部署Discuz論壇

下載discuz源碼:提取碼mgl9
1.複製Discuz包到apache和php服務器的/var/www/benet目錄。
配置http服務器

[root@httpd ~]# mkdir -p /var/www/benet
[root@httpd benet]# unzip Discuz_X3.3_SC_UTF8.zip 
[root@httpd benet]# mv upload/ /var/www/benet/bbs
[root@httpd benet]# chmod -R 777 /var/www/benet/bbs

配置php服務器(和http配置幾乎一致)

[root@php benet]# unzip Discuz_X3.3_SC_UTF8.zip 
[root@php benet]# mv upload/ /var/www/benet/bbs
[root@php benet]# chmod -R 777 /var/www/benet/bbs

2.在php服務器修改配置文件,重啓服務

[root@php ~]# vim /etc/php.ini
找到下行並改爲:
short_open_tag = On
[root@php ~]# systemctl restart php-fpm

3.mysql服務器上創建bbs數據庫及用戶

[root@mysql ~]# mysql
mysql> create database bbsdb;
mysql> grant all on bbsdb.* to runbbs@'%' identified by 'pwd@123';

4.安裝discuz論壇
http://192.168.1.61/bbs/
在這裏插入圖片描述訪問discuz管理後臺
http://192.168.1.61/bbs/admin.php

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