Установка на VDS freebsd+nginx+php-fpm+MySQL+phpMyAdmin

Ставим порты

# 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’а потребуется дополнительная авторизация в браузере.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *