avatar OpenSUSE Настройка WEB сервера: Apache,PHP(с использованием mod_fcgid) в OpenSUSE 11.3

Данное руководство является вариацией на тему, вот этой статьи, в принципе, все тоже самое, но только адаптированное для OpenSUSE 11.3.

При написании этого варианта статьи, были использованы скрины от предыдущей, за неимением времени, но все упоминания об ubuntu были вырезаны -чтобы не смущать читателей.

Устанавливаем необходимые пакеты( по умолчанию текстовый редактор nano не установлен в системе, для новичков он будет немного полегче, исправим эту оплошность)

yast2 -i apache2 apache2-mod_fcgid php5-fastcgi nano


активируем модули suexec fcgid

a2enmod suexec
a2enmod fcgid

Добавляем Apache в автозагрузку системы (чтобы в случае перезагрузки сервера, не пришлось запускать его ручками) ну и запустим его.

chkconfig --add apache2
/etc/init.d/apache2 start


Далее нам необходимо отредактировать файл php.ini который находится в /etc/php5/fastcgi/php.ini
nano /etc/php5/fastcgi/php.ini

как и в предыдущей статье, нам необходимо найти и снять комментарий со строки cgi.fix_pathinfo = 1 (необходимо убрать — ; )

перезапускаем Apache
/etc/init.d/apache2 restart


Добавим пользователей и группы ( рекомендации лучших собаководов говорят что у пользователя пот чьего выполняются скрипты лучше отключить доступ в шеллу)

groupadd example1
groupadd example2
useradd -s /bin/false -d /var/www/example1 -m -g example1 example1
useradd -s /bin/false -d /var/www/example2 -m -g example2 example2
chmod 755 /srv/www/example1
chmod 755 /srv/www/example2


Создадим домашние директории нашим пользователям
mkdir -p /var/www/example1/web
chown example1:example1 /var/www/example1/web
mkdir -p /var/www/example2/web
chown example2:example2 /var/www/example2/web


заставим использовать PHP suExec корневая директория web сервера будет находиться /srv/www вводим команду
/usr/sbin/suexec2 -V

Должно выдать нечто подобное:

  • testserver:~ # /usr/sbin/suexec2 -V
  • -D AP_DOC_ROOT="/srv/www"
  • -D AP_GID_MIN=96
  • -D AP_HTTPD_USER=«wwwrun»
  • -D AP_LOG_EXEC="/var/log/apache2/suexec.log"
  • -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
  • -D AP_UID_MIN=96
  • -D AP_USERDIR_SUFFIX=«public_html»
  • testserver:~ #

Создадим директории в которых будут выполняться скрипты:

mkdir -p /var/www/php-fcgi-scripts/example1
mkdir -p /var/www/php-fcgi-scripts/example2


создадим скрипт запуска с содержимым:
nano /srv/www/php-fcgi-scripts/example1/php-fcgi-starter 


#!/bin/sh
PHPRC=/etc/php5/fastcgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/bin/php-cgi


nano /var/www/php-fcgi-scripts/example2/php-fcgi-starter


#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php


php-fcgi-starter скрипт делаем исполняемым, а на директории расставляем соответствующие права для записи.
chmod 755 /var/www/php-fcgi-scripts/example1/php-fcgi-starter
chmod 755 /var/www/php-fcgi-scripts/example2/php-fcgi-starter
chown -R example1:example1 /var/www/php-fcgi-scripts/example1
chown -R example2:example2 /var/www/php-fcgi-scripts/example2


Создаем виртуальные хосты для нашего сервера:
nano /etc/apache2/vhosts.d/example1.org.conf


с таким содержимым:

<VirtualHost *:80>
ServerName example1.org
ServerAlias www.example1.org
ServerAdmin webmaster@example1.org
DocumentRoot /var/www/example1/web/

<IfModule mod_fcgid.c>
SuexecUserGroup example1 example1
<Directory /var/www/example1/web/>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-fcgi-scripts/example1/php-fcgi-starter .php
Order allow,deny
Allow from all



ErrorLog /var/www/example1/error.log
CustomLog /var/www/example1/access.log combined
ServerSignature Off
</VirtualHost>


Ну и для второго:
nano /etc/apache2/vhosts.d/example2.org.conf


<VirtualHost *:80>
  ServerName example2.org
  ServerAlias www.example2.org
  ServerAdmin webmaster@example2.org
  DocumentRoot /var/www/example2/web/

  <IfModule mod_fcgid.c>
    SuexecUserGroup example2 example2
    <Directory /var/www/example2/web/>
      Options +ExecCGI
      AllowOverride All
      AddHandler fcgid-script .php
      FCGIWrapper /var/www/php-fcgi-scripts/example2/php-fcgi-starter .php
      Order allow,deny
      Allow from all
    </Directory>
  </IfModule>

  ErrorLog /var/www/example2/error.log
  CustomLog /var/www/example2/access.log combined
  ServerSignature Off

</VirtualHost>


Далее необходимо отредактировать конфигурационный файл apache и сообщить ему –где искать описание виртуальных хостов.
nano /etc/apache2/httpd.conf


В секцию NameVirtualHost добавляем Include /etc/apache2/vhosts.d/*.conf

NameVirtualHost *
Include /etc/apache2/vhosts.d/*.conf


Сохраняем выходим.
Перед перезагрузкой Apache выставляем соответствующие права на suexec, иначе у нас полезут ошибки.

chmod 4755 /usr/sbin/suexec2


перезапускаем apache
/etc/init.d/apache2 restart


Все что мы тут настроили теперь необходимо протестировать
nano /var/www/example1/web/test.php


с содержимым
<?php
phpinfo();
?>


Заходим по адресу в example1.org/test.php если домена нет, то можно добывать соответствующую запись в файл hosts
Проверяем секцию Server API( обведена красным) если там указано CGI/FastCGI, то все впорядке.



Создаем для каждого сайта собственные настройки php.ini.
cp /etc/php5/cgi/php.ini /var/www/example2/
chown example2:example2 /var/www/example2/php.ini

теперь откроем и отредактируем
nano /srv/www/php-fcgi-scripts/web2/php-fcgi-starter

заменяем значения на наши

#!/bin/sh
PHPRC=/var/www/example2/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php


перезапустим web server
/etc/init.d/apache2 restart


Проверяем конфигурацию:
nano /var/www/example2/web/test.php

вставляем в него:

<?php
phpinfo();
?>


Заходим по адресу example2.org/test.php
Смотрим строку Loaded Configuration File (подчеркнуто красным) расположение конфигурационного файла php.ini теперь он для этого сайта свой.



Отключение некоторых функций PHP
nano /var/www/php-fcgi-scripts/example2/php-fcgi-starter

(попробуем отключить как и в прошлый раз magic_quotes_gpc)
Добавляем в файл

#!/bin/sh
PHPRC=/etc/php5/cgi/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=8
exec /usr/lib/cgi-bin/php -d magic_quotes_gpc=off


Перезапускаем Apache
/etc/init.d/apache2 restart


Переходим по адресу example2.org/test.php
Находим строку magic_quotes_gpc (подчеркнуто карсным)

php.ini
Вот собственно и все.
Для второго сайта все делается аналогичным способом.

1 комментарий

avatar
Зачем было ссылаться на *buntu-статью и писать с кучей ошибок, если можно было привести ссылку на оригинал — www.howtoforge.com/how-to-set-up-apache2-with-mod_fcgid-and-php5-on-opensuse-11.2
Есть что добавить? Регистрируйся и оставляй комментарии!