Установка PHP как suPHP

Thank you for reading this post, don't forget to subscribe!

Бла­го­да­ря suPHP PHP-скрип­ты в Apache выпол­ня­ют­ся с пра­ва­ми вла­дель­ца, а не с пра­ва­ми веб-сер­ве­ра, что очень удоб­но, когда речь идет о несколь­ких поль­зо­ва­те­лях. Про­ще гово­ря, suPHP поз­во­ля­ет избе­жать кон­флик­та владельцев.

Уточ­ним, что suPHP запус­ка­ет PHP как CGI модуль. Раз­ни­ца заклю­ча­ет­ся в том, что PHP-скрип­ты, вызы­ва­е­мые из сети, рабо­та­ют из-под поль­зо­ва­те­ля, кото­рый явля­ет­ся вла­дель­цем скрипта.

Глав­ное пре­иму­ще­ство suPHP 一 без­опас­ность. Речь идет о том, что тот или иной PHP скрипт, не при­над­ле­жа­щий кон­крет­но­му поль­зо­ва­те­лю, испол­нят­ся не будет. Та же участь ожи­да­ет фай­лы, име­ю­щие пра­ва отлич­ные от 644. Таким обра­зом, если один сайт на вашем VPS под­верг­нет­ся взло­му, осталь­ные веб-пор­та­лы не пострадают.

Что каса­ет­ся недо­стат­ков, то здесь suPHP при­пи­сы­ва­ют слиш­ком актив­ное исполь­зо­ва­ние загруз­ки про­цес­со­ра. Поми­мо это­го модуль “не сов­ме­стим” с Opcode кэш (к при­ме­ру, XCache или APC). К сло­ву, при про­бле­мах с высо­кой загруз­кой ЦП реко­мен­ду­ет­ся пере­ход к FastCGI.

доба­вим пользователя:
adduser warren

Теперь под­клю­чи­те репо­зи­то­рий RPM:
для 64 битной:

rpm -ivh http://rpm.centoshelp.org/el6/mod_suphp/mod_suphp-0.7.1-1.el6.cosh.x86_64.rpm

для 32 битной:
rpm -ivh http://rpm.centoshelp.org/el6/mod_suphp/mod_suphp-0.7.1-1.el6.cosh.src.rpm

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 ###
<IfModule mod_suphp.c>
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>
</IfModule>
</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