tôi nghĩ rằng tôi như giếng thể gửi toàn bộ quá trình tôi đã để cấu hình fpm với hồ bơi, như @ChristianM đề cập, bởi vì tôi đã chưa tìm thấy một lời giải thích đầy đủ về cách để làm điều đó.
Phần đầu tiên của việc này là chủ yếu là một bản sao của một bài AskUbuntu: https://askubuntu.com/questions/378734/how-to-configure-apache-to-run-php-as-fastcgi-on-ubuntu-12-04-via-terminal/527227#comment905702_527227
Phần cuối cùng là làm thế nào để cấu hình bơi, và nhận được vhost để sử dụng các thiết lập có liên quan hồ bơi
Ở đây nó đi :
Cài đặt người lao động apache MPM (Giải thích về prefork/wroker và sự kiện tại http://www.vps.net/blog/2013/04/08/apache-mpms-prefork-worker-and-event/):
sudo apt-get install apache2-mpm-worker
Install fastcgi và php5-fpm:
sudo apt-get install libapache2-mod-fastcgi php5-fpm
Bây giờ cho phép mods bạn cần, và vô hiệu hóa những bạn không:
sudo a2dismod php5 mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker
Tạo file php5.fcgi và cho phép sử dụng các máy chủ web nó.
sudo touch /usr/lib/cgi-bin/php5.fcgi
sudo chown -R www-data:www-data /usr/lib/cgi-bin
Tạo một cấu hình toàn cầu cho php5-fpm
sudo nano /etc/apache2/conf-available/php5-fpm.conf
dán vào sau (chúng tôi sẽ sử dụng một ổ cắm thay vì địa chỉ IP)
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
Lưu ý: Đảm bảo tất cả configs thực hiện theo cú pháp mới 'Yêu cầu tất cả đã được cấp'/'Yêu cầu tất cả bị từ chối' ... Nếu không, bạn sẽ cảm thấy đau sau khi khởi động lại ...
Kích hoạt tính năng conf php5-fpm
sudo a2enconf php5-fpm
Khởi động lại apache và fpm
sudo service apache2 restart && sudo service php5-fpm restart
Thiết lập này về cơ bản sẽ tạo ra một cấu hình fastcgi toàn cầu cho php, trong đó sử dụng các tập tin/etc/php5/fpm/tệp php.ini.
Nếu bạn có nhiều vhosts, mà sẽ cần cấu hình php khác nhau, tiếp tục với ví dụ dưới đây
Thứ nhất, trong dir /etc/php5/fpm/pool.d, bạn sẽ tìm thấy www mặc định .conf tập tin. Sao chép này, đặt tên cho nó một cái gì đó có liên quan:
sudo cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/domain2.conf
Chỉnh sửa tập tin này, thay đổi tên hồ bơi:
[...]
[domain2]
[...]
Và thay đổi tên của ổ cắm lắng nghe một cái gì đó có liên quan:
[...]
listen = /var/run/php5-fpm-domain2.sock
[...]
Sau đó, sao chép tệp /usr/lib/cgi-bin/php5.fcgi, lại đặt tên cho nó là có liên quan:
cp /usr/lib/cgi-bin/php5.fcgi /usr/lib/cgi-bin/php5-domain2.fcgi
Bây giờ bạn đã sẵn sàng để thêm mô đun mod_fastcgi vào domain2 vhost. Nó gần giống như mô tả ở trên, nhưng chú ý đến những thay đổi cho 'Bí danh', 'FastCgiServer' và '-socket'
<VirtualHost *:80>
ServerName domain2.com
[...]
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /usr/lib/cgi-bin/php5-domain2.fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-domain2.fcgi -socket /var/run/php5-fpm-domain2.sock -pass-header Authorization -idle-timeout 3600
<Directory /usr/lib/cgi-bin>
Require all granted
</Directory>
</IfModule>
[...]
</VirtualHost>
Khởi động lại apache và fpm
sudo service apache2 restart && sudo service php5-fpm restart
Bây giờ để kiểm tra những thay đổi.
Trong file /etc/php5/fpm/pool.d/domain2.conf mới, hãy thêm một sự thay đổi giá trị php (Tôi đã chọn giá trị session.name):
[...]
php_admin_value[session.name] = 'DOMAIN2'
[...]
Bây giờ kiểm tra cấu hình trước khi khởi động lại fpm:
sudo php5-fpm -t
Nó sẽ cho bạn biết nếu cấu hình không thành công, nhưng quan trọng hơn sẽ cho bạn biết cấu hình của bạn có ổn không. Sau đó, bạn có thể đi trước và khởi động lại fpm:
sudo service php5-fpm restart
Và cuối cùng, nếu bạn muốn trở thành siêu chắc chắn giá trị php đã được thiết lập, tạo info.php trong trang web của bạn, và chỉ cần thêm:
<?php
phpinfo();
?>
Theo kinh nghiệm của tôi: bạn có thể xác định các cấu hình máy chủ ảo trên mỗi máy chủ (gọi là 'vhost.conf' trên máy chủ của chúng tôi) mặc dù chúng tôi có 1 php.ini cho toàn bộ máy chủ. – tvgemert