Ставим порты
# cd /usr
# fetch ftfp://ftp.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz
# tar –xvzf ports.tar.gz
# cd /usr/ports
# make fetchindex
Perl ставим из пакета , так — быстрее….
# pkg_add –r perl.tbz
# rehash
Устанавливаем openssl.
# pkg_add –r openssl
# rehash
Устанавливаем из портов и настраиваем MySQL
# cd /usr/ports/databases/mysql51-server/
# setenv BUILD_OPTIMIZED yes
# setenv WITH_OPENSSL yes
# setenv WITH_CHARSET utf8
# setenv WITH_COLLATION utf8_general_ci
# make install clean
# rehash
Устанавливаем набор вспомогательных скриптов для MySQL-сервера
# cd /usr/ports/databases/mysql51-scripts/
# make install clean
# rehash
Настраиваем запуск MySQL вместе с системой
# echo ‘mysql_enable=»YES»‘ >> /etc/rc.conf
Создаем конфигурационный файл.
#
cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf
Единственное, что я подправил, так это указал лог файл и в целях безопасности указал, чтобы mysql слушал только localhost.
# ee /etc/my.cnf
Добавляем в секцию [mysqld] следующие строки:
log=/var/log/mysql.log
bind-address=127.0.0.1
Создаем соответствующий лог-файл и выставляем необходимые права
# touch /var/log/mysql.log
# chown mysql:mysql /var/log/mysql.log
Запускаем.
# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
Смотрим в лог.
# cat /var/log/mysql.log
/usr/local/libexec/mysqld, Version: 4.1.22-log. started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
Используем скрипт для настройки безопасности MySQL сервера
# /usr/local/bin/mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
…
…
…
Set root password? [Y/n]Y
New password: вводим пароль пользователя root.
Re-enter new password: повторяем введенный выше пароль.
Password updated successfully!
Reloading privilege tables..
… Success!
Remove anonymous users? [Y/n]Y
… Success!
Disallow root login remotely? [Y/n]Y
… Success!
Remove test database and access to it? [Y/n]Y
— Dropping test database…
… Success!
— Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y
… Success!
Что делает скрипт mysql_secure_installation
С помощью этого скрипта мы:
• задали пароль для суперпользователя root , так как по умолчанию для него не установлен пароль;
• удалили анонимного пользователя, который создается только для тестовых целей;
• запретили пользователю root входить удаленно. Теперь он сможет заходить только с localhost;
• удалили тестовую БД test и доступ к ней.
PHP-FPM
Дополняем вручную список портов freebsd – нам нужен php-fpm, для того, чтобы nginx «понимал» php-скипты, и собственно, с него и начинаем установку.
# cd /usr/ports/lang
# fetch https://rit-kpi.org/php-fpm/php-5.2.12-fpm-0.6.tar.gz
# tar -zxf php-5.2.12-fpm-0.6.tar.gz
# cd php5-fpm
# make install clean
Конфигурим:
[X] CLI Build CLI version
[ ] 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
[X] PATHINFO Enable path-info-check support (CGI only)
Опции всех дополнительно устанавливаемых программ оставляем по умолчанию.
Устанавливается довольно долго, тянет за собой кучу других приложений, в том числе и PHP нужной версии.
# rehash
Ставим PHP-extension
# pkg_add –r php5-extensions
Добавляем нужные расширения тем же макаром:
# pkg_add –r [пакет] [пакет] [пакет]…
# rehash
Прикрутим eAccelerator
# cd /usr/ports/www/eaccelerator
# make install clean
# rehash
Создаем директорию для работы eAccelerator и выставляем необходимые права
# mkdir /var/tmp/eaccelerator
# chown www /var/tmp/eaccelerator
# chmod 0700 /var/tmp/eaccelerator
Создаем php.ini
# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
И подключаем расширение
# ee /usr/local/etc/php.ini
В самом конце файла, перед строкой ;End:
Добавляем
; eAccelerator
zend_extension=»/usr/local/lib/php/20090626/eaccelerator.so»
eaccelerator.enable=»1″
eaccelerator.shm_size=»32″
eaccelerator.cache_dir=»/var/tmp/eaccelerator»
eaccelerator.optimizer=»1″
eaccelerator.check_mtime=»1″
eaccelerator.debug=»0″
eaccelerator.filter=»»
eaccelerator.shm_max=»0″
eaccelerator.shm_ttl=»3600″
eaccelerator.shm_prune_period=»0″
eaccelerator.shm_only=»0″
eaccelerator.compress=»9″
Сохраняем изменения.
Конфигурим php-fpm
Автозапуск:
# echo ‘php_fpm_enable=»YES»‘ >> /etc/rc.conf
Редактируем скрипт запуска php-fpm, почему-то без этой поправки он не запускается.
# ee /usr/local/etc/rc.d/php-fpm
Находим в файле строку . %%RC_SUBR%%
Меняем на . /etc/rc.subr .
# ee /usr/local/etc/php-fpm.conf
Стираем все , приводим файл к виду:
<?xml version=»1.0″ ?>
<configuration>
<section name=»global_options»>
<value name=»pid_file»>/var/run/php-fpm.pid</value>
<value name=»error_log»>/var/log/php-fpm.log</value>
<value name=»log_level»>notice</value>
<value name=»emergency_restart_threshold»>10</value>
<value name=»emergency_restart_interval»>1m</value>
Time limit on waiting child’s reaction on signals from master
<value name=»process_control_timeout»>5s</value>
<value name=»daemonize»>yes</value>
</section>
<workers>
Main pool
<section name=»pool»>
<value name=»name»>main</value>
<value name=»listen_address»>/tmp/php-fpm.sock</value>
<value name=»listen_options»>
<value name=»backlog»>-1</value>
<value name=»owner»></value>
<value name=»group»></value>
<value name=»mode»>0666</value>
</value>
<value name=»php_defines»>
</value>
<value name=»user»>www</value>
<value name=»group»>www</value>
<value name=»pm»>
<value name=»style»>static</value>
<value name=»max_children»>1</value>
<value name=»apache_like»>
<value name=»StartServers»>40</value>
<value name=»MinSpareServers»>5</value>
<value name=»MaxSpareServers»>35</value>
</value>
</value>
<value name=»rlimit_files»>1024</value>
<value name=»rlimit_core»>unlimited</value>
<value name=»chroot»></value>
<value name=»chdir»></value>
<value name=»catch_workers_output»>yes</value>
<value name=»max_requests»>500</value>
<value name=»allowed_clients»>127.0.0.1</value>
<value name=»environment»>
<value name=»HOSTNAME»>$HOSTNAME</value>
<value name=»PATH»>/usr/local/bin:/usr/bin:/bin</value>
<value name=»TMP»>/tmp</value>
<value name=»TMPDIR»>/tmp</value>
<value name=»TEMP»>/tmp</value>
<value name=»OSTYPE»>$OSTYPE</value>
<value name=»MACHTYPE»>$MACHTYPE</value>
<value name=»MALLOC_CHECK_»>2</value>
</value>
</section>
</workers>
</configuration>
Стартуем php-fpm
# /usr/local/etc/rc.d/php-fpm start
Starting php_fpm.
Ставим phpMyAdmin из портов
# cd /usr/ports/databases/phpmyadmin
# make install clean
Options for phpMyAdmin 3.3.5
[X] BZ2 bzip2 library support
[X] GD GD library support
[X] MYSQLI Improved MySQL support
[X] OPENSSL OpenSSL support
[X] PDF PDFlib support (implies GD)
[X] ZLIB ZLIB support
[X] MCRYPT MCrypt library support
[X] ZIP Zip compression support
# rehash
Ставим nginx
# cd /usr/ports/www/nginx-devel
# make install clean
Options for nginx-devel 0.8.48
[X] HTTP_MODULE Enable HTTP module
[X] HTTP_ADDITION_MODULE Enable http_addition module
[X] HTTP_DAV_MODULE Enable http_webdav module
[X] HTTP_FLV_MODULE Enable http_flv module
[X] HTTP_PERL_MODULE Enable http_perl module
[X] HTTP_REALIP_MODULE Enable http_realip module
[X] HTTP_REWRITE_MODULE Enable http_rewrite module
[X] HTTP_SSL_MODULE Enable http_ssl module
[X] HTTP_STATUS_MODULE Enable http_stub_status module
[X] HTTP_SUB_MODULE Enable http_sub module
[X] WWW Enable html sample files
# rehash
Добавим nginx в автозагрузку
# echo ‘nginx_enable=»YES»‘ >> /etc/rc.conf
Редактируем конфиг-файл
# ee /usr/local/etc/nginx/nginx.conf
Стираем все и приводим файл к виду:
user www;
worker_processes 1;
pid /var/run/nginx.pid;
error_log /var/log/nginx-error.log warn;
events {
worker_connections 1024;
use kqueue;
}
http {
include mime.types;
default_type application/octet-stream;
# log options
log_format main ‘$remote_addr — $remote_user [$time_local] ‘
‘»$request» $status $bytes_sent ‘
‘»$http_referer» «$http_user_agent» ‘
‘»$gzip_ratio»‘;
# nginx options
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
server_tokens off;
# fastcgi
fastcgi_intercept_errors on;
# virtual server
server {
listen 80;
server_name YOUR.DOMAIN.COM;
access_log /var/log/nginx.YOUR_DOMAIN_COM.log main;
# server root directory
location / {
root /www/;
index index.php index.html index.htm;
}
# php
location ~ .php$ {
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
# phpMyAdmin
location ~ ~~/pma/(.*.php)$ {
fastcgi_pass unix:/tmp/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/local/www/phpMyAdmin/$1;
fastcgi_param DOCUMENT_ROOT /usr/local/www/phpMyAdmin;
}
}
}
С
оздаем корневую директорию для www-сервера (здесь это /www )
# mkdir /www
Создаем алиас pma для phpMyAdmin’а
# ln –s /usr/local/www/phpMyAdmin /www/pma
Создаем тестовую страницу PHPINFO
# touch /www/test.php
# ee /www/test.php
Пишем в нем всего одну строчку:
<? phpinfo(); ?>
Стартуем nginx
# /usr/local/etc/rc.d/nginx start
Performing sanity check on nginx configuration:
the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
Тестируем, — заходим на свой www-сервер по адресу:
https://ваш_домен.ру/test .php
Должна появиться информационная страница PHP.
Проверяем установку phpMyAdmin’а.
Заходим на свой www-сервер по адресу:
https://ваш_домен.ру/pma/
Должна появиться стартовая страница phpMyAdmin’а
Регистрируемся под именем root и тем паролем, который вводили для MySQL .
Для повышения безопасности к phpMyAdmin воспользуемся ограничением доступа к разделу /pma при помощи .htpasswd.
# touch /www/pma/.htpasswd
Так как у нас не установлен Apache, для создания записи в файле .htpasswd воспользуемся сервисом генерации — https://www.anteolab.ru/tools/apache/htpasswd_generator
Шифрование пароля: Standart DES
Полученную в результате запись добавляем в файл .htpasswd
# echo ‘LOGIN:CRYPT_PASS’ >> /www/pma/.htpasswd
Теперь используем базовую авторизацию nginx.
# ee /usr/local/etc/nginx/nginx.conf
Перед записью location ~ ~~/pma/(.*.php)$ {
добавляем следующие строки:
location /pma {
alias /usr/local/www/phpMyAdmin/;
index index.php;
# authorization
auth_basic «Authorization Required»;
auth_basic_user_file /usr/local/www/phpMyAdmin/.htpasswd;
}
Перезапустим nginx для применения внесенных изменений в конфигурацию
# /usr/local/etc/rc.d/nginx forcerestart
Для перехода на стартовую страницу phpMyAdmin’а потребуется дополнительная авторизация в браузере.