2
Some checks are pending
Deploy / deploy (push) Waiting to run

This commit is contained in:
ssww23
2026-03-17 02:13:35 +03:00
parent 0ee9f05416
commit f2f4e2cdd7
12 changed files with 45 additions and 41 deletions

View File

@@ -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`