Web-server на базе Nginx, php5-fpm, mysql на Debian Wheezy — различия между версиями
Root (обсуждение | вклад) (Новая страница: «'''Установка''' Добавляем необходимые репозитории в /etc/apt/sources.list: deb http://packages.dotdeb.org squeeze all…») |
Root (обсуждение | вклад) |
||
(не показано 27 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | |||
+ | Добавляем ключи и репозитории | ||
+ | # 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; | |
− | |||
− | |||
− | |||
− | user | ||
− | |||
− | worker_processes | ||
− | |||
pid /var/run/nginx.pid; | pid /var/run/nginx.pid; | ||
− | |||
− | |||
events { | events { | ||
− | + | worker_connections 1024; | |
} | } | ||
http { | 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 { | 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_pass | ||
fastcgi_index index.php; | fastcgi_index index.php; | ||
− | fastcgi_param SCRIPT_FILENAME | + | fastcgi_param SCRIPT_FILENAME /srv/www/site/$fastcgi_script_name; |
− | include | + | 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<br/> | Отключаем уязвимость: http://forum.antichat.ru/thread222063-php-fpm.html<br/> | ||
Строка 136: | Строка 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 | ||
+ | |||
+ | |||
+ | Скрипт проверки подключения к 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); | ||
+ | ?> | ||
+ | |||
− | + | Рестартим всю эту байду, проверяем и на выходе имеем уеб-сервер для своих нужд. |
Текущая версия на 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); ?>
Рестартим всю эту байду, проверяем и на выходе имеем уеб-сервер для своих нужд.