В интернете много различных руководств по созданию связки
Apache22 +php5 +mysql5 .
Попробую и я внесни свою лепту. Но чуток усложним задачу: попробуем запустить
виртуальный хост от имени другого пользователя, отличного от стандартного www,
что позволит нам повысить безопастность сервера.
Обновляем порты, приводим систему в идеального состояние и приступаем. Для
начала, устанавливаем MySQL сервер (описанно тут ). Дальше, идем в директорию веб
сервера и делаем небольшие изменения:
10:10 user@ns
[/usr/ports/www/apache22]#vi Makefile #WITH_MPM?= prefork # or worker,
event, itk WITH_MPM?= itk
Заменяем как я показал, после чего выполняем следующее:
10:12 user@ns
[/usr/ports/www/apache22]#make config Options for apache-itk
2.2.14_5 │
┌────────────────────────────────────────────────────────────────┐ │ │ │[ ]
APR_FROM_PORTS Use devel/apr as APR
(preferred) │ │[ ]
THREADS Enable threads support in APR │ │[X]
MYSQL Enable MySQL support for apr-dbd │ │[ ]
PGSQL Enable PostgreSQL support for apr-dbd │ │[ ]
SQLITE Enable SQLite support for apr-dbd │ │[ ]
IPV6 Enable IPv6 support │ │[ ]
BDB Enable BerkeleyDB dbm │ │[X]
AUTH_BASIC Enable mod_auth_basic │ │[X]
AUTH_DIGEST Enable mod_auth_digest │ │[X]
AUTHN_FILE Enable mod_authn_file │ │[ ]
AUTHN_DBD Enable mod_authn_dbd │ │[X]
AUTHN_DBM Enable mod_authn_dbm │ │[X]
AUTHN_ANON Enable mod_authn_anon │ │[X]
AUTHN_DEFAULT Enable mod_authn_default │ │[X]
AUTHN_ALIAS Enable mod_authn_alias │ │[X]
AUTHZ_HOST Enable mod_authz_host │ │[X]
AUTHZ_GROUPFILE Enable mod_authz_groupfile │ │[X]
AUTHZ_USER Enable mod_authz_user │ │[X]
AUTHZ_DBM Enable mod_authz_dbm │ │[X]
AUTHZ_OWNER Enable mod_authz_owner │ │[X]
AUTHZ_DEFAULT Enable mod_authz_default │ │[X]
CACHE Enable mod_cache │ │[X]
DISK_CACHE Enable mod_disk_cache │ │[X]
FILE_CACHE Enable mod_file_cache │ │[X]
MEM_CACHE Enable mod_mem_cache │ │[X]
DAV Enable mod_dav │ │[X]
DAV_FS Enable mod_dav_fs │ │[ ]
BUCKETEER Enable mod_bucketeer │ │[ ]
CASE_FILTER Enable mod_case_filter │ │[ ]
CASE_FILTER_IN Enable mod_case_filter_in │ │[ ]
EXT_FILTER Enable mod_ext_filter │ │[ ]
LOG_FORENSIC Enable mod_log_forensic │ │[ ]
OPTIONAL_HOOK_EXPORT Enable mod_optional_hook_export │ │[ ]
OPTIONAL_HOOK_IMPORT Enable mod_optional_hook_import │ │[ ]
OPTIONAL_FN_IMPORT Enable mod_optional_fn_import │ │[ ]
OPTIONAL_FN_EXPORT Enable mod_optional_fn_export │ │[ ]
LDAP Enable mod_ldap │ │[ ]
AUTHNZ_LDAP Enable mod_authnz_ldap │ │[X]
ACTIONS Enable mod_actions │ │[X]
ALIAS Enable mod_alias │ │[X]
ASIS Enable mod_asis │ │[X]
AUTOINDEX Enable mod_autoindex │ │[X]
CERN_META Enable mod_cern_meta │ │[X]
CGI Enable mod_cgi │ │[X]
CHARSET_LITE Enable mod_charset_lite │ │[ ]
DBD Enable mod_dbd │ │[X]
DEFLATE Enable mod_deflate │ │[X]
DIR Enable mod_dir │ │[X]
DUMPIO Enable mod_dumpio │ │[X]
ENV Enable mod_env │ │[X]
EXPIRES Enable mod_expires │ │[X]
HEADERS Enable mod_headers │ │[X]
IMAGEMAP Enable mod_imagemap │ │[X]
INCLUDE Enable mod_include │ │[X]
INFO Enable mod_info │ │[X]
LOG_CONFIG Enable mod_log_config │ │[X]
LOGIO Enable mod_logio │ │[X]
MIME Enable mod_mime │ │[X]
MIME_MAGIC Enable mod_mime_magic │ │[X]
NEGOTIATION Enable mod_negotiation │ │[X]
REWRITE Enable mod_rewrite │ │[X]
SETENVIF Enable mod_setenvif │ │[X]
SPELING Enable mod_speling │ │[X]
STATUS Enable mod_status │ │[X]
UNIQUE_ID Enable mod_unique_id │ │[X]
USERDIR Enable mod_userdir │ │[X]
USERTRACK Enable mod_usertrack │ │[X]
VHOST_ALIAS Enable mod_vhost_alias │ │[X]
FILTER Enable mod_filter │ │[X]
VERSION Enable mod_version │ │[ ]
PROXY Enable mod_proxy │ │[ ]
PROXY_CONNECT Enable mod_proxy_connect │ │[X]
PATCH_PROXY_CONNECT Patch proxy_connect SSL support │ │[ ]
PROXY_FTP Enable mod_proxy_ftp │ │[ ]
PROXY_HTTP Enable mod_proxy_http │ │[ ]
PROXY_AJP Enable mod_proxy_ajp │ │[ ]
PROXY_BALANCER Enable mod_proxy_balancer │ │[ ]
PROXY_SCGI Enable mod_proxy_scgi │ │[X]
SSL Enable mod_ssl │ │[ ]
SUEXEC Enable mod_suexec │ │[ ]
CGID Enable mod_cgid
├─└────────────────────────────────────────────────────────────────┘─┤ │
[ OK ] Cancel
│ └────────────────────────────────────────────────────────────────────┘
Выбираем пункты под свои нужды. Жмем ОК, после чего выполняем инсталяцию.
10:14 user@ns
[/usr/ports/www/apache22]#make install clean
После чего, в файл /etc/rc.conf добавляем
apache22_enable="YES" После чего, пробуем запустить.
12:03 user@ns
[/usr/ports/www/apache22]#/usr/local/etc/rc.d/apache22 start Performing
sanity check on apache22 configuration: Syntax OK Starting
apache22. 12:03 user@ns [/usr/ports/www/apache22]#
Судя по всему, у меня завелось. Если у Вас что то другое, смотрите причины
ошибки. Итак, mysql стоит, apache стоит,
ставим php5 .
12:03 user@ns
[/usr/ports/www/apache22]#cd /usr/ports/lang/php5 12:05 user@ns
[/usr/ports/lang/php5]#make config
Options for php5 5.2.12 [X] CLI Build
CLI version [ ] CGI Build CGI
version [X] APACHE Build Apache
module [ ] DEBUG Enable
debug [X] SUHOSIN Enable Suhosin
protection system (not for jails) [X] MULTIBYTE Enable zend multibyte
support [ ] IPV6 Enable ipv6
support [X] MAILHEAD Enable mail header
patch [ ] REDIRECT Enable force-cgi-redirect
support (CGI only) [ ] DISCARD Enable discard-path support (CGI
only) [ ] FASTCGI Enable fastcgi support (CGI
only) [ ] PATHINFO Enable path-info-check support (CGI
only) [ OK
] Cancel
12:08 user@ns
[/usr/ports/lang/php5]#make install clean
Выбираете все под свои нужды и устанавливаете. В конце Вам необходимо будет
добавить в DirectoryIndex значение index.php (индексный,
первоначальный файл) и 2 строки, обработки php
apache'ем.
AddType
application/x-httpd-php .php AddType application/x-httpd-php-source
.phps
И перегружаете веб сервер. Для проверки, можете залить в директорию тестовый
файлик.
12:11 phenix@ns
[/usr/ports/lang/php5]#cd /usr/local/www/apache22/data 12:12 phenix@ns
[/usr/local/www/apache22/data]#cat test.php <?
phpinfo(); ?> 12:13 phenix@ns
[/usr/local/www/apache22/data]#
Ну и через броузер проверить, работает или нет. Страничка должна выдать все
информацию из файла php.ini. Но это еще не все. Кроме самого PHP
нам необходимо еще и некоторые модули, к примеру поддержка базы данных,
либо графики. Для этого переходим в каталог
/usr/ports/lang/php5-extensions/ и выбираем те модули, которые
нам необходимы (через выполнение комманды make config а потом
make install clean ).
Для того, чтоб виртуальных хост отрабатывал из-под другого пользователя, в
файл httpd-vhosts.conf , а именно в самом виртуальном хосте
необходимо добавить следующее:
<IfModule
itk.c> AssignUserID testuser testuser MaxClientsVHost
200 </IfModule>
Где директива AssignUserID говорит от имено кого будет
запускаться виртуальных хост, MaxClientsVHost - количество
обращений.
Вот собственно и все. Не расмотрел тут вариант настройки самого апача (чесно
говоря - этого много, я всего лишь описал моменты с повышеной безопастностью,
то, что сложно найти в инете), и не расмотрел вариант с настройкой php.ini, ну
да это как раз тема для еще одной статьи.