총..131번을 통한.. 그냥 땅바닥에 머리를 박고 한 .. CD 힘들다 ...
배포하기 앞서 AWS EC2 를 사용하여 배포를하였다.
인스턴스 유형은 원래는 t2 small
로 하였으나 , react
파일이 큰건지..yarn build 할때마다 너무 오래걸려 모니터링을 통해서 확인했을때 CPU가 99%가 치솟는걸 알수있었다. 하여, t2 large 를 사용하였다.
맨 먼저 EC2 배포 완료후
sudo ufw app list
apt-get install software-properties-common
add-apt-repository universe
add-apt-repository ppa:certbot/cerbot
add-apt-repository ppa:certbot/certbot
apt-get install certbot python3-certbot-nginx
sudo nginx -t
sudo certbot --nginx -d 도메인
sudo certbot --nginx -d 도메인
이런식으로 하게되면 무료로 tsl 인증서를 발급받을수있다. 이 과정을 통해서 해당 도메인을 통해 확인을 해보면 welcome to nginx
가 보일것이다. 또한 https로 접속하면 똑같이 나오면 성공이다.
이후
sudo rm -rf /etc/nginx/sites-available/ ..
sudo rm -rf /etc/nginx/sites-enabled/ ..
.. 에 속한 모든 파일을 제거한다
이후 내가 임의로 nginx.conf 파일을 만든다.
이렇게해도 되는이유가 nginx.conf에
include /etc/nginx/sites-enabled/*;
모든 파일을 읽고있는부분이있기때문이다.
이후 나는 default
라는 파일을 만들었다.
server {
listen 80 ssl;
server_name 도메인이름;
location / {
root 해당 빌드폴더가 있는곳/build;
try_files $uri /index.html;
}
}
이런식으로 올리면 모든 준비가 끝났다. 아 이부분은 80 일때 얘기고, 만약 위에 글대로 똑같이 따라하고 있다면 , 아래와 같이 따라해주면된다.
server {
listen 443 ssl;
server_name 도메인이름;
ssl_certificate /etc/letsencrypt/live/..
ssl_certificate_key /etc/letsencrypt/live/..
location / {
root 해당 빌드폴더가 있는곳/build;
try_files $uri /index.html;
}
}
..
이라는 곳에는 인증서 펨키를 넣어주면 된다.
무료로 certbot을통해 인증서를 받은 경우엔 경로가
etc/letsencrypt/live/
라는 경로 에 저장이되어있다.
그리고 ssl_certisficate 엔
fullchain.pem
키를 등록해주고,
아래 키는 privkey.pem
을 넣어주면 된다.
이제 모든 준비가 다 끝나고
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
를 명령어를 넣어주면 심볼링링크가 발동하게되어 빠르게 수정/추가 를 하게할수있으며,똑같은 파일이 생성이된다.
actions 탭에 Runners를 클릭후 Download Tab을 똑같이 따라해주자 !
위와 같이 다 따라해준 이후
밑에 configure
부분도 똑같이 따라해주자
이후에
sudo ./svc.sh install
sudo ./svc.sh start
를 하면 이제 설정이 완료가되었고, workflow 파일을 작성하자.
name:
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: self-hosted
strategy:
matrix:
node-version: [18.x]
steps:
- uses: actions/checkout@v3
- name: Pull latest changes
run: git pull origin main
- name: Set CI environment variable
run: echo "CI=false" >> $GITHUB_ENV
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
- run: yarn install
- run: yarn run build --if-present
- run: sudo service nginx restart
500 ERROR
가 확인이 될텐데 이는 build파일부분이 권한이 없어서 안되었던걸 확인하였다.이후
sudo chmod +x 경로
위 명령어를 수행 완료후
sudo service nginx restart
를 통해 성공적으로 배포를 할 수 있었다.