Для встановленого веб-сервера Apache2 у хостингі панелі ISPConfig 3, встановленої на інструкція Сьогодні ми встановимо веб-сервер Nginx для значної швидкості роботи сайтів. Веб-сервер Nginx піклується про всі роботи з статичними файлами, надаючи обробку скриптів PHP на веб-сервер Apache2, завдяки якому ми отримуємо суттєве прискорення сайтів на сервері.
Ця конфігурація також зручна в тому, що вона дозволяє використовувати стандартну конфігурацію, описану в цьому посібнику для сайтів низького завантаження, а також підключення PHP-FPM замість веб-сервера Apache2 для проектів високої завантаження.
Почати монтаж.
Передача веб-сервера Apache2 до 82 портів, оскільки Nginx буде працювати на 80 портах, нам потрібно замінити 80 портів з 82 команд:
sed -i 's/80/82/g' /etc/apache2/ports.conf
Або вручну за допомогою текстового редактора:
vi /etc/apache2/ports.conf
був:
... NameVirtualHost *:80 Listen 80 ...
сталася:
... NameVirtualHost *:82 Listen 82 ...
Замініть порт 80 з портом 82 самої панелі ISPConfig 3, і ми можемо це зробити за допомогою виконання:
sed -i 's/:80/:82/g' /etc/apache2/sites-available/ispconfig.conf
Або змінити руки в текстовому редакторі:
vi /etc/apache2/sites-available/ispconfig.conf
був:
... NameVirtualHost *:80 ...
сталася:
... NameVirtualHost *:82 ...
Ми замінюємо всі домени на сервері Apache2 80 до порту 82, для цього ми перевіряємо, які домени ми маємо наступні команди:
ls -l /etc/apache2/sites-enabled/* lrwxrwxrwx 1 root root 39 Янв 11 2014 /etc/apache2/sites-enabled/000-apps.vhost -> /etc/apache2/sites-available/apps.vhost lrwxrwxrwx 1 root root 26 Янв 11 2014 /etc/apache2/sites-enabled/000-default -> ../sites-available/default lrwxrwxrwx 1 root root 43 Янв 11 2014 /etc/apache2/sites-enabled/000-ispconfig.conf -> /etc/apache2/sites-available/ispconfig.conf lrwxrwxrwx 1 root root 44 Янв 11 2014 /etc/apache2/sites-enabled/000-ispconfig.vhost -> /etc/apache2/sites-available/ispconfig.vhost lrwxrwxrwx 1 root root 52 Янв 12 2014 /etc/apache2/sites-enabled/100-email.server.loc.vhost -> /etc/apache2/sites-available/email.server.loc.vhost lrwxrwxrwx 1 root root 51 Янв 12 2014 /etc/apache2/sites-enabled/100-sams.server.loc.vhost -> /etc/apache2/sites-available/sams.server.loc.vhost lrwxrwxrwx 1 root root 51 Июн 27 2014 /etc/apache2/sites-enabled/100-test.server.loc.vhost -> /etc/apache2/sites-available/test.server.loc.vhost lrwxrwxrwx 1 root root 46 Июл 2 2014 /etc/apache2/sites-enabled/900-server.loc.vhost -> /etc/apache2/sites-available/server.loc.vhost
У відповідь сервера ми бачимо 000 * є системними конфігураційними файлами, крім 000-default, і 100*.vhost і 900*.vhost є конфігурація файлів доменів на сервері, доданому через панелі керування хостингом ISPConfig 3, вони повинні бути змінені.
Замініть у всіх 100*.vhost і 900*.vhost 80 порт від 82, не доторкнувшись системних файлів панелі, але тільки додані домени за допомогою виконання команд:
sed -i 's/:80/:82/g' /etc/apache2/sites-enabled/100*.vhost sed -i 's/:80/:82/g' /etc/apache2/sites-enabled/900*.vhost
У кожному файлі.
... <VirtualHost *:80> ...
сталася:
... <VirtualHost *:82> ...
Також замініть 80 портів від 82 у файлі конфігурації за замовчуванням, виконавши команду:
sed -i 's/:80/:82/g' /etc/apache2/sites-enabled/000-defau*
був:
... <VirtualHost *:80> ...
сталася:
... <VirtualHost *:82> ...
Зробіть зміни в панелі хостингу ISPConfig 3
Скопіюйте основний файл конфігурації і vhost файловий генератор, виконавши команди:
cp /usr/local/ispconfig/server/conf/apache_ispconfig.conf.master /usr/local/ispconfig/server/conf-custom/ cp /usr/local/ispconfig/server/conf/vhost.conf.master /usr/local/ispconfig/server/conf-custom/
Замініть порт 80 в головному настройку з портом 82 вручну в текстовому редакторі:
vi /usr/local/ispconfig/server/conf-custom/apache_ispconfig.conf.master
був:
...
NameVirtualHost *:80
NameVirtualHost *:443
<tmpl_loop name="ip_adresses">
NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="port"}
...сталася:
...
NameVirtualHost *:82
NameVirtualHost *:443
<tmpl_loop name="ip_adresses">
NameVirtualHost {tmpl_var name="ip_address"}:82
...Заміна портів у файлі конфігурації файлового генератора vhost:
vi /usr/local/ispconfig/server/conf-custom/vhost.conf.master
був:
...
<tmpl_loop name="vhosts">
<VirtualHost {tmpl_var name='ip_address'}:{tmpl_var name='port'}>
...сталася:
...
<tmpl_loop name="vhosts">
<VirtualHost {tmpl_var name='ip_address'}:82>
...ВАЖЛИВО! Якщо вам необхідно оновити панель ISPConfig 3, вам також потрібно внести зміни з порту 80 до порту 82 до оновлених файлів, які ми зробили вище.
Встановлення модуля libapache2-mod-rpaf інакше в журналах apache2 замість IP відвідувачів буде локальним IP 127.0.0.1
Встановіть модуль libapache2-mod-rpaf, виконавши команду:
aptitude install libapache2-mod-rpaf
був:
vi /etc/apache2/mods-enabled/rpaf.conf
<IfModule rpaf_module>
RPAFenable On
# When enabled, take the incoming X-Host header and
# update the virtualhost settings accordingly:
RPAFsethostname On
# Define which IP's are your frontend proxies that sends
# the correct X-Forwarded-For headers:
RPAFproxy_ips 127.0.0.1 ::1
# Change the header name to parse from the default
# X-Forwarded-For to something of your choice:
# RPAFheader X-Real-IP
</IfModule>сталася:
<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 ВАШ_АЙПИ_ВНУТРЕННИЙ ВАШ_АЙПИ_ВНЕШНИЙ_если сервер_наружи
</IfModule>
Встановлення та налаштування веб-сервера NGINX
Встановіть веб-сервер NGINX за допомогою виконання команди:
aptitude install nginx
Щоб швидко перевірити дійсність налаштувань, ми використовуємо команду:
nginx -t
Створіть сертифікат dhparam наступні команди:
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 chown 600 /etc/ssl/certs/dhparam.pem
Видалити вміст файлу конфігурації /etc/nginx/nginx.conf І тоді я зробив команду.
cat /dev/null > /etc/nginx/nginx.conf
Відкрийте файл /etc/nginx/nginx.conf І ми вставляємо його між коментарями:
vi /etc/nginx/nginx.conf
################################################
user www-data;
# Число рабочих процессов nginx, рекомендуется ставить по количеству процессоров/ядер на вашем сервере
worker_processes 1;
# Уменьшает число системных вызовов gettimeofday(), что приводит к увеличению производительности
timer_resolution 100ms;
# Изменяет ограничение на число используемых файлов RLIMIT_NOFILE для рабочего процесса.
worker_rlimit_nofile 8192;
# Директива задаёт приоритет рабочих процессов от -20 до 20 (отрицательное число означает более высокий приоритет).
worker_priority -5;
# Путь к логу ошибок
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 2048;
use epoll;
# multi_accept on;
}
http {
include /etc/nginx/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" "$request_time"';
access_log /var/log/nginx/access.log main;
client_max_body_size 16M;
# Включить sendfile(). Использование sendfile() экономит системные вызовы, уменьшает число копирований данных, позволяет использовать меньше физической памяти.
sendfile on;
# Разрешаем использовать TCP_CORK в Linux, что позволяет передавать заголовок ответа и начало файла в одном пакете в Linux
tcp_nopush on;
# Задаём таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера. Второй параметр задаёт значение в строке "Keep-Alive: timeout=время" в заголовке ответа.
keepalive_timeout 35 45;
types_hash_max_size 2048;
# Разрешаем использовать опцию TCP_NODELAY
tcp_nodelay on;
# Запрещаем выдавать версию nginx'а в сообщениях об ошибках и в строке заголовка ответа "Server".
server_tokens off;
# Разрешаем сжатие ответа методом gzip.
gzip on;
#Разрешаем проверку готового сжатого файла.
gzip_static on;
# Устанавливаем уровень сжатия ответа методом gzip.
gzip_comp_level 5;
# Устанавливаем минимальную длину ответа, для которых будет выполняться сжатие ответа методом gzip
gzip_min_length 1024;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_buffers 64 8k;
gzip_http_version 1.1;
gzip_proxied any;
gzip_vary on;
gzip_types
text/plain
text/css
text/x-js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
aplication/xml
application/xml+rss
application/vnd.ms-fontobject
application/x-font-ttf
font/ttf
font/opentype;
# SSL
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
# ssl_stapling on;
# ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=0;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
################################################
Ми перевіряємо помилки у файлах конфігурації сервера Nginx за наступним чином:
nginx -t
Відповідність системи при відсутності помилок:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Видалити вміст файлу конфігурації /etc/nginx/sites-enabled/default І тоді я зробив команду.
cat /dev/null > /etc/nginx/sites-enabled/default
Змінення файлу конфігурації сервера за замовчуванням Nginx, відкрити файл /etc/nginx/sites-enabled/default І вставте скопійовані між коментарями нижче:
vi /etc/nginx/sites-enabled/default
################################################
server {
listen 80 default;
server_name _;
server_name_in_redirect off;
resolver 127.0.0.1;
error_page 404 = @fallback;
# Все 404 ошибки отдаем на обработку Apache2
location @fallback {
proxy_pass http://127.0.0.1:82;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
# Статический контент отдаем на прямую
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$ {
root /var/www/$host/web;
access_log off;
expires 30d;
}
# HTML отдельно поскольку файлы могут быть динамические
location ~* ^.+\.(htm|html)$ {
root /var/www/$host/web;
#try_files $uri /index.php ;
access_log off;
expires 30d;
}
# Основной локейшен
location / {
root /var/www/$host/web;
index index.php index.html index.htm;
access_log off;
proxy_pass http://127.0.0.1:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Настройки для phpmyadmin
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
proxy_pass http://127.0.0.1:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}
# WEBMAIL если используется раскоментировать:
location /webmail {
root /var/www/apps;
index index.php index.html index.htm;
proxy_pass http://127.0.0.1:82;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~* ^/webmail/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /var/www/apps;
}
}
# AWSTATS
location ^~ /awstats-icon {
alias /usr/share/awstats/icon/;
access_log off;
}
location ^~ /awstatscss {
alias /usr/share/doc/awstats/examples/css/;
access_log off;
}
location ^~ /awstatsclasses {
alias /usr/share/doc/awstats/examples/classes/;
access_log off;
}
}
################################################
Ми перевіряємо помилки у файлах конфігурації сервера Nginx за наступним чином:
nginx -t
Відповідність системи при відсутності помилок:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Всі необхідні зміни, які ми зробили, тепер вам потрібно перезапустити як веб-сервери, так і перевірити роботу.
Перезавантажити веб-сервер Apache2, виконавши команду:
/etc/init.d/apache2 restart
Перевірити на які порти веб-сервер Apache2 висить за допомогою команди:
netstat -tunap | grep apache2
Відповідь на систему, де ми не бачимо 80 портів означає, що всі зміни 80 портів до 82 ми зробили правильно:
tcp6 0 0 :::8081 :::* LISTEN 2389/apache2 tcp6 0 0 :::82 :::* LISTEN 2389/apache2 tcp6 0 0 :::8085 :::* LISTEN 2389/apache2 tcp6 0 0 :::443 :::* LISTEN 2389/apache2
Перезавантажити веб-сервер Nginx, виконавши команду:
/etc/init.d/nginx restart
Перевірити на які порти веб-сервера Nginx висить за допомогою команди:
netstat -tunap | grep nginx
Відповідь системи, де ми бачимо 80 портів, означає, що веб-сервер налаштований і працює правильно:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2465/nginx tcp 0 0 192.168.0.1:80 192.168.0.1:33963 ESTABLISHED 2467/nginx: worker
Після того, як все вище, ми маємо сервер Nginx першим і беремо всю роботу з відвідувачами на своїх плечах, завдяки яким наш сервер може обробляти більше запитів, а також служити більшим користувачам.
Частина конфігурації сервера Nginx береться до веб-сайт.
Я був з вами. Сергій Лазаренко.
Давайте подивимося відео про переваги хорошого способу життя:



Про нас