生產環境LAMP搭建 - 基於 fastcgi
阿新 • • 發佈:2019-04-13
至少 create openss 連接方式 lin sap min devel mysql
生產環境LAMP搭建 - 基於 fastcgi
由於在module模式,php只是已http的模塊形式存在,無形中加重了http的服務負載,通常在企業架構中,使用fastcgi的模式,將所有的服務都設置為不同的獨立服務,獨立進程的形式存在,並部署在不同的設備上。是用的比較多的。
php 進程 默認使用9000端口
默認 php-fpm 只監聽127.0.0.1 的 9000 端口
配置php的連接方式,有靜態和動態兩種模式
pm = static|dynamic
static:固定數量的子進程;pm.max_children
dynamic:子進程數量以動態模式管理
最大連接進程數,生產中可以加大
pm.max_children = 500
服務開啟第時候開啟多少個進程
pm.start_servers = 50
最小空閑進程
pm.min_spare_servers = 5
最大空閑進程
pm.max_spare_servers = 35
假設來了100個人訪問,那麽服務器一開始會開啟50個進程,現在會再開啟50個,這時候走了10個,還剩90個,他就會關閉5個進程,因為最小空間被設置為5個,至少還要保留5 個空閑進程
每個進程的最大用戶請求數
pm.max_requests = 500
apache 需要在配置文件中,定義php的位置,否則不會把php的請求轉發到php服務上
DirectoryIndex index.php ProxyRequests Off # fcgi後跟php服務綁定的IP和端口 ,和請求要轉發的路徑 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
centos7 搭建 (同一臺設備)
#安裝環境 yum install httpd php-fpm php-mysql mariadb-server #配置 apache 轉發 php vim /etc/httpd/conf.d/fastcgi.conf DirectoryIndex index.php ProxyRequests Off ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1 #配置php 連接 mysql vim index.php <?php $dsn='mysql:host=localhost;dbname=mysql'; $username='root'; $passwd='centos'; $dbh=new PDO($dsn,$username,$passwd); var_dump($dbh); ?> systemctl restart httpd systemctl start mariadb
centos7 搭建 (每個服務獨立在不同的設備)
web 服務器 192.168.30.17
yum install httpd
vim /etc/httpd/conf.d/fastcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.30.27:9000/data/www/$1
註意:在HTTPD服務器上必須啟用proxy_fcgi_module模塊,充當PHP客戶端
httpd –M |grep fcgi
cat /etc/httpd/conf.modules.d/00-proxy.conf
systemctl start httpd
php 服務器 192.168.30.27
yum install php-fpm php-mysql
#修改綁定端口,讓他綁定所有IP
vim /etc/php.fpm.d/www.conf
listen = 9000
#修改允許IP訪問的選項
listen.allowed_clients
mkdir -pv /data/www/
vim /data/www/index.php
填充php連接數據庫語句
systemctl start php
mysql 服務器 192.168.30.37
yum install mariadb mariadb-server
systemctl start mariadb
#執行初始化腳本
mysql_ser_install
#創建php使用的賬戶
grant all on *.* to [email protected]'192.168.30.%' identified by 'phppassword';
flush privileges;
在LAMP的基礎上搭建 DiscuzX
# 解壓到php服務器上
unzip Discuz_X3.2_SC_UTF8.zip
cd upload
cp -r * /data/www/
setfacl -R -m u:apache:rwx /data/www/*
#修改http的默認路徑
vim /etc/http/conf/http.conf
DocumentRoot "/data/www/"
<Directory "/data/www">
Require all granted
</Directory>
#修改php服務器的設置 ,搭建discuzX的話,把apache 和 php 放在同一臺設備上 (待測試)
vim /etc/httpd/conf.d/fastcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www/$1
第一次老王執行的時候,發現網頁顯示錯誤,只能顯示文字,其他的東西顯示不出來,他認為是傳輸問題 ,php無法處理靜態頁面,就改了這句話
ProxyPassMatch ^/(.*\.*)$ fcgi://127.0.0.1:9000/data/www/$1
後來發現是默認網站路徑的問題,要修改默認網站的路徑
vim /etc/httpd/conf/http.conf
#這邊的路徑要改成新的路徑
DocumentRoot "/var/www/html/
自己的真實解決方案!!!如果配置多個虛擬主機的話,直接註釋到主配置文件中的
DocumentRoot "/var/www/html/!!!!!!
自己的真實解決方案!!!如果配置多個虛擬主機的話,直接註釋到主配置文件中的
DocumentRoot "/var/www/html/!!!!!!
自己的真實解決方案!!!如果配置多個虛擬主機的話,直接註釋到主配置文件中的
DocumentRoot "/var/www/html/!!!!!!
執行install/index.php 初始化
初始化完成後,回收acl權限
setfacl -R -b /data/www/*
實現虛擬主機,在同一臺設備上搭建wordpress 和 DiscuzX
#虛擬主機設置
<virtualhost *:80>
servername www.bbs.com
documentroot /data/www
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www/$1
<directory /data/www>
require all granted
</directory>
</virtualhost>
<virtualhost *:80>
servername www.blog.com
documentroot /data/www2
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/www2/$1
<directory /data/www2>
require all granted
</directory>
</virtualhost>
源碼編譯實現LAMP 並且基於Fastcgi模型
準備3臺設備:
apache : 192.168.30.7
php: 192.168.30.17
mysql / mariadb : 192.168.30.27
編譯順序:通常是 apache > mysql > php
準備安裝包
http
httpd-2.4.33.tar.bz2
apr-1.6.3.tar.gz
apr-util-1.6.1.tar.gz
mysql
mariadb-10.2.15-linux-x86_64.tar.gz
php
php-7.1.18.tar.bz2
blog
wordpress-4.9.4-zh_cn.tar.gz
#安裝編譯包組
yum groupinstall Development
#創建賬戶,用於未來apache和php使用
groupadd -r -g 80 apache
useradd -r -s /sbin/nologin -g 80 -u 80 apache
編譯apache
#安裝apache依賴包
yum install pcre-devel openssl-devel expat-devel
tar xvf httpd-2.4.33.tar.bz2
tar xvf apr-1.6.3.tar.gz
tar xvf apr-util-1.6.1.tar.gz
mv apr-1.6.3 httpd-2.4.33/srclib/apr
mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util
cd httpd-2.4.33
./configure --prefix=/app/httpd24 --enable-so \
--enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
make -j 4 && make install
echo PATH=/app/httpd24/bin:$PATH > /etc/profile.d/lamp.sh
. /etc/profile.d/lamp.sh
#設置服務使用apache賬戶密碼
vim /app/http.conf
#啟動服務
apachectl
二進制安裝mysql
tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local
cd /usr/local
ln -s mariadb-10.2.15-linux-x86_64/ mysql
useradd -r mysql -s /sbin/nologin
chown -R mysql.mysql mysql
mkdir /data/mysqldb -pv
chown mysql.mysql /data/mysql/
vim /etc/profile.d/lamp.sh
PATH=/usr/local/mysql/bin:/app/httpd24/bin:$PATH > /etc/profile.d/lamp.sh
. /etc/profile.d/lamp.sh
cd /usr/local/mysql/
./scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
cp support-files/my-huge.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
vim /etc/my.cnf
datadir=/data/mysqldb
innodb_file_per_table
log_bin
chkconfig --add mysqld
service mysqld start
create database wpdb;
grant all on wpdb.* to [email protected]'192.168.30.%' identified by 'centos';
flush privileges;
編譯php 7.1.7 基於 fastcgi 模式
php編譯後需要自己準備ini 配置文件
#安裝php依賴包
yum install libxml2-devel bzip2-devel libmcrypt-devel (epel)
tar xvf php-7.1.7.tar.bz2
cd php-7.1.7/
#設置編譯項
./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-openssl --with-pdo-mysql=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --disable-fileinfo
make -j 4 && make install
--enable-fpm \ 表示以 fastcgi模式來編譯安裝
vim /etc/profile.d/lamp.sh
PATH=/app/php/bin:/usr/local/mysql/bin:/app/httpd24/bin:$PATH > /etc/profile.d/lamp.sh
. /etc/profile.d/lamp.sh
#準備配置文件
cd /root/srcs/php-7.1.18/
cp php.ini-production /etc/php.ini
#準備啟動腳本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
#設置服務使用apache賬戶密碼
vim /app/etc/php-fpm.d/www.conf
service php-fpm start
編輯apache 配置 使其支持 php
vim /app/httpd24/conf/httpd.conf
取消下面兩行的註釋 激活fcgi模塊
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
addType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1
生產環境LAMP搭建 - 基於 fastcgi