```{index} nginx, ошибки; oops.html, сертификаты
```
# ПРОД - Добавление нового сайта
## 1. Создаём самоподписанный сертификат
```{rubric} На хосте c04-ansible:
```
1. {ref}`generate_new_cert_script`
2. {doc}`/ansible/playbooks/nginx-update-certs`
## 2. Создаём нужные папки + распространяем статику
Создаём папки `/srv/sites/*/{logs,public_html}` + распространяем `oops.html`,
`maintenance.html` (если есть --- то и другую статику).
```{rubric} На хосте c04-ansible:
```
- добавляем новый сайт в список `inv_nginx_srv_sites`:
```bash
vim inv/production/group_vars/<Группа_фронтов_nginx>.yml;
```
- если есть `oops.html`, другой статический контент, то добавляем в
`roles/nginx_update_srv_sites/files/prod/sites//public_html/`;
- выполняем плейбук:
```bash
ansible-playbook -i inv/production playbook/maintenance/nginx/update_srv_sites.yml
```
## 3. Создаём и распространяем конфиг nginx для нового сайта
```{rubric} На первом фронте nginx:
```
- создаём `.conf` файл для нового сайта;
- проверяем, что нет ошибок, и применяем[^footnote1] конфигурацию для первого
фронта:
```bash
nginx -t
nginx -s reload
```
[^footnote1]: Плейбук перезапустит nginx только на тех фронтах, где "увидит"
изменения в конфигурации. Для первого фронта изменений не будет, т. к. мы их
только что внесли. Соответственно, на нём важно не забыть применить новую
конфигурацию вручную.
- коммитим изменения и пушим в репозиторий (от имени root):
```bash
cd /etc/nginx
git status
git add conf.d/newsite.ru.conf
git commit -m 'Add newsite.ru.conf' --author='Author Name '
git push
```
```{rubric} На хосте c04-ansible:
```
Выполняем плейбук для распространения и применения[^footnote1] новой
конфигурации для всех фронтов nginx:
```bash
ansible-playbook -i inv/production playbook/maintenance/nginx/git_pull_config_vdc04.yml
```