Установка Apache и PHP как suPHP на CentOS 6
Благодаря suPHP PHP-скрипты в Apache выполняются с правами владельца, а не с правами веб-сервера, что очень удобно, когда речь идет о нескольких пользователях. Проще говоря, suPHP позволяет избежать конфликта владельцев.
Уточним, что suPHP запускает PHP как CGI модуль. Разница заключается в том, что PHP-скрипты, вызываемые из сети, работают из-под пользователя, который является владельцем скрипта.
Главное преимущество suPHP 一 безопасность. Речь идет о том, что тот или иной PHP скрипт, не принадлежащий конкретному пользователю, исполнятся не будет. Та же участь ожидает файлы, имеющие права отличные от 644. Таким образом, если один сайт на вашем VPS подвергнется взлому, остальные веб-порталы не пострадают.
Что касается недостатков, то здесь suPHP приписывают слишком активное использование загрузки процессора. Помимо этого модуль “не совместим” с Opcode кэш (к примеру, XCache или APC). К слову, при проблемах с высокой загрузкой ЦП рекомендуется переход к FastCGI.
Для того, чтобы установить Apache + PHP как suPHP подключитесь к серверу по SSH и добавьте нового пользователя при помощи команды useradd:
useradd user1 |
Теперь подключите репозиторий RPM:
rpm -ivh http://rpm.centoshelp.org/el6/mod_suphp/mod_suphp-0.7.1-1.el6.cosh.x86_64.rpm |
Откройте файл /etc/suphp.conf в редакторе nano:
nano /etc/suphp.conf |
Исправьте значения в файле /etc/suphp.conf в соответствии с приведенным ниже:
[global] logfile=/var/log/httpd/suphp_log loglevel=info webserver_user=apache docroot=/ env_path=/bin:/usr/bin umask=0077 min_uid=500 min_gid=500
; Security options allow_file_group_writeable=true allow_file_others_writeable=false allow_directory_group_writeable=true allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT check_vhost_docroot=true
;Send minor error messages to browser errors_to_browser=true
[handlers] ;Handler for php-scripts x-httpd-php="php:/usr/bin/php-cgi"
;Handler for CGI-scripts x-suphp-cgi="execute:!self" |
Откройте файл /etc/httpd/conf.d/suphp.conf:
nano /etc/httpd/conf.d/suphp.conf |
Добавьте виртуальный хост:
- В поле DocumentRoot пропишите свой корневой каталог.
- В поле ServerName добавьте доменное имя без www.
- В поле suPHP_UserGroup замените пользователя на созданного ранее.
- В поле Directory поставьте свой корневой каталог:
<VirtualHost *:80> DocumentRoot /var/www/html ServerName mariavps.shn-host.ru AccessFileName .htaccess ### suPHP ### suPHP_Engine on suPHP_UserGroup user1 user1 suPHP_AddHandler x-httpd-php AddHandler x-httpd-php .php .php3 .php4 .php5 <Directory /var/www//html/> Options +Indexes FollowSymlinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> |
Смените права пользователя:
chown -Rf user1:user1 /var/www/html |
Выполните команду:
mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.disable |
Перезагрузите httpd:
service httpd restart |
Если вы используете SSL (https), откройте файл /etc/httpd/conf.d/ssl.conf:
nano /etc/httpd/conf.d/ssl.conf |
Добавьте в него следующие строки:
##suPHP## suPHP_Engine on suPHP_UserGroup user1 user1 suPHP_AddHandler x-httpd-php AddHandler x-httpd-php .php .php3 .php4 .php5 ##suPHP end## |
Обратите внимание на то, что в поле suPHP_UserGroup нужно вписать название своего пользователя. Чтобы проверить, установлен ли suPHP, создайте в корневом каталоге файл info.php:
nano info.php |
Добавьте в него скрипт:
<? phpinfo(); ?> |
Перезагрузите сервер:
service httpd restart |
Введите в адресной строке браузера ваш-домен/info.php: