В интернете много различных руководств по созданию связки Apache22+php5+mysql5. Попробую и я внесни свою лепту. Но чуток усложним задачу: попробуем запустить виртуальный хост от имени другого пользователя, отличного от стандартного www, что позволит нам повысить безопастность сервера.
Обновляем порты, приводим систему в идеального состояние и приступаем. Для начала, устанавливаем MySQL сервер (описанно тут). Дальше, идем в директорию веб сервера и делаем небольшие изменения:
10:10 user@ns [/usr/ports/www/apache22]#vi Makefile#WITH_MPM?= prefork # or worker, event, itkWITH_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 startPerforming sanity check on apache22 configuration:Syntax OKStarting apache22.12:03 user@ns [/usr/ports/www/apache22]#
Судя по всему, у меня завелось. Если у Вас что то другое, смотрите причины ошибки. Итак, mysql стоит, apache стоит, ставим php5.
12:03 user@ns [/usr/ports/www/apache22]#cd /usr/ports/lang/php512: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 .phpAddType application/x-httpd-php-source .phps
И перегружаете веб сервер. Для проверки, можете залить в директорию тестовый файлик.
12:11 phenix@ns [/usr/ports/lang/php5]#cd /usr/local/www/apache22/data12: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, ну да это как раз тема для еще одной статьи.