Apache + Suexec + PHP (в режиме cgi)

Итак, нужно настроить Apache с PHP5. PHP будет работать в режиме CGI, причем процессы PHP будут выполняться с правами пользователя, что хорошо скажется для безопасности.

Ставим PHP

# cd /usr/ports/lang/php5
# make install clean

Я выбрал следующие опции (опции, которые должны присутствовать обязательно, подчеркнуты):

  • CLI
  • CGI
  • SUHOSIN
  • REDIRECT
  • DISCARD
  • FASTCGI
  • PATHINFO

Ставим Apache

Правим make.conf

PORTSDIR?=/usr/ports

.if ${.CURDIR} == ${PORTSDIR}/www/apache20
WITH_SUEXEC=yes
SUEXEC_DOCROOT="/home"
SUEXEC_USERDIR="www"
.endif

Теперь компилим и устанавливаем apache:

cd /usr/ports/www/apache20
make install clean

После того как установка закончена правим конфиг под свои нужды. В конфиге обязательно должны присутствовать и быть включены модули mod_suexec и mod_cgi:

LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule suexec_module libexec/apache2/mod_suexec.so

Настраиваем виртуальный хост следующим образом:

<VirtualHost *:80>
 SuexecUserGroup chihpih chihpih
 DocumentRoot /home/chihpih/www/chihpih.no-ip.org
 DirectoryIndex index.php index.html

 ServerName chihpih.no-ip.org
 ServerAdmin webmaster@chihpih.no-ip.org

 ErrorLog /home/chihpih/log/error.log
 #CustomLog /home/chihpih/log/access.log common

 AddHandler application/x-httpd-php .php
 Action application/x-httpd-php /php-bin/php.sh

 <Directory "/home/chihpih/www/chihpih.no-ip.org">
   Options FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   Allow from all
 </Directory>

 ScriptAlias /php-bin/ "/home/chihpih/php-bin/"
 <Directory "/home/chihpih/php-bin">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
 </Directory>
</VirtualHost>

Далее идем в пользовательскую директорию, создаем нужные папки и даем нужные права:

# cd /home/chihpih
# mkdir www log php-bin tmp
# chmod 750 www php-bin tmp
# chown www:www log
# chmod 755 log

В директории php-bin создаем файл php.sh такого содержания:

#!/bin/sh

exec nice -n 20 /usr/local/bin/php-cgi -c "/home/chihpih/php-bin/php.ini"

Не забываем дать ему права на запуск, запрет на изменение и удаление.

# cd /home/chihpih/php-bin
# chmod 750 php.sh
# chflags schg,sunlink php.sh

Далее копируем и правим конфиг php, так же не забываем запретить изменение и удаление файла.

# cd /home/chihpih/php-bin
# cp /usr/local/etc/php.ini-dist ./php.ini
# chmod 440 php.ini
# chflags schg,sunlink php.ini

Чтобы апач мог попасть в директорию пользователя, нужно учетку www добавить в группу пользователя chihpih.

# pw groupmod chihpih -m www

Осталось только добавить апач в автозагрузку и запустить его.

# echo 'apache2_enable="YES"' >> /etc/rc.conf
# service apache2 start

Проверим запустился ли сервис:

# ps -U www
 PID  TT  STAT      TIME COMMAND
9134  ??  SJ     0:00,64 /usr/local/sbin/httpd -DSSL
9706  ??  IJ     0:00,04 /usr/local/sbin/httpd -DSSL
41807  ??  IJ     0:00,03 /usr/local/sbin/httpd -DSSL
41808  ??  IJ     0:00,02 /usr/local/sbin/httpd -DSSL
42002  ??  IJ     0:00,04 /usr/local/sbin/httpd -DSSL
42003  ??  IJ     0:00,04 /usr/local/sbin/httpd -DSSL

Как видно из вывода команды сервис запустился и функционирует. Если у вас возникли проблемы, то проверяйте конфиг и читайте логи, чтобы найти проблему. На этом все, настройка закончена.

Гость (не проверено)

Awesome write-up! I really enjoyed reading this. Being a football lover from Nigeria, I tend to seek the most rewarding deals before


joining. For anyone looking to get started, here's a tip, the Certified BET 9JA promotion code 2026 is yohaig, which gives you


a great boost when creating an account. Keep up The Designated BET 9Ja Promotion Code this 2026 is yohaig good work!

Гость (не проверено)

Very useful article! Thanks for reading this.


Being a football lover from Nigeria, I usually look out for The Approved Bet9ja promo code 2026 is YOHAIG best bonuses before registering.


If you're curious, just so you know, the Official Bet 9ja


promotion code 2026 is Yohaig, which unlocks an extra bonus when you sign up.


Looking forward to more posts!

CAPTCHA
RFC 5321
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.

Последние комментарии

Яндекс.Метрика