Sanitize deployment docs
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
7. Сконфигурируем будущую компиляцию на размещение готовой версии Python в папку `~/opt/python-3.8.6`
|
||||
8. Компилируем Python (в том числе будут запущены тесты)
|
||||
9. Устанавливаем Python 3.8.6
|
||||
<notification_email>
|
||||
Контакт для уведомлений: <notification_email>
|
||||
|
||||
```
|
||||
cd ~
|
||||
@@ -25,7 +25,7 @@ make
|
||||
make install
|
||||
```
|
||||
|
||||
В результате установлена нужная нам версия python установлена в папку `~/opt/python-3.8.6` (`/home/<username>/opt/python-3.8.6`)
|
||||
В результате установлена нужная нам версия python установлена в папку `~/<site_root>` (`/home/<hosting_user>/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/<username>.` Это нужно, чтобы сделать так, чтобы этот python всегда заменял версию которая есть на сервере._
|
||||
_Также можно добавить эту строку в файл `.bashrc` и/или `.bash_profile` в домашней директории `/home/<hosting_user>`. Это нужно, чтобы сделать так, чтобы этот 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__ (без создания нового пользователя). В нашем домашнем каталоге будет создана папка `~/<site_root>`. В этой папке будет лежать `passenger_wsgi.py`, также есть папка `public` в которой будут лежать статичные файлы не требующие обработки CGI (media, static и пр.)
|
||||
|
||||
Теперь создадим виртуальное окружение в папке нашего сайта (`$HOME/cadpoint.ru`):
|
||||
Теперь создадим виртуальное окружение в папке нашего сайта (`$HOME/<site_root>`):
|
||||
```
|
||||
virtualenv -p python3 $HOME/cadpoint.ru/env
|
||||
virtualenv -p python3 $HOME/<site_root>/env
|
||||
```
|
||||
|
||||
Активируем созданное виртуальное окружение:
|
||||
```
|
||||
source $HOME/cadpoint.ru/env/bin/activate
|
||||
source $HOME/<site_root>/env/bin/activate
|
||||
```
|
||||
|
||||
Проверить, что теперь мы работаем в виртуальном окружении можно дав команды:
|
||||
@@ -138,7 +138,7 @@ python -c "import django; print(django.get_version())"
|
||||
|
||||
Далее нам надо скопировать статические файлы админки Django в папку статических файлов хостинга:
|
||||
```
|
||||
cd ~/cadpoint.ru/dicquo
|
||||
cd ~/<site_root>/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/<hosting_user>/cadpoint.ru/env/bin/python3
|
||||
#!/home/<hosting_user>/<site_root>/env/bin/python3
|
||||
|
||||
import sys, os
|
||||
INTERP = "/home/<hosting_user>/cadpoint.ru/env/bin/python3"
|
||||
INTERP = "/home/<hosting_user>/<site_root>/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__
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
## 1: Создание пользователя
|
||||
|
||||
Изначально есть только root-доступ. Если мы залогированы под **root**, то следует создать пользователя от имени
|
||||
которого мы будем осуществлять все действия (позже root-доступ будет закрыт). Создадим пользователя **web**:
|
||||
которого мы будем осуществлять все действия (позже root-доступ будет закрыт). Создадим пользователя **<ssh_user>**:
|
||||
|
||||
```shell
|
||||
sudo useradd -c 'WEB-user' -m <ssh_user>
|
||||
@@ -21,7 +21,7 @@ nano /etc/sudoers
|
||||
|
||||
и после строки `root ALL=(ALL:ALL) ALL` добавим в него строку:
|
||||
```editorconfig
|
||||
web ALL=(ALL:ALL) ALL
|
||||
<ssh_user> ALL=(ALL:ALL) ALL
|
||||
```
|
||||
|
||||
Сохраняем конфигурационный файл `Ctrl+O` и `Enter`, а выходим из редактора `Ctrl+X`.
|
||||
@@ -34,7 +34,7 @@ web ALL=(ALL:ALL) ALL
|
||||
logout
|
||||
```
|
||||
|
||||
Теперь можно залогироваться от имени пользователя **web**.
|
||||
Теперь можно залогироваться от имени пользователя **<ssh_user>**.
|
||||
|
||||
Установим командную оболочку bash для пользователя:
|
||||
```shell
|
||||
@@ -64,7 +64,7 @@ Port 2002
|
||||
```
|
||||
|
||||
Так же дописываем в конце следующие две строки в которых и запрещаем ssh-вход
|
||||
пользователя **root** и разрешаем доступ нашему пользователю **web**:
|
||||
пользователя **root** и разрешаем доступ нашему пользователю **<ssh_user>**:
|
||||
```
|
||||
DenyUsers root
|
||||
AllowUsers <ssh_user>
|
||||
@@ -585,10 +585,10 @@ sudo service mysql status
|
||||
sudo mysql
|
||||
```
|
||||
|
||||
Создаём пользователя `web`, зададим ему пароль и дадим привилегии на все:
|
||||
Создаём пользователя `<ssh_user>`, зададим ему пароль и дадим привилегии на все:
|
||||
```mysql
|
||||
CREATE USER 'web'@'localhost' IDENTIFIED BY '*********************';
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'web'@'localhost';
|
||||
CREATE USER '<ssh_user>'@'localhost' IDENTIFIED BY '*********************';
|
||||
GRANT ALL PRIVILEGES ON *.* TO '<ssh_user>'@'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 <ssh_user>@<server_ip>:~/cadpoint
|
||||
scp -P 2002 cadpoint.zip <ssh_user>@<server_ip>:~/<project_root>
|
||||
```
|
||||
|
||||
Возвращаемся на нашу виртуалку хостера и разархивируем:
|
||||
Возвращаемся на нашу виртуалку хостинга и разархивируем:
|
||||
```shell
|
||||
cd ~/cadpoint
|
||||
unzip cadpoint.zip
|
||||
@@ -1004,8 +1004,8 @@ upstream cadpoint-django {
|
||||
|
||||
# конфигурируем сервер
|
||||
server {
|
||||
# server_name <server_ip>; # доменное имя сайта
|
||||
server_name cadpoint.ru; # доменное имя сайта
|
||||
# server_name <server_ip>; # доменное имя сайта
|
||||
server_name cadpoint.ru; # доменное имя сайта
|
||||
listen 80;
|
||||
charset utf-8; # кодировка по умолчанию
|
||||
access_log /home/<ssh_user>/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;
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Баним ботов и подозрительную активность
|
||||
|
||||
Reference in New Issue
Block a user