Kamis, 03 November 2022

Membuat Server Cloud Ubuntu, Docker, HTTPS Nginx, CI/CD

Langkah pertama yang harus kita lakukan adalah membuat server dengan menggunakan OS Ubuntu 22.04, setelah itu kita lakukan langkah2 berikut ini:

 

1. Membuat group user sudo

Membuat Group Sudo

addgroup devel
visudo

Tambahkan Group Baru seperti pada contoh dibawah

root    ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
%devel ALL=(ALL:ALL) NOPASSWD: ALL

Link : https://www.tecmint.com/run-sudo-command-without-password-linux/

2. Membuat User Devel (Sudo)

adduser andika
usermod -aG sudo andika

Link:

https://mbahwp.com/cara-membuat-grup-menambahkan-user-ke-grup-di-ubuntu/

https://www.linuxid.net/24838/cara-membuat-user-sudo-di-ubuntu-linux/ 

3. Membuat Akses SSH menggunakan Public Key

Anda bisa melakukannya dengan tutorial berikut 

https://andika2000.blogspot.com/2017/05/tutorial-public-key-ssh-dengan-puty-gen.html

https://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/

Jika anda membuat key menggunakan command linux,kemudian kamu ingin menggunakan key tsb menggunakan putty. kamu harus mengconvertnya menjadi file .ppk, berikut link nya:

http://deepakputhal.weebly.com/blog/november-23rd-2015

4. Install Mysql Server

Link: https://linuxhint.com/install-mysql-on-ubuntu-22-04/

5. Install Docker Engine

Link: https://docs.docker.com/engine/install/ubuntu/  

6. Install Aplikasi

  1. Git Clone Application
  2. Setup Aplikasi Dengan Docker
  3. Test Aplikasi Sampai bisa berjalan di server

7. Membuat Command CI/CD

 Buat File Dengan Nama ".gitlab-ci.yml" kemudian Masukan command berikut

stages:
- deploy
deploy:
stage: deploy
image: ubuntu:latest
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && ssh-keyscan -H "$SSH_HOST" > ~/.ssh/known_hosts'
script:
- ssh $SSH_USER@$SSH_HOST "cd $WORK_DIR && sudo git checkout -f $GIT_BRANCH"
- ssh $SSH_USER@$SSH_HOST "cd $WORK_DIR && sudo git clean -fd"
- ssh $SSH_USER@$SSH_HOST "cd $WORK_DIR && sudo git pull https://$GIT_USER:$GIT_PASSWORD@$GIT_URL $GIT_BRANCH"
- ssh $SSH_USER@$SSH_HOST "cd $WORK_DIR && sudo sh deploy.sh"

Kemudian Buat File dengan nama "deploy.sh" lalu masukan command berikut:

#!/bin/sh

docker exec -i qualita-qfest-v3 chown -R www-data:www-data /var/www/
docker exec -i qualita-qfest-v3 chmod -R 755 /var/www/

docker exec -i qualita-qfest-v3 composer install

docker exec -i qualita-qfest-v3 php artisan cache:clear
docker exec -i qualita-qfest-v3 php artisan config:clear
docker exec -i qualita-qfest-v3 php artisan view:cache
docker exec -i qualita-qfest-v3 php artisan view:cache

docker exec -i qualita-qfest-v3 service supervisor restart

8. Setup Nginx Config

Buat file "/etc/nginx/sites-available/project_name" lalu masukan command berikut:

server {
include mime.types;
server_name sub.domain.net;

location / {
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;

include mime.types;
}
}

kemudian kita akan membuat link file ke site_enabled:

ln -s /etc/nginx/sites-available/project_name /etc/nginx/sites-enabled/project_name

9. Setup Cerbort SSL HTTPS

kemudian kita akan membuat link file ke site_enabled:

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d sub.domain.com

sudo systemctl restart nginx.service

sudo systemctl status certbot.timer

Kemudian Edit file .env pada

APP_NAME=ApplicationName
APP_ENV=production
APP_URL=https://sub.domain.com



Tidak ada komentar:

Posting Komentar