Site icon Mr. 沙先生

Ubuntu 16.04 安裝 Apache2.4 + mpm_worker + fastcgi + php7.0

之前寫過一篇 Ubuntu 16.04 在 Apache2.4 跑 PHP7.0 是用 mod_php 跑來的,而 mod_php 是使用 mpm_prefork 來跑,這篇主要要說的是 mpm_worker,因為 mpm_worker 比起 mpm_prefork 用了多進程、線程的混合模式,預先 fork 了一些子進程去製造線程,mpm_worker 對於大量的存取會比 prefork 有更多可用的線程

 

*** 如果你會用到 chunked mode 會遇到 HTTP 411,建議使用 mod_fcgid + mpm_worker + php

 

直接進入安裝的方式

 

Ubuntu 16.04 安裝 Apache2.4 + mpm_worker + fastcgi + php7.0

Step 1. 安裝 apache2 和 php7.0

$ sudo add-apt-repository ppa:ondrej/php -y
$ sudo apt-get update
$ sudo apt-get install apache2 libapache2-mod-fastcgi php7.0 php7.0-fpm php7.1-mysql

 

Step 2. 停用 mod_php 和 mpm_prefork

$ sudo a2dismod php7.0 mpm_prefork

 

Step 3. 啟動 action、mpm_worker、rewrite

$ sudo a2enmod mpm_worker actions rewrite

 

 

Step 4. 建立 fcgi socket

$ sudo touch /usr/lib/cgi-bin/php7.fcgi
$ sudo chown www-data:www-data /usr/lib/cgi-bin/php7.fcgi

 

Step 5. 修改 fastcgi 支援 php-fpm socket

$ sudo tee /etc/apache2/mods-available/fastcgi.conf <<EOF
<IfModule mod_fastcgi.c>
  AddHandler php7.fcgi .php
  Action php7.fcgi /php7.fcgi
  Alias /php7.fcgi /usr/lib/cgi-bin/php7.0.fcgi
  FastCgiExternalServer /usr/lib/cgi-bin/php7.0.fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization -idle-timeout 360
  <Directory /usr/lib/cgi-bin>
    Require all granted
  </Directory>
</IfModule>
EOF

 

Step 6. 建立 index.php 印出 phpinfo 確認。

$ sudo tee /var/www/html/index.php <<EOF
<?php
  phpinfo();
?>
EOF

 

Step 7. 啟動服務

$ sudo systemctl enable {apache2,php7.0-fpm}

 

驗證一下 phpinfo 的資訊,搞定。

 

 

 

 

 

Exit mobile version