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 | + | ============= Fast KVM VPS 2017 (Frontend Nginx 1.11.10 + Backend Apache 2.4 PHP (5/7) + VestaCP) =========== |
| 3 | - | =============fast server http://vk.cc/7BSP3h =========== |
| 3 | + | |
| 4 | - | =============Сервер берем с KVM (Kernel-based Virtual Machine)!!!! ============== |
| 4 | + | Debian 8.7 PHP 7.0.16-1 Apache 2.4.10 Nginx 1.11.10 https://habrahabr.ru/post/282554/ |
| 5 | - | =============ОС выбираем Debian 9* (php7 идет в комплекте)============== |
| 5 | + | |
| 6 | - | =============support / вопросы, пожелания, замечания просьба слать сюда 2010-10 @ mail.ru ============== |
| 6 | + | |
| 7 | - | ==================Конфиг универсален, работает по принципу поставил и забыл - один под все сайты!============== |
| 7 | + | |
| 8 | - | ================= не расчитан на перфекционистов, но легко допиливается Вами под Ваши нужды====================== |
| 8 | + | |
| 9 | - | https://archive.apache.org/dist/httpd/ |
| 9 | + | ## ab -n 10000 -c 10000 http://site.com/ (wordpress) |
| 10 | - | https://nginx.org/ru/download.html |
| 10 | + | #Document Length: 162 bytes |
| 11 | #Concurrency Level: 10000 | |
| 12 | - | ========= Current system ====================== |
| 12 | + | #Time taken for tests: 1.239 seconds |
| 13 | - | nginx/1.16.0 |
| 13 | + | |
| 14 | - | Apache/2.4.10 (Debian) |
| 14 | + | |
| 15 | #Total transferred: 3200000 bytes | |
| 16 | - | =============================================== |
| 16 | + | |
| 17 | #Requests per second: 8071.25 [#/sec] (mean) | |
| 18 | #Time per request: 1238.965 [ms] (mean) | |
| 19 | #Time per request: 0.124 [ms] (mean, across all concurrent requests) | |
| 20 | - | ## ab -r -n 10000 -c 10000 http://site.com/ |
| 20 | + | #Transfer rate: 2522.27 [Kbytes/sec] received |
| 21 | #Connection Times (ms) | |
| 22 | - | #Time taken for tests: 0.835 seconds |
| 22 | + | # min mean[+/-sd] median max |
| 23 | #~Total: 782 945 106.2 935 1132 | |
| 24 | # | |
| 25 | - | #Non-2xx responses: 10000 |
| 25 | + | =============================Инструкци по установке ( без больших и средних бубнов )=========================================================== |
| 26 | ||
| 27 | Для работы качаем https://www.bitvise.com/ssh-client-download (SSH+FTP) для полноценной работы. | |
| 28 | - | #Requests per second: 11976.08 [#/sec] (mean) |
| 28 | + | |
| 29 | - | #Time per request: 834.998 [ms] (mean) |
| 29 | + | |
| 30 | - | #Time per request: 0.083 [ms] (mean, across all concurrent requests) |
| 30 | + | |
| 31 | - | #Transfer rate: 3742.52 [Kbytes/sec] received |
| 31 | + | |
| 32 | ||
| 33 | APACHE : Файлы настроек подключений с расширением .conf в директории сервера /etc/apache2 и подпапки, если include прописан и незакоментирован в основном файле apache2.conf | |
| 34 | - | # min mean[+/-sd] median max |
| 34 | + | |
| 35 | - | #Total: 530 644 66.0 646 758 |
| 35 | + | |
| 36 | - | ################################################################################################ |
| 36 | + | |
| 37 | - | =============================Инструкция по установке ============================================ |
| 37 | + | |
| 38 | В нашем случае на сервере установлена Vesta CP. | |
| 39 | 1.Настройки сайтов расположены /home/admin/conf/web/apache2.conf (Этот путь прописан в файле vesta.conf в папке /etc/apache2/conf.d) | |
| 40 | Меняем <VirtualHost *:*> на <VirtualHost *:81> | |
| 41 | для всех указанных в нем сайтов | |
| 42 | 2. Меняем также и в шаблоне добавления сайтов, в весте | |
| 43 | В шаблонах Vesta /usr/local/vesta/data/templates/web/apache2 | |
| 44 | ||
| 45 | В файле default.tpl (Если у Вас другой, выбирайте его. Смотреть в Veste в Packages в настройках Вашего профиля) | |
| 46 | ||
| 47 | 3. В файле /etc/apache2/conf.d/*ип сервера*.conf заменяем все на: | |
| 48 | - | VPS берем тут http://vk.cc/7BSP3h (Высокое качество, низкие цены и вежливая техподдержка) |
| 48 | + | |
| 49 | Для апач 2.2* | |
| 50 | Listen 127.0.0.1:81 | |
| 51 | Listen вставить-ip-вашего-сервера:81 | |
| 52 | NameVirtualHost 127.0.0.1:81 | |
| 53 | - | 1.1. Настройки сайтов расположены /home/admin/conf/web/apache2.conf (Этот путь прописан в файле vesta.conf в папке /etc/apache2/conf.d) |
| 53 | + | |
| 54 | Listen вставить-ip-вашего-сервера:8443 | |
| 55 | ||
| 56 | - | 1.2. Меняем также и в шаблоне добавления сайтов, в весте |
| 56 | + | |
| 57 | Для апач 2.4* | |
| 58 | Listen 127.0.0.1:81 | |
| 59 | Listen вставить-ip-вашего-сервера:81 | |
| 60 | Listen вставить-ip-вашего-сервера:8443 | |
| 61 | - | 1.3. В файле /etc/apache2/conf.d/*ип сервера*.conf заменяем все на: |
| 61 | + | |
| 62 | ||
| 63 | 4. Для apache v 2.2 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального) | |
| 64 | =========================================== | |
| 65 | http://pastebin.com/36xr3gru | |
| 66 | =========================================== | |
| 67 | Для apache v 2.4 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального) | |
| 68 | =========================================== | |
| 69 | http://pastebin.com/sCs33xZA | |
| 70 | =========================================== | |
| 71 | ||
| 72 | *Если версия Apache ниже 2.2.4 ( проверить можно командой apache2 -v ) | |
| 73 | Установка модуля RPAF ( | |
| 74 | ||
| 75 | Т.к. теперь все запросы к Apache приходят не от удалённых клиентов, а от Nginx, то в итоге IP-адрес клиента Apache определяет как локальный (127.0.0.1). Для решения этой проблемы нам нужен модуль RPAF. Он берет тело заголовка X-Forwarded-For, присланного от фронтенда (Nginx) и заменяет значение заголовка REMOTE_ADDR на бекенде (Apache). | |
| 76 | - | 1.4. В /etc/apache2/mods-enabled очисть конфиги, если они там есть файлы *prefork.conf |
| 76 | + | |
| 77 | В Debian или Ubuntu установка и включение модуля RPAF в Apache выполняется следующими командами: | |
| 78 | - | 1.5. Для apache v 2.2 Файл /etc/apache2/apache2.conf Выглядит так . Заменям/дополняем свой (не забыв сохранить содержимое начального) |
| 78 | + | |
| 79 | a2enmod rpaf | |
| 80 | ||
| 81 | Настройка модуля RPAF | |
| 82 | Файл конфигурации RPAF находится: | |
| 83 | Debian/Ubuntu: /etc/apache2/mods-enabled/rpaf.conf | |
| 84 | ||
| 85 | Он должен содержать следующие строки: | |
| 86 | # | |
| 87 | - | *Если версия Apache ниже 2.4 ( проверить можно командой apache2 -v ) |
| 87 | + | |
| 88 | RPAFsethostname Off | |
| 89 | RPAFproxy_ips 127.0.0.1 | |
| 90 | RPAFheader X-Real-IP | |
| 91 | # | |
| 92 | ||
| 93 | *Если версия Apache 2.2.4 =========================Изменения https://httpd.apache.org/docs/2.4/upgrading.html | |
| 94 | ||
| 95 | Apache начиная с версии 2.2.4 НЕ поддерживает mod_rpaf поэтому для отображения реальных ип делаем следующее. | |
| 96 | a2enmod remoteip | |
| 97 | nano /etc/apache2/conf-available/remoteip.conf | |
| 98 | Вписываем строчки в файл remoteip.conf | |
| 99 | RemoteIPHeader X-Forwarded-For | |
| 100 | RemoteIPTrustedProxy 127.0.0.1 | |
| 101 | Далее снова пишем в консоли | |
| 102 | a2enconf remoteip | |
| 103 | Редактируем /etc/apache2/apache2.conf | |
| 104 | Меняем | |
| 105 | LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
| |
| 106 | на | |
| 107 | LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
| |
| 108 | - | *Если версия Apache 2.4 =========================Изменения https://httpd.apache.org/docs/2.4/upgrading.html |
| 108 | + | |
| 109 | /etc/init.d/apache2 restart | |
| 110 | - | !!!!!!!===>>>Apache начиная с версии 2.4 НЕ поддерживает mod_rpaf поэтому для отображения реальных ип делаем следующее. |
| 110 | + | |
| 111 | ||
| 112 | #### 2. Настраиваем Nginx########## | |
| 113 | Узнать текущую версию: | |
| 114 | nginx -v | |
| 115 | - | RemoteIPHeader X-Forwarded-For |
| 115 | + | Обновление если надо (лучше обновить!) http://nginx.org/en/linux_packages.html#mainline http://artana.ru/blog/all/obnovlenie-nginx-do-posledney-versii-debian/ |
| 116 | - | RemoteIPTrustedProxy 127.0.0.1 |
| 116 | + | Полная информация о дистрибутиве операционки для выбора Codename при обновлении: |
| 117 | lsb_release -a | |
| 118 | ||
| 119 | Файл настройки http://pastebin.com/aRLRiYwu заменить на свой /etc/nginx/nginx.conf . (Прописать там свой ипшник в раздел upstream B) | |
| 120 | ======================================================= | |
| 121 | Не забываем создать соответствующие каталоги командами: | |
| 122 | ||
| 123 | mkdir -p /var/lib/nginx/cache | |
| 124 | chown -R www-data /var/lib/nginx/cache | |
| 125 | chmod 700 /var/lib/nginx/cache | |
| 126 | ||
| 127 | ======================================================= | |
| 128 | !!!!!!!!!!!!!!!! В настройках указан режим reuseport, он требует ядро линкса от версии 3.9 (Устанавливаем сами или просим ТП хостинга установить) | |
| 129 | - | #### 2. Настраиваем Nginx http://pastebin.com/aRLRiYwu ########## |
| 129 | + | Команада показать версию ядра |
| 130 | uname -r | |
| 131 | Полная инфа о системе | |
| 132 | - | Обновление если надо (лучше обновить!) |
| 132 | + | |
| 133 | - | Вариант 1 https://nginx.org/ru/linux_packages.html#Debian |
| 133 | + | |
| 134 | - | Вариант 2 https://myhosti.pro/faq/adminos/web/nginx/obnovlenie-nginx-do-poslednei-versii |
| 134 | + | |
| 135 | - | (Если надо)Полная информация о дистрибутиве операционки для выбора Codename при обновлении: |
| 135 | + | меняем |
| 136 | listen 80 reuseport; | |
| 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 | + | По иструкции https://codebeer.ru/obnovlenie-yadra-debian/ , после apt-get update |
| 143 | - | mkdir -p /var/lib/nginx/proxy; chown -R www-data /var/lib/nginx/proxy; chmod 700 /var/lib/nginx/proxy; |
| 143 | + | |
| 144 | apt-get install -t jessie-backports linux-image-4.9.0-0.bpo.1-amd64 | |
| 145 | update-grub | |
| 146 | - | Дополнительно: помещаем кеш nginx в ramdisk (tmpfs) |
| 146 | + | |
| 147 | - | Сейчас у нас кеширование настроено, но кеш хранится на жестком диске, что не является хорошим решение. |
| 147 | + | |
| 148 | - | Оптимальнее будет смонтировать директорию с кешем nginx в память. |
| 148 | + | |
| 149 | - | Для этого откроем |
| 149 | + | |
| 150 | - | nano /etc/fstab |
| 150 | + | !!!!Важный момент, снимаем лимиты (Проверка командой ulimit -n ) |
| 151 | - | и добавим туда: |
| 151 | + | В конец файла (где root - имя пользователя от которого работает апач) |
| 152 | - | tmpfs /var/lib/nginx/cache tmpfs nodev,nosuid,noexec,nodiratime,size=20M 0 0 |
| 152 | + | /etc/security/limits.conf |
| 153 | - | Если в настройках nginx вы указали больший размер кеша, то параметр size необходимо изменить в соответствии с указанным размером кеша (max_size), плюс небольшой запас. |
| 153 | + | |
| 154 | - | Сразу смонтируем директорию в память: |
| 154 | + | |
| 155 | - | sudo mount -a |
| 155 | + | |
| 156 | * soft nofile 65536 | |
| 157 | - | Теперь при каждой загрузке системы, директория /var/lib/nginx/cache будет помещаться в память, что должно уменьшить время отдачи страницы. |
| 157 | + | |
| 158 | root soft nofile 65536 | |
| 159 | root hard nofile 65536 | |
| 160 | - | !!!!!!!!!!!!!!!! В настройках указан режим reuseport, он требует ядро линукса от версии 3.9 (Устанавливаем сами или просим ТП хостинга установить) |
| 160 | + | |
| 161 | - | Команда показать версию ядра |
| 161 | + | |
| 162 | 1.В файле php.ini /etc/php/7.0/apache2 | |
| 163 | memory_limit = 36M | |
| 164 | short_open_tag = On | |
| 165 | realpath_cache_size=16M | |
| 166 | realpath_cache_ttl=1200 | |
| 167 | - | меняем в конфиге nginx |
| 167 | + | |
| 168 | session.auto_start = 0 | |
| 169 | ||
| 170 | 1.1 Файл подкачки | |
| 171 | www.youtube.com/watch?v=IYmYiAiFUN0 | |
| 172 | #Подкачка как расширение памяти на VPS с SSD | |
| 173 | #установка | |
| 174 | - | По инструкции https://codebeer.ru/obnovlenie-yadra-debian/ , после apt-get update |
| 174 | + | fallocate -l 1G /swapfile |
| 175 | chmod 0600 /swapfile | |
| 176 | mkswap /swapfile | |
| 177 | swapon /swapfile | |
| 178 | #свободное место | |
| 179 | df -h | |
| 180 | #В файл | |
| 181 | vim /etc/fstab | |
| 182 | #добавить строку для автозагрузки свапа | |
| 183 | - | 4.1. !!!!--->>> Очистка и перезагрузка сервера ежедневно https://pastebin.com/w8aVmx9w |
| 183 | + | |
| 184 | ||
| 185 | 2.Для простого редактирования всего этого дела есть отличная утилитка –sysv-rc-conf, которая хоть и выполнена в текстовом виде, но очень удобна для этих целей. | |
| 186 | - | !!!!Важный момент, снимаем лимиты (Проверка командой ulimit -n (1024 изначально)) |
| 186 | + | |
| 187 | - | В конец файла (/etc/security/limits.conf) |
| 187 | + | |
| 188 | - | nano /etc/security/limits.conf |
| 188 | + | |
| 189 | - | добавить строки (где www-data - имя пользователя от которого работает апач) |
| 189 | + | |
| 190 | ||
| 191 | Или можно отключить все не нужное в весте | |
| 192 | https://ваш ип:8083/list/server/ | |
| 193 | ||
| 194 | 3.Ковыряем системные переменные, защищаемся от некоторых видов атак | |
| 195 | - | www-data soft nofile 65536 |
| 195 | + | |
| 196 | - | www-data hard nofile 65536 |
| 196 | + | |
| 197 | ||
| 198 | Дописываем в конец | |
| 199 | ========================= | |
| 200 | # Защита от smurf-атак | |
| 201 | - | 4.2. В файле php.ini /etc/php/7.0/apache2 |
| 201 | + | |
| 202 | - | memory_limit = 128M |
| 202 | + | |
| 203 | net.ipv4.icmp_ignore_bogus_error_responses = 1 | |
| 204 | # Защита от SYN-флуда | |
| 205 | net.ipv4.tcp_syncookies = 1 | |
| 206 | # Запрещаем маршрутизацию от источника | |
| 207 | net.ipv4.conf.all.accept_source_route = 0 | |
| 208 | - | output_buffering = On |
| 208 | + | |
| 209 | # Защита от спуфинга | |
| 210 | - | 4.3. Файл подкачки |
| 210 | + | |
| 211 | net.ipv4.conf.default.rp_filter = 1 | |
| 212 | # Мы не маршрутизатор, если конечно это так | |
| 213 | - | #установка (В данном случае это 200 Мегабайт) |
| 213 | + | |
| 214 | - | fallocate -l 200M /swapfile |
| 214 | + | |
| 215 | net.ipv4.conf.default.send_redirects = 0 | |
| 216 | # Включаем ExecShield при атаках направленных на переполнение буфера или срыв стэка | |
| 217 | kernel.exec-shield = 1 | |
| 218 | - | #Смотрим свободное место |
| 218 | + | |
| 219 | # Расширяем диапазон доступных портов | |
| 220 | net.ipv4.ip_local_port_range = 2000 65000 | |
| 221 | - | nano /etc/fstab |
| 221 | + | |
| 222 | net.ipv4.tcp_rmem = 4096 87380 8388608 | |
| 223 | net.ipv4.tcp_wmem = 4096 87380 8388608 | |
| 224 | net.core.rmem_max = 8388608 | |
| 225 | - | 4.4. Оптимизация кеширования http://tolstiyman.blogspot.ru/2013/08/overcommit.html |
| 225 | + | |
| 226 | net.core.netdev_max_backlog = 5000 | |
| 227 | - | В файл конец /etc/sysctl.conf вставить |
| 227 | + | |
| 228 | ||
| 229 | - | #Пишем в buffers/cache при <=10% свободной RAM памяти (Дефолт 60!) |
| 229 | + | #ускоряем высвобождение памяти(см. "Ускоряем общую работу системы") |
| 230 | - | vm.swappiness = 10 |
| 230 | + | vm.swappiness=10 |
| 231 | ======================= | |
| 232 | ||
| 233 | - | <--!Если больше 1Gb RAM--> |
| 233 | + | |
| 234 | - | В консоли: |
| 234 | + | 4.Ускоряем общую работу системы |
| 235 | ||
| 236 | - | echo 2 > /proc/sys/vm/overcommit_memory |
| 236 | + | Prelink и Preload. Prelink для создание статичных адресов библиотек, Preload это небольшое приложение, которое следит за файлами наиболее часто используемых приложений, и загружает их в память, когда система простаивает. |
| 237 | - | echo 80 > /proc/sys/vm/overcommit_ratio |
| 237 | + | |
| 238 | apt-get -y install prelink | |
| 239 | - | В файл конец /etc/sysctl.conf вставить еще строки |
| 239 | + | |
| 240 | Редактируем файл /etc/default/prelink: | |
| 241 | - | #по-умолчанию равно 50 |
| 241 | + | |
| 242 | - | vm.overcommit_ratio = 80 |
| 242 | + | |
| 243 | - | #В этом случае допустимый объем пространства памяти будет swap+ram*overcommit_ratio/100 |
| 243 | + | |
| 244 | - | vm.overcommit_memory = 2 |
| 244 | + | |
| 245 | /etc/cron.daily/prelink | |
| 246 | ||
| 247 | 2.Установка Preload: | |
| 248 | - | 4.5. Для настройки запуска служб есть отличная утилитка –sysv-rc-conf, которая хоть и выполнена в текстовом виде, |
| 248 | + | |
| 249 | - | но очень удобна для этих целей. |
| 249 | + | |
| 250 | Все, больше ничего не требуется | |
| 251 | ||
| 252 | Завершение настройки (перезапуск сервисов) | |
| 253 | service nginx restart; service apache2 restart; reboot; | |
| 254 | ||
| 255 | Теперь связка работает, Nginx обрабатывает статичные данные, Apache - динамические. | |
| 256 | ||
| 257 | ||
| 258 | - | 4.6. Ковыряем системные переменные, защищаемся от некоторых видов атак (Не обязательно) |
| 258 | + | |
| 259 | ||
| 260 | Увеличиваем производительность с помощью SO_REUSEPORT в NGINX 1.9.1 | |
| 261 | https://habrahabr.ru/post/259403/ | |
| 262 | ||
| 263 | Разбираемся в HTTP прокси NGINX, балансировке нагрузки, буферизации и кешировании | |
| 264 | http://devacademy.ru/posts/razbiraemsya-v-http-proksi-nginx-balansirovke-nagruzki-buferizatsii-i-keshirovanii/ | |
| 265 | ||
| 266 | Прокачка debian/ubuntu сервера для маленьких | |
| 267 | https://habrahabr.ru/post/186362/ | |
| 268 | ||
| 269 | Прозрачное кэширование в nginx для всех и каждого | |
| 270 | https://habrahabr.ru/post/124684/ | |
| 271 | ||
| 272 | Динамические виртуальные хосты (dynamic vhost) в nginx | |
| 273 | https://the-bosha.ru/2013/11/08/dinamicheskie-virtualnyie-hostyi-dynamic-vhost-v-nginx/ | |
| 274 | ||
| 275 | Установка и настройка связки Nginx+Apache | |
| 276 | http://lib.clodo.ru/web-Сервер/webserver-lna.html | |
| 277 | ||
| 278 | Настройка сервера Debian 7 + nginx + apache | |
| 279 | http://desome.net/nastrojka-servera-nginx-apache.html | |
| 280 | http://desome.net/nastrojka-servera-debian-7-nginx-apache-chast-2.html |