From 2f72298a19320abbe45c550d31686fcb4a0e6430 Mon Sep 17 00:00:00 2001 From: erjemin Date: Fri, 3 Apr 2026 12:27:25 +0300 Subject: [PATCH] Sanitize deployment docs --- deploy_to_dreamhost.md | 21 ++++++++++----------- deploy_to_masterhost-vm.md | 35 +++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/deploy_to_dreamhost.md b/deploy_to_dreamhost.md index 566c064..903d1d1 100644 --- a/deploy_to_dreamhost.md +++ b/deploy_to_dreamhost.md @@ -11,7 +11,7 @@ 7. Сконфигурируем будущую компиляцию на размещение готовой версии Python в папку `~/opt/python-3.8.6` 8. Компилируем Python (в том числе будут запущены тесты) 9. Устанавливаем Python 3.8.6 - +Контакт для уведомлений: ``` cd ~ @@ -25,7 +25,7 @@ make make install ``` -В результате установлена нужная нам версия python установлена в папку `~/opt/python-3.8.6` (`/home//opt/python-3.8.6`) +В результате установлена нужная нам версия python установлена в папку `~/` (`/home//opt/python-3.8.6`) Теперь нужно назначить эту версию как `system default`, добавив к переменной `$PATH` (временно): @@ -34,7 +34,7 @@ export PATH=$HOME/opt/python-3.8.6/bin:$PATH ``` ------------------------------ -_Также можно добавить эту строку в файл `.bashrc` и/или `.bash_profile` в домашней директории `/home/.` Это нужно, чтобы сделать так, чтобы этот python всегда заменял версию которая есть на сервере._ +_Также можно добавить эту строку в файл `.bashrc` и/или `.bash_profile` в домашней директории `/home/`. Это нужно, чтобы сделать так, чтобы этот python всегда заменял версию которая есть на сервере._ ------------------------------- @@ -59,16 +59,16 @@ python ~/tmp/get-pip.py pip3 install virtualenv ``` -Через панель управления хостингом __Domains -> Manage Domains -> Add Hosting to a Domain/Sub-Domain__ создадим поддомен __cadpoint.ru__ (без создания нового пользователя). В нашем домашнем каталоге будет создана папка `cadpoint.ru`. В этой папке будет лежать `passenger_wsgi.py`, также есть папка `public` в которой будут лежать статичные файлы не требующие обработки CGI (media, static и пр.) +Через панель управления хостингом __Domains -> Manage Domains -> Add Hosting to a Domain/Sub-Domain__ создадим поддомен __cadpoint.ru__ (без создания нового пользователя). В нашем домашнем каталоге будет создана папка `~/`. В этой папке будет лежать `passenger_wsgi.py`, также есть папка `public` в которой будут лежать статичные файлы не требующие обработки CGI (media, static и пр.) -Теперь создадим виртуальное окружение в папке нашего сайта (`$HOME/cadpoint.ru`): +Теперь создадим виртуальное окружение в папке нашего сайта (`$HOME/`): ``` -virtualenv -p python3 $HOME/cadpoint.ru/env +virtualenv -p python3 $HOME//env ``` Активируем созданное виртуальное окружение: ``` -source $HOME/cadpoint.ru/env/bin/activate +source $HOME//env/bin/activate ``` Проверить, что теперь мы работаем в виртуальном окружении можно дав команды: @@ -138,7 +138,7 @@ python -c "import django; print(django.get_version())" Далее нам надо скопировать статические файлы админки Django в папку статических файлов хостинга: ``` -cd ~/cadpoint.ru/dicquo +cd ~//dicquo python manage.py collectstatic ``` @@ -147,10 +147,10 @@ python manage.py collectstatic Для исполнения Python на хостинге DreamHost используется CGI-механизм Passenger. Чтобы его настроить для нашего проекта в папке сайта `~/cadpoint.ru` нужно разметить файл `passenger_wsgi.py` следующего содержания ([см. документацию DreamHost](https://help.dreamhost.com/hc/en-us/articles/360002341572-Creating-a-Django-project)): ```python -#!/home//cadpoint.ru/env/bin/python3 +#!/home///env/bin/python3 import sys, os -INTERP = "/home//cadpoint.ru/env/bin/python3" +INTERP = "/home///env/bin/python3" #INTERP is present twice so that the new python interpreter #knows the actual executable path if sys.executable != INTERP: @@ -187,4 +187,3 @@ touch ~/cadpoint.ru/tmp/restart.txt ## Дополнительно Стоит включить ssl-сертификат для сайта. В панели управления DreamHost __Domains --> SSL/TLS Certificates__ - diff --git a/deploy_to_masterhost-vm.md b/deploy_to_masterhost-vm.md index 4da8af3..ce4fe84 100644 --- a/deploy_to_masterhost-vm.md +++ b/deploy_to_masterhost-vm.md @@ -3,7 +3,7 @@ ## 1: Создание пользователя Изначально есть только root-доступ. Если мы залогированы под **root**, то следует создать пользователя от имени -которого мы будем осуществлять все действия (позже root-доступ будет закрыт). Создадим пользователя **web**: +которого мы будем осуществлять все действия (позже root-доступ будет закрыт). Создадим пользователя ****: ```shell sudo useradd -c 'WEB-user' -m @@ -21,7 +21,7 @@ nano /etc/sudoers и после строки `root ALL=(ALL:ALL) ALL` добавим в него строку: ```editorconfig -web ALL=(ALL:ALL) ALL + ALL=(ALL:ALL) ALL ``` Сохраняем конфигурационный файл `Ctrl+O` и `Enter`, а выходим из редактора `Ctrl+X`. @@ -34,7 +34,7 @@ web ALL=(ALL:ALL) ALL logout ``` -Теперь можно залогироваться от имени пользователя **web**. +Теперь можно залогироваться от имени пользователя ****. Установим командную оболочку bash для пользователя: ```shell @@ -64,7 +64,7 @@ Port 2002 ``` Так же дописываем в конце следующие две строки в которых и запрещаем ssh-вход -пользователя **root** и разрешаем доступ нашему пользователю **web**: +пользователя **root** и разрешаем доступ нашему пользователю ****: ``` DenyUsers root AllowUsers @@ -585,10 +585,10 @@ sudo service mysql status sudo mysql ``` -Создаём пользователя `web`, зададим ему пароль и дадим привилегии на все: +Создаём пользователя ``, зададим ему пароль и дадим привилегии на все: ```mysql -CREATE USER 'web'@'localhost' IDENTIFIED BY '*********************'; -GRANT ALL PRIVILEGES ON *.* TO 'web'@'localhost'; +CREATE USER ''@'localhost' IDENTIFIED BY '*********************'; +GRANT ALL PRIVILEGES ON *.* TO ''@'localhost'; ``` Создаем базу данных `django_cadpoint` для нашего сайта: @@ -686,7 +686,7 @@ Accept-Ranges: bytes сжаты по своей природе и большого результата при сжатии GZIP можно не ожидать. -Настроем модуль GZIP в NGINX. Для этого открываем на редактирование +Настроим модуль GZIP в NGINX. Для этого открываем на редактирование конфигурационный файл nginx `/etc/nginx/nginx.conf`: ```shell sudo nano /etc/nginx/nginx.conf @@ -873,10 +873,10 @@ zip -9 -r cadpoint.zip public/ rsvo_new/ config/ Копируем архив по ssh на нашу виртуалку (masterhost или nic.ru) ```shell -scp -P 2002 cadpoint.zip @:~/cadpoint +scp -P 2002 cadpoint.zip @:~/ ``` -Возвращаемся на нашу виртуалку хостера и разархивируем: +Возвращаемся на нашу виртуалку хостинга и разархивируем: ```shell cd ~/cadpoint unzip cadpoint.zip @@ -1004,8 +1004,8 @@ upstream cadpoint-django { # конфигурируем сервер server { - # server_name ; # доменное имя сайта - server_name cadpoint.ru; # доменное имя сайта + # server_name ; # доменное имя сайта + server_name cadpoint.ru; # доменное имя сайта listen 80; charset utf-8; # кодировка по умолчанию access_log /home//cadpoint/logs/cadpoint-access.log; # логи с доступом @@ -1418,22 +1418,25 @@ nano ~/cadpoint/config/cadpoint.conf где: * one — имя зоны настроеной в /etc/nginx/nginx.conf (для всех сайтов сервера) в блоке `http {…}`; -* burst — максимальный всплеск активности, можно регулировать до какого значения запросов в секунду может быть всплеск запросов; -* nodelay — незамедлительно, при достижении лимита подключений, выдавать код 503 (Service Unavailable) для этого IP. +* burst — максимальный всплеск активности, можно регулировать до какого значения запросов +* в секунду может быть всплеск запросов; +* nodelay — незамедлительно, при достижении лимита подключений, выдавать код 503 +* (Service Unavailable) для этого IP. Строку `limit_req zone=one burst=5 nodelay;` можно добавить как непосредственно в блок `server {…}`, и тогда будет ограничиваться число запросов ко всем файлам сайта, так и в расположенные в нем блоки `location … {…}`. Целесообразнее ограничить число запросов к `uwsgi_pass`, т.к. он отвечает только за странички сайта (без статики... статика может быть запрощена клиентом довольна, т.к. одна страничка может содержать внутри себя много встроенных картинок, стилей и скриптов). Таким образом наш блок `location … {…}` будет выглядеть так: ```nginx configuration location / { - uwsgi_pass cadpoint-django; # upstream обрабатывающий обращений + uwsgi_pass cadpoint-django; # upstream обрабатывающий обращений include uwsgi_params; # конфигурационный файл uwsgi; proxy_set_header Host $host; limit_req zone=one burst=5 nodelay; fastcgi_keep_conn on; uwsgi_read_timeout 1800; uwsgi_send_timeout 200; - } + } +} ``` ### Баним ботов и подозрительную активность