因爲在module模式,php只是已http的模塊形式存在,無形中加劇了http的服務負載,一般在企業架構中,使用fastcgi的模式,將全部的服務都設置爲不一樣的獨立服務,獨立進程的形式存在,並部署在不一樣的設備上。是用的比較多的。php
php 進程 默認使用9000端口html
默認 php-fpm 只監聽127.0.0.1 的 9000 端口mysql
配置php的鏈接方式,有靜態和動態兩種模式
pm = static|dynamiclinux
static:固定數量的子進程;pm.max_children
dynamic:子進程數量以動態模式管理web
最大鏈接進程數,生產中能夠加大
pm.max_children = 500sql
服務開啓第時候開啓多少個進程
pm.start_servers = 50數據庫
最小空閒進程
pm.min_spare_servers = 5apache
最大空閒進程
pm.max_spare_servers = 35vim
假設來了100我的訪問,那麼服務器一開始會開啓50個進程,如今會再開啓50個,這時候走了10個,還剩90個,他就會關閉5個進程,由於最小空間被設置爲5個,至少還要保留5 個空閒進程centos
每一個進程的最大用戶請求數
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
#安裝環境 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
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
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
yum install mariadb mariadb-server systemctl start mariadb #執行初始化腳本 mysql_ser_install #建立php使用的帳戶 grant all on *.* to phpuser@'192.168.30.%' identified by 'phppassword'; flush privileges;
# 解壓到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/*
#虛擬主機設置 <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>
準備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依賴包 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
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 wpuser@'192.168.30.%' identified by 'centos'; flush privileges;
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
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