View difference between Paste ID: PEr1yxfL and v0VKjKXW
SHOW: | | - or go back to the newest paste.
1
##############################################################################
2-
=============Frontend Nginx >=1.12.2 + Backend Apache ~2.4 PHP (5/7) + VestaCP) === 01.17.2020
2+
3-
=============fast server http://vk.cc/7BSP3h ===========
3+
=============Fast server KVM VPS 2018 (Frontend Nginx >=1.12.2 + Backend Apache ~2.4 PHP (5/7) + VestaCP) ===
4-
=============Сервер берем с KVM (Kernel-based Virtual Machine)!!!! ==============
4+
=============fast server http://vk.cc/5VDdBb ===========
5-
=============ОС выбираем Debian 9* (php7 идет в комплекте)==============
5+
=============update 01.12.2017 support / вопросы, пожелания, замечания просьба слать сюда 2010-10 @ mail.ru ==============
6-
=============support / вопросы, пожелания, замечания просьба слать сюда 2010-10 @ mail.ru ==============
6+
7-
==================Конфиг универсален, работает по принципу поставил и забыл - один под все сайты!==============
7+
Debian 8.7 PHP 7.0.16-1 Apache 2.4.10 Nginx 1.12.2 https://habrahabr.ru/post/282554/
8-
================= не расчитан на перфекционистов, но легко допиливается Вами под Ваши нужды======================
8+
9-
https://archive.apache.org/dist/httpd/
9+
10-
https://nginx.org/ru/download.html
10+
11
#  Test VPS !KVM  1x1024RAM 20Gb SSD
12-
========= Current system ======================
12+
13-
nginx/1.16.0
13+
14-
Apache/2.4.10 (Debian)
14+
15
#Complete requests:      10000
16-
===============================================
16+
17
#Non-2xx responses:      10000
18
#Total transferred:      3200000 bytes
19
#HTML transferred:       1620000 bytes
20
#Requests per second:    11976.08 [#/sec] (mean)
21
#Time per request:       834.998 [ms] (mean)
22
#Time per request:       0.083 [ms] (mean, across all concurrent requests)
23
#Transfer rate:          3742.52 [Kbytes/sec] received
24
#
25
#Connection Times (ms)
26
#              min  mean[+/-sd] median   max
27
#Total:        530  644  66.0    646     758
28
################################################################################################
29
30
=============================Инструкция по установке ===========================================================
31
32
Для работы качаем https://www.bitvise.com/ssh-client-download  (SSH+FTP) для полноценной работы.
33
34
Условимся, что nginx будет слушать 80 порты, а перекидывать будет на 81 порт, который и будет слушать apache.
35
36
Установка php 7 на Debian (если надо) https://rusadmin.biz/web-server/ustanovka-php-7-0-5-na-debian/
37-
=============================Инструкция по установке ============================================
37+
38
APACHE : Файлы настроек подключений с расширением .conf в директории сервера /etc/apache2 и подпапки, если include прописан и незакоментирован в основном файле apache2.conf
39
NGNIX  : Файлы настроек подключений с расширением .conf в директории сервера /etc/nginx и подпапки, если include прописан и незакоментирован в основном файле nginx.conf
40
41
VPS берем тут http://vk.cc/5VDdBb (Высокое качество, низкие цены и вежливая техподдержка)
42
43
#### 1.  Настраиваем APACHE ##########
44
45
В нашем случае на сервере установлена Vesta CP.
46
1.Настройки сайтов расположены /home/admin/conf/web/apache2.conf (Этот путь прописан в файле vesta.conf в папке /etc/apache2/conf.d)
47
Меняем <VirtualHost *:*>  на <VirtualHost *:81>
48-
VPS берем тут http://vk.cc/7BSP3h (Высокое качество, низкие цены и вежливая техподдержка)
48+
49
2. Меняем также и в шаблоне добавления сайтов, в весте 
50
В шаблонах Vesta  /usr/local/vesta/data/templates/web/apache2
51
52
В файле default.tpl  (Если у Вас другой, выбирайте его. Смотреть в Veste в Packages в настройках Вашего профиля)
53-
1.1. Настройки сайтов расположены /home/admin/conf/web/apache2.conf (Этот путь прописан в файле vesta.conf в папке /etc/apache2/conf.d)
53+
54
3. В файле /etc/apache2/conf.d/*ип сервера*.conf заменяем все на:
55
56-
1.2. Меняем также и в шаблоне добавления сайтов, в весте 
56+
57
Listen 127.0.0.1:81
58
Listen вставить-ip-вашего-сервера:81
59
NameVirtualHost 127.0.0.1:81
60
NameVirtualHost вставить-ip-вашего-сервера:81
61-
1.3. В файле /etc/apache2/conf.d/*ип сервера*.conf заменяем все на:
61+
62
63
64
Для апач 2.4*
65
Listen 127.0.0.1:81
66
Listen вставить-ip-вашего-сервера:81
67
Listen вставить-ip-вашего-сервера:8443
68
69
3.1. В /etc/apache2/mods-enabled  очисть конфиги, если они там есть файлы    *prefork.conf
70
71
4. Для apache v 2.2 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального)
72
===========================================
73
http://pastebin.com/36xr3gru
74
===========================================
75
 Для apache v 2.4 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального)
76-
1.4. В /etc/apache2/mods-enabled  очисть конфиги, если они там есть файлы    *prefork.conf
76+
77
http://pastebin.com/sCs33xZA
78-
1.5. Для apache v 2.2 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального)
78+
79
80
*Если версия Apache ниже 2.4  ( проверить можно командой apache2 -v  )
81
Установка модуля RPAF (
82
83
Т.к. теперь все запросы к Apache приходят не от удалённых клиентов, а от Nginx, то в итоге IP-адрес клиента Apache определяет как локальный (127.0.0.1). Для решения этой проблемы нам нужен модуль RPAF. Он берет тело заголовка X-Forwarded-For, присланного от фронтенда (Nginx) и заменяет значение заголовка REMOTE_ADDR на бекенде (Apache).
84
85
В Debian или Ubuntu установка и включение модуля RPAF в Apache выполняется следующими командами:
86
apt-get install libapache2-mod-rpaf
87
a2enmod rpaf
88
89
Настройка модуля RPAF
90
Файл конфигурации RPAF находится:
91
Debian/Ubuntu: /etc/apache2/mods-enabled/rpaf.conf
92
93
Он должен содержать следующие строки:
94
#
95
RPAFenable On
96
RPAFsethostname Off
97
RPAFproxy_ips 127.0.0.1
98
RPAFheader X-Real-IP
99
#
100
	
101
*Если версия Apache 2.4 =========================Изменения https://httpd.apache.org/docs/2.4/upgrading.html
102
	
103
Apache начиная с версии 2.4 НЕ поддерживает mod_rpaf поэтому для отображения реальных ип делаем следующее.
104
  	a2enmod remoteip
105
	nano /etc/apache2/conf-available/remoteip.conf
106
Вписываем строчки в файл remoteip.conf
107
108
RemoteIPHeader X-Forwarded-For
109
RemoteIPTrustedProxy 127.0.0.1
110-
!!!!!!!===>>>Apache начиная с версии 2.4 НЕ поддерживает mod_rpaf поэтому для отображения реальных ип делаем следующее.
110+
111
Далее снова пишем в консоли
112
	a2enconf remoteip
113
Редактируем /etc/apache2/apache2.conf
114
Меняем
115
	LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
116
на
117
	LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
118
Применяем и смотрим результат
119
   /etc/init.d/apache2 restart
120
   
121
  
122
#### 2.  Настраиваем Nginx##########	
123
Узнать текущую версию:
124
nginx -v 
125
Обновление если надо (лучше обновить!) http://nginx.org/en/linux_packages.html#mainline   http://artana.ru/blog/all/obnovlenie-nginx-do-posledney-versii-debian/
126
Полная информация о дистрибутиве операционки для выбора Codename при обновлении:
127
lsb_release -a
128
129-
#### 2.  Настраиваем Nginx  http://pastebin.com/aRLRiYwu ##########	
129+
Файл настройки  http://pastebin.com/aRLRiYwu заменить на свой /etc/nginx/nginx.conf .  (Прописать там свой ипшник в раздел upstream B)
130
=======================================================
131
Не забываем создать соответствующие каталоги командами: (где root , имя пользователя)
132-
Обновление если надо (лучше обновить!) 
132+
133-
Вариант 1 https://nginx.org/ru/linux_packages.html#Debian  
133+
mkdir -p  /var/lib/nginx/cache
134-
Вариант 2 https://myhosti.pro/faq/adminos/web/nginx/obnovlenie-nginx-do-poslednei-versii
134+
chown -R root /var/lib/nginx/cache
135-
(Если надо)Полная информация о дистрибутиве операционки для выбора Codename при обновлении:
135+
chmod 700 /var/lib/nginx/cache
136
137
=======================================================
138-
Файл настройки NGINGX  http://pastebin.com/aRLRiYwu заменить на свой /etc/nginx/nginx.conf .  (Прописать в нем свой IP SERVER  <<<===!!!! )
138+
139
Сейчас у нас кеширование настроено, но кеш хранится на жестком диске, что не является хорошим решение.
140-
Не забываем создать соответствующие каталоги командами: (где www-data , имя пользователя)
140+
141
Для этого откроем 
142-
mkdir -p /var/lib/nginx/cache; chown -R www-data /var/lib/nginx/cache; chmod 700 /var/lib/nginx/cache;
142+
143-
mkdir -p /var/lib/nginx/proxy; chown -R www-data /var/lib/nginx/proxy; chmod 700 /var/lib/nginx/proxy;
143+
144
tmpfs /var/lib/nginx/cache tmpfs nodev,nosuid,size=20M 0 0
145
Если в настройках nginx вы указали больший размер кеша, то параметр size необходимо изменить в соответствии с указанным размером кеша (max_size), плюс небольшой запас.
146
Сразу смонтируем директорию в память:
147
sudo mount -a 
148
service nginx restart; service apache2 restart; reboot;
149
Теперь при каждой загрузке системы, директория /var/lib/nginx/cache будет помещаться в память, что должно уменьшить время отдачи страницы.
150
151
=======================================================
152-
tmpfs /var/lib/nginx/cache tmpfs nodev,nosuid,noexec,nodiratime,size=20M 0 0
152+
153
Команда показать версию ядра
154
uname -r
155
Полная инфа о системе
156
uname -a 
157
158
Eсли версия ядра ниже и не будем его использовать, то 
159
меняем  в конфиге nginx
160
listen 80 reuseport; 
161
на 
162
listen 80;
163
 
164
#### 3.  Обновления Ядра Linux для !KVM (OpenVZ не поддерживает) (Времени занимает 10 мин) ( пропускаем если не будем обновлять ядро)##############################################
165
Желательно с прямыми ручонками своими, и не обливая клаву кофем )
166
По инструкции https://codebeer.ru/obnovlenie-yadra-debian/ , после apt-get update
167
apt-get install -t jessie-backports linux-headers-4.9.0-0.bpo.1-amd64
168
apt-get install -t jessie-backports linux-image-4.9.0-0.bpo.1-amd64
169
update-grub
170
reboot
171
======================
172
173
#### 4. Быстродействие системы ##########
174
175
4.0 !!!!--->>>  Очистка и перезагрузка сервера https://pastebin.com/w8aVmx9w
176
177
178
!!!!Важный момент, снимаем лимиты (Проверка командой ulimit -n       (1024 изначально))
179
В конец файла (/etc/security/limits.conf)
180
nano /etc/security/limits.conf  
181
добавить строки (где root - имя пользователя от которого работает апач)
182
183-
4.1. !!!!--->>>  Очистка и перезагрузка сервера ежедневно https://pastebin.com/w8aVmx9w
183+
184
* hard nproc 65535
185
* soft nofile 65536 
186
* hard nofile 65536
187
root soft nofile 65536 
188
root hard nofile 65536
189-
добавить строки (где www-data - имя пользователя от которого работает апач)
189+
190
191
1.В файле php.ini  /etc/php/7.0/apache2
192
memory_limit = 128M
193
short_open_tag = On
194
realpath_cache_size=16M
195-
www-data soft nofile 65536 
195+
196-
www-data hard nofile 65536
196+
197
session.auto_start = 0
198
output_buffering = On
199
200
1.1 Файл подкачки
201-
4.2. В файле php.ini  /etc/php/7.0/apache2
201+
202
#Подкачка как расширение памяти на VPS с SSD
203
#установка (В данном случае это 200 Мегабайт)
204
fallocate -l 200M /swapfile 
205
chmod 0600 /swapfile
206
mkswap /swapfile
207
swapon /swapfile
208
#Смотрим свободное место
209
df -h    
210-
4.3. Файл подкачки
210+
211
nano /etc/fstab   
212
#добавить строку для автозагрузки свапа
213
/swapfile       none            swap    sw              0       0
214
215
1.2 Оптимизация кеширования http://tolstiyman.blogspot.ru/2013/08/overcommit.html
216
217
В файл конец /etc/sysctl.conf вставить 
218
219
#Пишем в buffers/cache при <=10% свободной RAM памяти (Дефолт 60!)
220
vm.swappiness = 10
221
222
223
<--!Если больше 1Gb RAM-->
224
В консоли:
225-
4.4. Оптимизация кеширования http://tolstiyman.blogspot.ru/2013/08/overcommit.html
225+
226
echo 2 > /proc/sys/vm/overcommit_memory
227
echo 80 > /proc/sys/vm/overcommit_ratio
228
229
В файл конец /etc/sysctl.conf вставить  еще строки
230
231
#по-умолчанию равно 50
232
vm.overcommit_ratio = 80
233
#В этом случае допустимый объем пространства памяти будет swap+ram*overcommit_ratio/100 
234
vm.overcommit_memory = 2
235
236
237
238
2.Для настройки запуска служб есть отличная утилитка –sysv-rc-conf, которая хоть и выполнена в текстовом виде, 
239
но очень удобна для этих целей.
240
В официальном репозитории Debian она есть. В репозитории Ubuntu, кстати, тоже есть. 
241
Для ее установки выполняем команду:
242
apt-get install sysv-rc-conf
243
http://adminway.ru/avtozagruzka-v-debian
244
245
Или можно отключить все не нужное в весте 
246
https://ваш ип:8083/list/server/
247
248-
4.5. Для настройки запуска служб есть отличная утилитка –sysv-rc-conf, которая хоть и выполнена в текстовом виде, 
248+
3.Ковыряем системные переменные, защищаемся от некоторых видов атак (Не обязательно)
249
Редактируем /etc/sysctl.conf
250
nano /etc/sysctl.conf
251
252
Дописываем в конец
253
=========================
254
255
# Защита от smurf-атак
256
net.ipv4.icmp_echo_ignore_broadcasts = 1
257
# Защита от неправильных ICMP-сообщений
258-
4.6. Ковыряем системные переменные, защищаемся от некоторых видов атак (Не обязательно)
258+
259
# Защита от SYN-флуда
260
net.ipv4.tcp_syncookies = 1
261
# Запрещаем маршрутизацию от источника
262
net.ipv4.conf.all.accept_source_route = 0
263
net.ipv4.conf.default.accept_source_route = 0
264
# Защита от спуфинга
265
net.ipv4.conf.all.rp_filter = 1
266
net.ipv4.conf.default.rp_filter = 1
267
# Мы не маршрутизатор, если конечно это так
268
net.ipv4.ip_forward = 0
269
net.ipv4.conf.all.send_redirects = 0
270
net.ipv4.conf.default.send_redirects = 0
271
# Включаем ExecShield при атаках направленных на переполнение буфера или срыв стэка
272
kernel.exec-shield = 1
273
kernel.randomize_va_space = 1
274
# Расширяем диапазон доступных портов
275
net.ipv4.ip_local_port_range = 2000 65000
276
# Увеличиваем максимальный размер TCP-буферов
277
net.ipv4.tcp_rmem = 4096 87380 8388608
278
net.ipv4.tcp_wmem = 4096 87380 8388608
279
net.core.rmem_max = 8388608
280
net.core.wmem_max = 8388608
281
net.core.netdev_max_backlog = 5000
282
net.ipv4.tcp_window_scaling = 1
283
284
=======================
285
286
4.Ускоряем общую работу системы (Не обязательно)
287
288
Prelink и Preload. 
289
Prelink для создание статичных адресов библиотек, Preload это небольшое приложение, которое следит за файлами наиболее часто используемых приложений, и загружает их в память, когда система простаивает.
290
1. Установка Prelink:
291
apt-get -y install prelink
292
293
Редактируем файл /etc/default/prelink:
294
nano /etc/default/prelink
295
296-
4.7. Ускоряем общую работу системы (Не обязательно)
296+
297
Запускаем:
298
/etc/cron.daily/prelink
299
300
2.Установка Preload:
301
apt-get -y install preload
302
303
Все, больше ничего не требуется
304
305
Завершение настройки (перезапуск сервисов)
306
service nginx restart; service apache2 restart; reboot;
307
308
Теперь связка работает, Nginx обрабатывает статичные данные, Apache - динамические.
309
310
311
===========Cписок используемой литературы======================
312
Кеширование в nginx - один из лучших мануалов
313
https://syrog.ru/?p=314
314
315
Увеличиваем производительность с помощью SO_REUSEPORT в NGINX 1.9.1
316
https://habrahabr.ru/post/259403/
317
318
Разбираемся в HTTP прокси NGINX, балансировке нагрузки, буферизации и кешировании
319
http://devacademy.ru/posts/razbiraemsya-v-http-proksi-nginx-balansirovke-nagruzki-buferizatsii-i-keshirovanii/
320
321
Оптимизируем VPS за 5$ (512MB RAM / 1 CPU) так, что сайт на wordpress выдерживает нагрузку в 42,735,587 хитов в день 
322
https://habrahabr.ru/post/242011/
323-
Инструкции по настройке обратного прокси-сервера Nginx, Apache и WordPress
323+
324-
https://andreyex.ru/operacionnaya-sistema-linux/instrukcii-po-nastrojke-obratnogo-proksi-servera-nginx-dlya-apache-i-kesha-wordpress/
324+
325
https://habrahabr.ru/post/186362/
326
327
Прозрачное кеширование в nginx для всех и каждого
328
https://habrahabr.ru/post/124684/
329
330
Динамические виртуальные хосты (dynamic vhost) в nginx
331
https://the-bosha.ru/2013/11/08/dinamicheskie-virtualnyie-hostyi-dynamic-vhost-v-nginx/
332
333
Установка и настройка связки Nginx+Apache
334
http://lib.clodo.ru/web-Сервер/webserver-lna.html
335
336
Настройка сервера Debian 7 + nginx + apache
337
http://desome.net/nastrojka-servera-nginx-apache.html
338
http://desome.net/nastrojka-servera-debian-7-nginx-apache-chast-2.html