Установка сервера · 8 min read · Nov 11, 2025

Идеальный сервер - CentOS 6.1 x86_64 с nginx [ISPConfig 3] - Страница 5

15 Установите Nginx, PHP5 (PHP-FPM) и Fcgiwrap

Nginx доступен как пакет для CentOS 6.1 (из EPEL), который мы можем установить следующим образом:

yum install nginx

Если Apache2 уже установлен в системе, остановите его сейчас…

/etc/init.d/httpd stop

… и удалите системные ссылки на запуск Apache:

chkconfig --del httpd

Затем создаем системные ссылки на запуск для nginx и запускаем его:

chkconfig –levels 235 nginx on
/etc/init.d/nginx start

(Если оба Apache2 и nginx установлены, установщик ISPConfig 3 спросит, какой из них вы хотите использовать - в этом случае ответьте nginx. Если установлен только один из них, ISPConfig автоматически выполнит необходимую конфигурацию.)

Мы можем заставить PHP5 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) - это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов). Мы можем установить php-fpm вместе с php-cli и некоторыми модулями PHP5, такими как php-mysql, которые вам нужны, если вы хотите использовать MySQL из ваших PHP-скриптов следующим образом:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

Далее откроем /etc/php.ini…

vi /etc/php.ini

… и изменим отчет об ошибках (чтобы уведомления больше не отображались) и раскомментируем cgi.fix_pathinfo=1:

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] |

Также установите cgi.fix_pathinfo=0:

vi /etc/php.ini

| [...] ; cgi.fix_pathinfo предоставляет *реальную* поддержку PATH_INFO/PATH_TRANSLATED для CGI. PHP's ; предыдущее поведение заключалось в том, чтобы устанавливать PATH_TRANSLATED в SCRIPT_FILENAME и не понимать, ; что такое PATH_INFO. Для получения дополнительной информации о PATH_INFO смотрите спецификации cgi. Установка ; этого в 1 заставит PHP CGI исправить свои пути в соответствии со спецификацией. Установка ; нуля заставляет PHP вести себя как раньше. По умолчанию 1. Вы должны исправить свои скрипты ; чтобы использовать SCRIPT_FILENAME, а не PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

(Пожалуйста, прочитайте http://wiki.nginx.org/Pitfalls, чтобы узнать, почему вы должны это сделать.)

В дополнение к этому, чтобы избежать ошибок, таких как

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /usr/share/nginx/html/info.php on line 2

… в /var/log/php-fpm/www-error.log, когда вы вызываете PHP-скрипт в вашем браузере, вы должны установить date.timezone в /etc/php.ini:

| [...] [Date] ; Определяет часовой пояс по умолчанию, используемый функциями даты ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |

Вы можете узнать правильный часовой пояс для вашей системы, выполнив:

cat /etc/sysconfig/clock

[root@server1 tmp]# cat /etc/sysconfig/clock
ZONE=”Europe/Berlin”
[root@server1 tmp]#

Далее создайте системные ссылки на запуск для php-fpm и запустите его:

chkconfig –levels 235 php-fpm on
/etc/init.d/php-fpm start

PHP-FPM - это демон-процесс (с init-скриптом /etc/init.d/php-fpm), который запускает сервер FastCGI на порту 9000.

Чтобы получить поддержку CGI в nginx, мы устанавливаем Fcgiwrap.

Fcgiwrap - это обертка CGI, которая также должна работать для сложных CGI-скриптов и может использоваться для сред совместного хостинга, поскольку позволяет каждому vhost использовать свою собственную директорию cgi-bin.

Поскольку для CentOS 6.1 нет пакета fcgiwrap, мы должны собрать его сами. Сначала установим некоторые зависимости:

yum install fcgi-devel

Теперь мы можем собрать fcgiwrap следующим образом:

cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install

Это устанавливает fcgiwrap в /usr/local/sbin/fcgiwrap.

Далее мы устанавливаем пакет spawn-fcgi, который позволяет нам запускать fcgiwrap как демон:

yum install spawn-fcgi

Откройте /etc/sysconfig/spawn-fcgi…

vi /etc/sysconfig/spawn-fcgi

… и измените файл следующим образом:

| # Вы должны установить некоторые рабочие параметры перед тем, как служба "spawn-fcgi" будет работать. # Если SOCKET указывает на файл, то этот файл очищается скриптом инициализации. # # См. spawn-fcgi(1) для всех возможных параметров. # # Пример : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |

Теперь добавьте пользователя nginx в группу apache:

usermod -a -G apache nginx

Создайте системные ссылки на запуск для spawn-fcgi…

chkconfig --levels 235 spawn-fcgi on

… и запустите его следующим образом:

/etc/init.d/spawn-fcgi start

Теперь вы должны найти сокет fcgiwrap в /var/run/fcgiwrap.socket, принадлежащий пользователю и группе apache (некоторые скрипты, например Mailman, ожидают, что они будут запущены пользователем/группой apache, поэтому мы не запускаем spawn-fcgi как пользователя/группы nginx, а вместо этого добавляем nginx в группу apache).

16 Установите phpMyAdmin

Далее мы устанавливаем phpMyAdmin:

yum install phpmyadmin

Далее мы изменяем аутентификацию в phpMyAdmin с cookie на http:

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* Тип аутентификации */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Теперь вы можете найти phpMyAdmin в директории /usr/share/phpmyadmin/.

После установки ISPConfig 3 вы можете получить доступ к phpMyAdmin следующим образом:

Приложение ISPConfig vhost на порту 8081 для nginx поставляется с конфигурацией phpMyAdmin, поэтому вы можете использовать http://server1.example.com:8081/phpmyadmin или http://server1.example.com:8081/phpMyAdmin для доступа к phpMyAdmin.

Если вы хотите использовать псевдоним /phpmyadmin или /phpMyAdmin, который вы можете использовать с ваших веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (т.е. псевдонимов, которые могут быть определены для всех vhosts). Поэтому вам нужно определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к phpMyAdmin.

Для этого вставьте следующее в поле Директивы nginx на вкладке Опции веб-сайта в ISPConfig:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Если вы используете http s вместо http для вашего vhost, вы должны добавить строку fastcgi_param HTTPS on; в вашу конфигурацию phpMyAdmin следующим образом:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- добавьте эту строку fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Если вы используете как http, так и https для вашего vhost, вам нужно добавить следующий раздел в секцию http {} в /etc/nginx/nginx.conf (перед любыми строками include), который определяет, использует ли посетитель http или https и устанавливает переменную $fastcgi_https (которую мы будем использовать в нашей конфигурации phpMyAdmin) соответственно:

vi /etc/nginx/nginx.conf

| [...] http { [...] ## Обнаружить, когда используется HTTPS map $scheme $fastcgi_https { default off; https on; } [...] } [...] |

Не забудьте перезагрузить nginx после этого:

/etc/init.d/nginx reload 

Затем снова перейдите к полю Директивы nginx и вместо fastcgi_param HTTPS on; добавьте строку fastcgi_param HTTPS $fastcgi_https; так, чтобы вы могли использовать phpMyAdmin для запросов как http, так и https:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- добавьте эту строку fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

17 Установите Mailman

С версии 3.0.4 ISPConfig также позволяет вам управлять (создавать/изменять/удалять) списками рассылки Mailman. Если вы хотите воспользоваться этой функцией, установите Mailman следующим образом:

yum install mailman

Прежде чем мы сможем запустить Mailman, необходимо создать первый список рассылки с именем mailman:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Введите email человека, управляющего списком: <– адрес электронной почты администратора, например [email protected]
Первоначальный пароль mailman: <– пароль администратора для списка mailman
Чтобы завершить создание вашего списка рассылки, вы должны отредактировать ваш файл /etc/aliases (или эквивалентный), добавив следующие строки, и, возможно, запустив программу newaliases:

список рассылки mailman

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Нажмите enter, чтобы уведомить владельца mailman… <– ENTER

[root@server1 tmp]#

Откройте /etc/aliases после этого…

vi /etc/aliases

… и добавьте следующие строки:

| [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" |

Запустите

newaliases

после этого и перезапустите Postfix:

/etc/init.d/postfix restart

Создайте системные ссылки на запуск для Mailman и запустите его:

chkconfig –levels 235 mailman on
/etc/init.d/mailman start

Теперь нам нужно создать эту символическую ссылку, чтобы Mailman работал с ISPConfig:

cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman

Если вы хотите использовать Mailman с ваших веб-сайтов, созданных через ISPConfig, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (т.е. псевдонимов, которые могут быть определены для всех vhosts). Поэтому вам нужно определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к Mailman.

Для этого вставьте следующее в поле Директивы nginx на вкладке Опции веб-сайта в ISPConfig:

| location /cgi-bin/mailman { alias /usr/lib/mailman/cgi-bin; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/lib/mailman/icons; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |

Это определяет псевдоним /cgi-bin/mailman/ для вашего vhost, что означает, что вы можете получить доступ к интерфейсу администратора Mailman для списка по адресу http:///cgi-bin/mailman/admin/, а веб-страницу для пользователей списка рассылки можно найти по адресу http:///cgi-bin/mailman/listinfo/.

По адресу http:///pipermail вы можете найти архивы списков рассылки.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.