40
DEPLOY.md
40
DEPLOY.md
@@ -1,11 +1,11 @@
|
||||
# Деплой PC Shop
|
||||
# Деплой Tehnobox
|
||||
|
||||
В репозитории подготовлены production-артефакты:
|
||||
|
||||
- `scripts/deploy.sh` - полный деплой в текущем checkout.
|
||||
- `scripts/update-from-github.sh` - `git pull` + production-деплой.
|
||||
- `deploy/nginx/pc-shop.http.conf` - HTTP-конфиг для первого запуска и выпуска сертификата.
|
||||
- `deploy/nginx/pc-shop.conf` - финальный HTTPS-конфиг для Nginx.
|
||||
- `deploy/nginx/tehnobox.http.conf` - HTTP-конфиг для первого запуска и выпуска сертификата.
|
||||
- `deploy/nginx/tehnobox.conf` - финальный HTTPS-конфиг для Nginx.
|
||||
- `.github/workflows/deploy.yml` - автодеплой по SSH из GitHub Actions.
|
||||
|
||||
## 1. Что должно быть на сервере
|
||||
@@ -24,8 +24,8 @@
|
||||
|
||||
```bash
|
||||
cd /var/www
|
||||
git clone git@github.com:YOUR_ACCOUNT/pc-shop.git
|
||||
cd pc-shop
|
||||
git clone git@github.com:YOUR_ACCOUNT/tehnobox.git
|
||||
cd tehnobox
|
||||
|
||||
cp .env.example .env
|
||||
# заполните .env и переключите его на production значения
|
||||
@@ -34,6 +34,8 @@ php artisan key:generate --force
|
||||
bash scripts/deploy.sh
|
||||
```
|
||||
|
||||
Production-порт для сайта здесь не `3000`: проект рассчитан на `Nginx + PHP-FPM`, то есть внешний трафик идёт через `80/443`. Если `Gitea` уже работает на `3000`, это не конфликтует с сайтом.
|
||||
|
||||
Опционально добавить демо-данные:
|
||||
|
||||
```bash
|
||||
@@ -47,13 +49,13 @@ php artisan db:seed --class=ShopCatalogSeeder
|
||||
```dotenv
|
||||
APP_ENV=production
|
||||
APP_DEBUG=false
|
||||
APP_URL=https://shop.example.com
|
||||
APP_URL=https://tehnobox.shop
|
||||
|
||||
DB_CONNECTION=pgsql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=pc-shop
|
||||
DB_USERNAME=pc_shop
|
||||
DB_DATABASE=tehnobox
|
||||
DB_USERNAME=tehnobox
|
||||
DB_PASSWORD=secret
|
||||
|
||||
SESSION_DRIVER=database
|
||||
@@ -119,14 +121,14 @@ bash scripts/update-from-github.sh release
|
||||
|
||||
В репозитории два шаблона:
|
||||
|
||||
- `deploy/nginx/pc-shop.http.conf` - стартовый HTTP-конфиг для первого запуска и `/.well-known/acme-challenge/`
|
||||
- `deploy/nginx/pc-shop.conf` - основной HTTPS-конфиг с редиректом `80 -> 443`
|
||||
- `deploy/nginx/tehnobox.http.conf` - стартовый HTTP-конфиг для первого запуска и `/.well-known/acme-challenge/`
|
||||
- `deploy/nginx/tehnobox.conf` - основной HTTPS-конфиг с редиректом `80 -> 443`
|
||||
|
||||
До выпуска сертификата включите именно HTTP-шаблон:
|
||||
|
||||
```bash
|
||||
sudo cp deploy/nginx/pc-shop.http.conf /etc/nginx/sites-available/pc-shop.conf
|
||||
sudo ln -s /etc/nginx/sites-available/pc-shop.conf /etc/nginx/sites-enabled/pc-shop.conf
|
||||
sudo cp deploy/nginx/tehnobox.http.conf /etc/nginx/sites-available/tehnobox.conf
|
||||
sudo ln -s /etc/nginx/sites-available/tehnobox.conf /etc/nginx/sites-enabled/tehnobox.conf
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
@@ -142,17 +144,17 @@ sudo systemctl reload nginx
|
||||
## 7. HTTPS и сертификат
|
||||
|
||||
1. Убедитесь, что домен уже указывает на сервер и порт `80` открыт.
|
||||
2. В `.env` укажите `APP_URL=https://shop.example.com`.
|
||||
2. В `.env` укажите `APP_URL=https://tehnobox.shop`.
|
||||
3. Выпустите сертификат через `certbot`:
|
||||
|
||||
```bash
|
||||
sudo certbot certonly --webroot -w /var/www/pc-shop/public -d shop.example.com -d www.shop.example.com
|
||||
sudo certbot certonly --webroot -w /var/www/tehnobox/public -d tehnobox.shop -d www.tehnobox.shop
|
||||
```
|
||||
|
||||
4. После успешного выпуска переключите nginx на HTTPS-шаблон:
|
||||
|
||||
```bash
|
||||
sudo cp deploy/nginx/pc-shop.conf /etc/nginx/sites-available/pc-shop.conf
|
||||
sudo cp deploy/nginx/tehnobox.conf /etc/nginx/sites-available/tehnobox.conf
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
@@ -163,7 +165,7 @@ sudo systemctl reload nginx
|
||||
composer run deploy
|
||||
```
|
||||
|
||||
Что нужно проверить в `deploy/nginx/pc-shop.conf`:
|
||||
Что нужно проверить в `deploy/nginx/tehnobox.conf`:
|
||||
|
||||
- `server_name`
|
||||
- `fastcgi_pass`
|
||||
@@ -175,7 +177,7 @@ composer run deploy
|
||||
Если вы предпочитаете, чтобы `certbot` сам правил nginx, можно вместо `certonly --webroot` использовать:
|
||||
|
||||
```bash
|
||||
sudo certbot --nginx -d shop.example.com -d www.shop.example.com
|
||||
sudo certbot --nginx -d tehnobox.shop -d www.tehnobox.shop
|
||||
```
|
||||
|
||||
Но для предсказуемого деплоя удобнее оставить конфиг под контролем репозитория и использовать `certonly`.
|
||||
@@ -200,7 +202,7 @@ sudo certbot --nginx -d shop.example.com -d www.shop.example.com
|
||||
- `DEPLOY_SSH_KEY`
|
||||
- `DEPLOY_KNOWN_HOSTS`
|
||||
|
||||
`DEPLOY_PATH` должен указывать на директорию проекта на сервере, например `/var/www/pc-shop`.
|
||||
`DEPLOY_PATH` должен указывать на директорию проекта на сервере, например `/var/www/tehnobox`.
|
||||
|
||||
`DEPLOY_KNOWN_HOSTS` можно получить так:
|
||||
|
||||
@@ -218,7 +220,7 @@ php artisan route:list
|
||||
|
||||
Проверьте страницы:
|
||||
|
||||
- `https://shop.example.com`
|
||||
- `https://tehnobox.shop`
|
||||
- `/`
|
||||
- `/catalog`
|
||||
- `/cart`
|
||||
|
||||
Reference in New Issue
Block a user