DevOps
How to deploy CI/CD compatible and production ready web-service
Contents:
- New project files deployment on server
- Nginx settings for new project
- Supervisor fix
New project files deployment on server manual
PROJECT_NAME=your project name
sudo mkdir /var/www/PROJECT_NAME
sudo chmod 755 -R /var/www/PROJECT_NAME
cd /var/www/PROJECT_NAME
git clone git@gitlab.site.ru:company/PROJECT_NAME.git
mv PROJECT_NAME html
cd html
composer update
cp .env.example .env
- Create new DB and write her in to .env file
mv /var/www/PROJECT_NAME/html/.env /var/www/PROJECT_NAME/.env
ln -s /var/www/PROJECT_NAME/.env /var/www/PROJECT_NAME/html/.env
- next if your App already adapted for outer storage watching
mv /var/www/PROJECT_NAME/html/storage /var/www/PROJECT_NAME/storage
php artisan migrate
php artisan tenancy:customer:create my_new_customer
sudo chown www-data -R /var/www/PROJECT_NAME/storage/logs/
sudo chown www-data -R /var/www/PROJECT_NAME/storage/framework/cache/
sudo chown www-data -R /var/www/PROJECT_NAME/storage/framework/views/ #(not sudo chmod 755 -R /var/www/PROJECT_NAME/storage/)
ln -s /var/www/customers /var/www/PROJECT_NAME/html/customers
Nginx settings for new project
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/PROJECT_NAME
sudo nano /etc/nginx/sites-available/PROJECT_NAME
- edit your new file as this:
server {
listen 80;
listen [::]:80;
server_name PROJECT_NAME.ru;
root /var/www/PROJECT_NAME/www/public;
index index.php index.html;
try_files $uri $uri/ /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
}
sudo ln -s /etc/nginx/sites-available/PROJECT_NAME /etc/nginx/sites-enabled/PROJECT_NAME
sudo nginx -t
sudo systemctl reload nginx
- Config your DNS server:
Main -> Domain names -> Your domain name -> Records -> Create ->
Name -> Your domain name
Type -> A
IP-adress -> Your IP adress
- (optional) Edit hosts file on Your working machine (only if your DNS still not configured):
open C:\Windows\System32\drivers\etc\hosts
11.22.33.44 PROJECT_NAME.ru
Supervisor fix
cd /var/www/PROJECT_NAME
mkdir supervisor
mkdir /var/www/PROJECT_NAME/storage/logs/supervisor-logs
cd supervisor
touch PROJECT_NAME-worker.conf
sudo nano PROJECT_NAME-worker.conf
- write new supervisor worker configuration as it:
[program:PROJECT_NAME_slow]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php /var/www/PROJECT_NAME/html/artisan queue:listen database --timeout=0 --queue=slow --tries=1 --memory=768 --sleep=3
autostart=true
autorestart=true
user=www-data
group=www-data
numprocs=2
redirect_stderr=true
stderr_logfile=/var/www/PROJECT_NAME/storage/logs/supervisor-logs/error.log
stdout_logfile=/var/www/PROJECT_NAME/storage/logs/supervisor-logs/worker.log
sudo ln -s /var/www/PROJECT_NAME/supervisor/PROJECT_NAME-worker.conf /etc/supervisor/conf.d/PROJECT_NAME-worker.conf
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start all
sudo supervisorctl status
How To Install "supervisor" Package on Ubuntu
sudo apt-get update -y
sudo apt-get install -y supervisor
Leave a reply