Web-server на базе Nginx, php5-fpm, mysql на Debian Wheezy — различия между версиями
Root (обсуждение | вклад) |
Root (обсуждение | вклад) |
||
(не показаны 22 промежуточные версии этого же участника) | |||
Строка 12: | Строка 12: | ||
'''/etc/apt/sources.list''' | '''/etc/apt/sources.list''' | ||
deb http://nginx.org/packages/debian wheezy nginx | deb http://nginx.org/packages/debian wheezy nginx | ||
− | deb | + | deb http://packages.dotdeb.org wheezy all |
deb http://repo.percona.com/apt wheezy main | deb http://repo.percona.com/apt wheezy main | ||
− | |||
− | |||
Обновляемся | Обновляемся | ||
# aptitude update | # aptitude update | ||
+ | |||
+ | |||
+ | Ставим nginx | ||
+ | # aptitude install nginx | ||
+ | |||
+ | |||
+ | Создаём директорию для сайта и даём права | ||
+ | # /srv/www/site | ||
+ | # chown -R www-data:www-data /srv/www/site | ||
+ | |||
+ | |||
+ | Правим конфиги (сам nginx начинает читать файл '''/etc/nginx/nginx.conf''', все остальные подключаются директивой include. ) | ||
+ | |||
+ | '''/etc/nginx/nginx.conf''' | ||
+ | user www-data; | ||
+ | worker_processes 4; | ||
+ | pid /var/run/nginx.pid; | ||
+ | events { | ||
+ | worker_connections 1024; | ||
+ | } | ||
+ | |||
+ | http { | ||
+ | access_log /var/log/nginx/access.log; | ||
+ | error_log /var/log/nginx/error.log; | ||
+ | |||
+ | include /etc/nginx/mime.types; | ||
+ | default_type application/octet-stream; | ||
+ | |||
+ | sendfile on; | ||
+ | tcp_nopush on; | ||
+ | tcp_nodelay on; | ||
+ | keepalive_timeout 65; | ||
+ | #gzip on; | ||
+ | client_max_body_size 10m; | ||
+ | server_names_hash_bucket_size 64; | ||
+ | types_hash_max_size 2048; | ||
+ | types_hash_bucket_size 64; | ||
+ | include /etc/nginx/conf.d/*.conf; | ||
+ | } | ||
+ | |||
+ | |||
+ | Теперь конфиг проекта | ||
+ | |||
+ | '''/etc/nginx/conf.d/site.conf''' | ||
+ | server { | ||
+ | listen 80; | ||
+ | server_name site.ru; | ||
+ | root /srv/www/site; | ||
+ | index index.php index.html index.htm; | ||
+ | access_log /var/log/nginx/site.access.log; | ||
+ | error_log /var/log/nginx/site.error.log; | ||
+ | |||
+ | location ~ \.php$ { | ||
+ | fastcgi_pass 127.0.0.1:10001; | ||
+ | fastcgi_index index.php; | ||
+ | fastcgi_param SCRIPT_FILENAME /srv/www/site/$fastcgi_script_name; | ||
+ | fastcgi_intercept_errors on; | ||
+ | include fastcgi_params; | ||
+ | } | ||
+ | } | ||
Ставим php и модули(по мере надобности) | Ставим php и модули(по мере надобности) | ||
− | # aptitude install php5-fpm php5-cli php5-common php5-mysql | + | # aptitude install php5-fpm php5-cli php5-common php5-mysql php5-gd php5-curl php5-mcrypt php5-xcache php-pear |
− | Создаём | + | Создаём папку для логов |
# mkdir /var/log/php5 | # mkdir /var/log/php5 | ||
− | |||
Правим конфиги | Правим конфиги | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
'''/etc/php5/fpm/pool.d/site.conf''' | '''/etc/php5/fpm/pool.d/site.conf''' | ||
Строка 64: | Строка 103: | ||
pm.max_children = 35 | pm.max_children = 35 | ||
pm.start_servers = 5 | pm.start_servers = 5 | ||
− | |||
pm.min_spare_servers = 2 | pm.min_spare_servers = 2 | ||
pm.max_spare_servers = 8 | pm.max_spare_servers = 8 | ||
Строка 70: | Строка 108: | ||
pm.status_path = /status/php-fpm/$pool | pm.status_path = /status/php-fpm/$pool | ||
request_terminate_timeout = 0 | request_terminate_timeout = 0 | ||
− | request_slowlog_timeout = | + | request_slowlog_timeout = 1m |
slowlog = /var/log/php5/$pool.slow.log | slowlog = /var/log/php5/$pool.slow.log | ||
− | + | catch_workers_output = yes | |
Отключаем уязвимость: http://forum.antichat.ru/thread222063-php-fpm.html<br/> | Отключаем уязвимость: http://forum.antichat.ru/thread222063-php-fpm.html<br/> | ||
Строка 79: | Строка 117: | ||
− | Ставим | + | Ставим percona-server(форк движка mysql) |
− | |||
+ | # aptitude install percona-server-server-5.5 percona-server-client-5.5 percona-server-common-5.5 percona-toolkit percona-xtrabackup | ||
− | |||
− | |||
− | |||
+ | Для запуска демона не только на локалхосте | ||
− | + | '''/etc/mysql/my.cnf''' | |
− | + | bind address = 0.0.0.0 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Для входа под рутом без пароля | |
− | '''/ | + | '''/root/.my.cnf''' |
− | + | [client] | |
− | + | user=root | |
− | + | pass=password | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | root | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Скрипт проверки подключения к DB | |
<?php | <?php | ||
− | + | $dblocation = "127.0.0.1"; | |
− | + | $dbname = "mysql"; | |
− | + | $dbuser = "root"; | |
− | + | $dbpasswd = "password"; | |
− | + | ||
− | + | $dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd); | |
+ | if (!$dbcnx) | ||
+ | { | ||
+ | echo "Server MYSQL is not available"; | ||
+ | exit(); | ||
+ | } | ||
+ | if (!mysql_select_db($dbname, $dbcnx) ) | ||
+ | { | ||
+ | echo "Database is not available"; | ||
+ | exit(); | ||
+ | } | ||
+ | $ver = mysql_query("SELECT VERSION()"); | ||
+ | if(!$ver) | ||
+ | { | ||
+ | echo "Error in query"; | ||
+ | exit(); | ||
+ | } | ||
+ | echo mysql_result($ver, 0); | ||
+ | ?> | ||
− | |||
− | + | Рестартим всю эту байду, проверяем и на выходе имеем уеб-сервер для своих нужд. |
Текущая версия на 12:48, 30 марта 2015
Добавляем ключи и репозитории
# wget http://nginx.org/keys/nginx_signing.key # apt-key add nginx_signing.key # wget http://www.dotdeb.org/dotdeb.gpg # apt-key add dotdeb.gpg # apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
/etc/apt/sources.list
deb http://nginx.org/packages/debian wheezy nginx deb http://packages.dotdeb.org wheezy all deb http://repo.percona.com/apt wheezy main
Обновляемся
# aptitude update
Ставим nginx
# aptitude install nginx
Создаём директорию для сайта и даём права
# /srv/www/site # chown -R www-data:www-data /srv/www/site
Правим конфиги (сам nginx начинает читать файл /etc/nginx/nginx.conf, все остальные подключаются директивой include. )
/etc/nginx/nginx.conf
user www-data; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 1024; } http { access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; #gzip on; client_max_body_size 10m; server_names_hash_bucket_size 64; types_hash_max_size 2048; types_hash_bucket_size 64; include /etc/nginx/conf.d/*.conf; }
Теперь конфиг проекта
/etc/nginx/conf.d/site.conf
server { listen 80; server_name site.ru; root /srv/www/site; index index.php index.html index.htm; access_log /var/log/nginx/site.access.log; error_log /var/log/nginx/site.error.log; location ~ \.php$ { fastcgi_pass 127.0.0.1:10001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/www/site/$fastcgi_script_name; fastcgi_intercept_errors on; include fastcgi_params; } }
Ставим php и модули(по мере надобности)
# aptitude install php5-fpm php5-cli php5-common php5-mysql php5-gd php5-curl php5-mcrypt php5-xcache php-pear
Создаём папку для логов
# mkdir /var/log/php5
Правим конфиги
/etc/php5/fpm/pool.d/site.conf
[site] prefix = /srv/www/$pool listen = 127.0.0.1:10001 listen.allowed_clients = 127.0.0.1 listen.owner = www-data listen.group = www-data listen.mode = 0660 user = www-data group = www-data pm = dynamic pm.max_children = 35 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pm.max_requests = 1000 pm.status_path = /status/php-fpm/$pool request_terminate_timeout = 0 request_slowlog_timeout = 1m slowlog = /var/log/php5/$pool.slow.log catch_workers_output = yes
Отключаем уязвимость: http://forum.antichat.ru/thread222063-php-fpm.html
прописываем в /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0
Ставим percona-server(форк движка mysql)
# aptitude install percona-server-server-5.5 percona-server-client-5.5 percona-server-common-5.5 percona-toolkit percona-xtrabackup
Для запуска демона не только на локалхосте
/etc/mysql/my.cnf
bind address = 0.0.0.0
Для входа под рутом без пароля
/root/.my.cnf
[client] user=root pass=password
Скрипт проверки подключения к DB
<?php $dblocation = "127.0.0.1"; $dbname = "mysql"; $dbuser = "root"; $dbpasswd = "password"; $dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd); if (!$dbcnx) { echo "Server MYSQL is not available"; exit(); } if (!mysql_select_db($dbname, $dbcnx) ) { echo "Database is not available"; exit(); } $ver = mysql_query("SELECT VERSION()"); if(!$ver) { echo "Error in query"; exit(); } echo mysql_result($ver, 0); ?>
Рестартим всю эту байду, проверяем и на выходе имеем уеб-сервер для своих нужд.