⚙️ 공통 설정 정보 입력

VS Code에서 터미널 열기 방법

🪟 Windows

  • 단축키: Ctrl + `
  • 또는: 상단 메뉴 터미널 → 새 터미널

🍎 macOS

  • 단축키: ⌘ + `
  • 또는: 상단 메뉴 Terminal → New Terminal

00 VS Code에서 SSH 연결 확인

상단에 입력한 정보를 바탕으로 SSH 연결 명령어가 자동으로 완성됩니다.

아래 명령어를 터미널에 입력하여 SSH 연결이 정상적으로 되는지 확인하세요:

(예제) ssh -i C:/Users/kreun/OneDrive/Desktop/pem/restart.pem bitnami@3.39.72.120
ssh -i 폴더경로/파일명.pem bitnami@아이피

⚠️ 퍼미션 오류 발생시

👉 맥

chmod 400 경로/파일명.pem

👉 윈도우

01 폴더생성부터 vhosts설정까지

sudo mkdir /opt/bitnami/projects; sudo chown $USER /opt/bitnami/projects; cd /opt/bitnami/projects; sudo npm install -g express-generator; express --view ejs chatbot; cd chatbot/; npm install; sudo npm install pm2 -g; sudo timedatectl set-timezone Asia/Seoul; timedatectl; sudo /opt/bitnami/ctlscript.sh restart apache; pm2 start ./bin/www --watch --time --name "bot" --ignore-watch="public/* data/* node_modules/*"; sudo cp /opt/bitnami/apache/conf/vhosts/sample-vhost.conf.disabled /opt/bitnami/apache/conf/vhosts/sample-vhost.conf; sudo cp /opt/bitnami/apache/conf/vhosts/sample-https-vhost.conf.disabled /opt/bitnami/apache/conf/vhosts/sample-https-vhost.conf; sudo /opt/bitnami/ctlscript.sh restart apache;

⚠️ 다음 오류가 발생하면:

[apache] Other action already in progress -- please try again later

👉 아래 명령어를 다시 실행하세요:

sudo /opt/bitnami/ctlscript.sh restart apache;
명령어 설명
sudo mkdir /opt/bitnami/projects Bitnami 안에 새로운 폴더를 만들어요.
앞으로 이 안에 프로젝트를 넣을 거예요.
sudo는 관리자 권한으로 실행하겠다는 뜻이에요.
sudo chown $USER /opt/bitnami/projects 방금 만든 폴더의 주인을 현재 사용자로 바꿔요.
그래야 파일을 만들거나 수정할 수 있어요.
cd /opt/bitnami/projects 그 폴더로 이동해요.
이제부터 여기에 프로젝트를 만들 거예요.
sudo npm install -g express-generator Express 앱을 쉽게 만들 수 있게 도와주는 도구를 설치해요.
-g는 전역(global)으로 설치한다는 뜻이에요.
express --view ejs chatbot ejs 템플릿을 사용하는 Express 앱을 만듭니다.
프로젝트 이름은 chatbot이에요.
cd chatbot/ 생성된 chatbot 폴더로 들어가요.
npm install 프로젝트에 필요한 라이브러리들을 자동으로 설치해요.
package.json 파일을 보고 알아서 설치해줍니다.
sudo npm install pm2 -g 서버 프로그램을 계속 실행시켜주는 PM2를 설치해요.
서버가 꺼지더라도 자동으로 다시 켜줄 수 있어요.
sudo timedatectl set-timezone Asia/Seoul 서버 시간을 한국 시간(서울)으로 맞춰요.
timedatectl 서버의 현재 시간 설정을 확인해요.
sudo /opt/bitnami/ctlscript.sh restart apache 웹 서버(Apache)를 재시작해요.
설정이 바뀐 걸 적용하려면 재시작이 필요해요.
pm2 start ./bin/www --watch --time --name "bot" --ignore-watch="public/* data/* node_modules/*" Express 서버를 PM2로 실행해요.
--watch는 파일 변경 시 자동으로 다시 시작해요.
--time은 로그에 시간을 보여줘요.
--name "bot"은 실행 이름을 bot으로 지정해요.
--ignore-watch는 무시할 폴더를 지정해요.
sudo cp ...sample-vhost.conf.disabled ...sample-vhost.conf Apache의 HTTP 설정 파일을 활성화해요.
.disabled 확장자가 없어지면 사용 가능해져요.
sudo cp ...sample-https-vhost.conf.disabled ...sample-https-vhost.conf HTTPS (보안 접속) 설정 파일도 활성화해요.
SSL 인증서를 사용할 수 있게 준비하는 과정이에요.
sudo /opt/bitnami/ctlscript.sh restart apache 설정 파일이 바뀌었으니 웹 서버(Apache)를 다시 시작해요.

서버 재시작 후에도 PM2가 자동으로 실행되도록 설정하기

cd /opt/bitnami/projects/chatbot
pm2 startup

위 명령을 실행하면 다음과 같은 출력이 표시됩니다.
"생성된 명령어"가 표시되면 복사하여 붙여 넣기 해야 합니다. 예:

sudo env PATH=$PATH:/opt/bitnami/nodejs/bin /opt/bitnami/nodejs/bin/pm2 startup systemd -u bitnami --hp /home/bitnami

02 VS Code SFTP 설정

상단에 입력한 정보를 바탕으로 SFTP 설정 JSON이 자동으로 완성됩니다.

VS Code의 SFTP 확장 프로그램 설정 파일(sftp.json)에 아래 내용을 붙여넣으세요.

[
  {
    "name": "구분가능한이름넣기",
    "host": "서버아이피",
    "port": 22,
    "type": "sftp",
    "username": "bitnami",
    "password": "",
    "privateKey": "키의경로전체",
    "path": "/opt/bitnami/projects/chatbot",
    "autosave": true,
    "confirm": false,
    "ignore": [
      "/**/node_modules"
    ]
  }
]

02-1 FTP 연결이 안 될 경우 설정 방법

sudo nano /etc/ssh/sshd_config

파일 맨 아래에 다음 줄을 추가하세요:

PubkeyAcceptedKeyTypes=+ssh-rsa

추가 후 아래 키 조합으로 저장하고 종료하세요:

SSH 서비스를 재시작하여 변경 사항을 적용합니다:

sudo systemctl restart sshd

https 도메인 연결하기

sudo /opt/bitnami/bncert-tool

인증서 수동 갱신

아래 명령어를 순서대로 실행하여 인증서를 갱신하세요:

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="<이메일>" --domains="<도메인>" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start

인증서 정보 확인하기

sudo /opt/bitnami/letsencrypt/lego --path /opt/bitnami/letsencrypt list
Found the following certs:
Certificate Name: [자신의도메인이름]
Domains: [자신의도메인이름]
Expiry Date: 2023-03-30 23:00:13 +0000 UTC
Certificate Path: /opt/bitnami/letsencrypt/certificates/[자신의도메인이름].crt

자동 갱신 설정

아래 단계를 통해 인증서 자동 갱신을 설정하세요:

폴더생성

sudo mkdir -p /opt/bitnami/letsencrypt/scripts

쉘스크립트 작성

sudo nano /opt/bitnami/letsencrypt/scripts/renew-certificate.sh

아래 3줄을 입력

sudo /opt/bitnami/ctlscript.sh stop
sudo /opt/bitnami/letsencrypt/lego --tls --email="<이메일>" --domains="<도메인>" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start
저장 ctrl+o / 나가기 ctrl + x

권한 추가

sudo chmod +x /opt/bitnami/letsencrypt/scripts/renew-certificate.sh

크론 있는지 확인

sudo crontab -l

크론 작성 시작

sudo crontab -e
0 0 1 * * /opt/bitnami/letsencrypt/scripts/renew-certificate.sh 2> /dev/null
sudo crontab -l