FreeBSD+Apache+PHP+PostgreSQL
1. Ставим PostgreSQL
# cd /usr/ports/database/postgresql82-server/ # make install clean Пароль pgsql: [code] #passwd pgsql
Каталог баз данных, что нравится – /home/pgsql или /var/pgsql:
#mkdir /var/pgsql #chpass pgsql # mv /usr/local/pgsql/* /var/pgsql/ #mkdir /var/pgsql/data
Права доступа к каталогу базы данных:
#chown -R pgsql:pgsql /var/pgsql/ #chmod -R 750 /var/pgsql/
Добавляем в /etc/rc.conf строчки для автозагрузки БД:
postgresql_enable="YES" postgresql_data="/var/pgsql/data" postgresql_class="postgres"
Инициализируем кластер:
#/usr/local/etc/rc.d/postgresql initdb
Стартуем базу, подключаемся к ней, меняем кодировку клиента и изменяем пароль суперпользователя, добавляем нового пользователя:
# su pgsql $ cd ~ $ /usr/local/etc/rc.d/postgresql start psql template1 \encoding KOI8 ALTER USER pgsql WITH PASSWORD 'пароль'; CREATE USER пользователь WITH CREATEDB LOGIN PASSWORD 'пароль'; Ctrl+D $ /usr/local/etc/rc.d/postgresql stop
Изменяем доступ к базе данных, правя /var/pgsql/data/pg_hba.conf:
доступ по IPv6 отключаем, комментируя строчку
#host all all ::1/128 trust
локальный доступ к БД по паролю, меняем trust на password:
local all all password host all all 127.0.0.1/32 password
Стартуем базу:
$ /usr/local/etc/rc.d/postgresql start $ Ctrl+D
2. Ставим Apache 2.
# cd /usr/ports/www/apache20/ # make WITH_AUTH_MODULES=yes WITH_DAV_MODULES=yes WITH_MISC_MODULES=yes WITH_SSL_MODULES=yes WITH_LDAP_MODULES=yes WITH_DBM=bdb WITH_BERKELEYDB=db41 WITH_KQUEUE_SUPPORT=yes install clean
Создаём каталог web-документов:
# mkdir /var/www
Папки /usr/local/www/cgi-bin-dist data-dist error-dist icons-dist переносим в /var/www/, там же создаём симлинки cgi-bin -> cgi-bin-dist, data -> data-dist, error -> error-dist, icons -> icons-dist.
Меняем права доступа:
# chown -R www:www /var/www/ # chmod -R 750 /var/www/
Правим /usr/local/etc/apache2/httpd.conf, исправляем/меняем строчки:
DocumentRoot "/usr/local/www/data" -> DocumentRoot "/var/www/data" <Directory "/usr/local/www"> -> <Directory "/var/www"> Alias /icons/ "/usr/local/www/icons/"> -> Alias /icons/ "/var/www/icons/" <Directory "/usr/local/www/icons"> -> <Directory "/var/www/icons"> ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/"> -> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/usr/local/www/cgi-bin"> -> <Directory "/var/www/cgi-bin">
то же самое с Alias /error/
3. Ставим PHP
# cd /usr/ports/lang/php5/ # make config -- включаем Apache Suhosin Multibyte, выключаем IPv6 # make install clean
Ставим необходимые модули: pcre – регулярные выражения в стиле Perl, pgsql – для связи с PostgreSQL, session – для поддержки сессий, dom – для работы с XML
# cd ../../devel/php5-pcre # make install clean # cd ../../database/php5-pgsql/ # make install clean # cd ../../www/php5-session/ # make install clean # cd ../../textproc/php5-dom # make install clean
В /usr/local/etc/apache2/httpd.conf вносим изменения:
DirectoryIndex index.html index.html.var -> DirectoryIndex index.php index.html index.html.var +AddType application/x-httpd-php .php +AddType application/x-httpd-php-source .phps
В /etc/rc.conf добавляем
apache2_enable="YES"
Создаем файл /var/www/data/index.php с содержимым:
<?php phpinfo(); ?>
Стартуем Apache:
# /usr/local/etc/rc.d/apache2.sh start
В любом браузере набираем http://127.0.0.1/ и любуемся настройками. Что не устраивает, правим соответствующие конфиги. Данная конфигурация Apache+PHP+PostgreSQL рассматривается только для web-разработки, по крайней мере мне такой конфигурации пока достаточно (для чего еще ставим /usr/ports/www/kdewebdev3/), для открытия доступа к серверу из сети потребуется поколдовать над безопасностью, виртуальными хостами (если кому надо), именами в DNS, настройка безопасности для каждой сети индивидуальна, ИМХО, потому здесь рассматривать не буду.