Bash로 원타치 세팅하기

2021. 8. 17. 16:30프로그래밍/서버, 퍼블리싱

728x90

일 잘하는 개발자는 알고리즘 잘 짜는게 아니다. (잘 짜면 좋긴 하지)

일을 적게 하면서도 일관성있고 안정성 있게 처리하는 것이다.

그래서 이런 루팡을 위해서는 스크립트가 필요하다. 파이썬이건, 자바스크립트건 상관없다.

이런 스크립트는 단순히 작업시간 단축을 위하는게 아니다. 일관성 있는 결과물과 유지 보수를 위해서기도 하다.

스크립트는 내 커맨드의 로그와도 같기 때문에, 문제가 생기면 스크립트를 보며 어디가 문제인지 볼 수 있기 때문이다.

콘솔창에서 REPL로 한줄한줄 하다보면 내가 뭘 어떻게 세팅했는지 까먹기 마련이다.


전체 과정 설명

1. bash 파일 생성 및 구성

2. 복사용 파일 구성

3. 인스턴스로 파일 복사

4. 테스트


1. bash 파일 생성 및 구성

로컬 컴퓨터에서 에디터를 이용해 편리하게 스크립트를 작성해보자.

내가 이전 포스트에서 했던 내용들이다.

https://goldfishdiary.tistory.com/81

 

[취준일기] 2021-08-17: Ubuntu에서 ASP.net Application을 publish하기 (with NGINX)

이 퍼블리싱을 하는데 약 5일정도 걸렸던 것 같다. 이것저것 공부도 하고, 조사도 하면서 열심히 했던 것 같다. 참고용 링크는 맨 아래에 있다. 이런 저런 사이트를 찾아보면서 해봤지만, 다들 자

goldfishdiary.tistory.com

이제 밑에서 '이전 게시물을 보자'라고 하면 이 링크를 들어가면 된다.

# move this script to ~
cd ~


## 1. Git Repository Cloning and setting
# git clone
git clone https://github.com/ImInnocent/chrome-memo-server

# change branch
cd chrome-memo-server
git checkout develop



## 2. install dotnet
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

sudo apt-get update; \
  sudo apt-get install -y apt-transport-https && \
  sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-5.0



## 3. install nginx
# install nginx
sudo apt-get update
sudo apt-get install -y nginx

# start nginx server
sudo service nginx stop
sudo service nginx start

# copy nginx setting file
sudo cp ~/default /etc/nginx/sites-available/default

# reload nginx setting
sudo nginx -s reload



## 4. install supervisor
# install supervisor
sudo apt-get install -y supervisor

# copy supervisor setting file
sudo cp ~/chrome-memo-server.conf /etc/supervisor/conf.d/chrome-memo-server.conf



## 5. dotnet publish and move .dll file
# publish dotnet application
cd ~/chrome-memo-server
dotnet publish -c Release

# move contents
sudo mkdir /var/aspnetcore
sudo cp -r ~/chrome-memo-server/bin/Release/net5.0/publish/ /var/aspnetcore/
sudo rm -rf /var/aspnetcore/chrome-memo-server
sudo mv /var/aspnetcore/publish/ /var/aspnetcore/chrome-memo-server



## 6. start supervisor
sudo service supervisor stop
sudo service supervisor start

bash파일의 장점은 주석을 넣을 수 있다. 파이썬처럼 #으로 주석을 넣자


2. 복사용 파일 구성

중간중간에 cp 명령어가 있는데, 이 명령어는 전 게시물에서 vi 에디터로 작성했던 부분이다.

이부분을 미리 작성해서 파일로 만들어놓고, 복사하는 식으로 진행할 것이다.

만들어야 하는 파일은 default자기_프로젝트_이름.conf이다.

텍스트의 내용은 이전 게시물을 보자.


3. 인스턴스로 파일 복사

이제 이 파일들을 EC2 인스턴스로 전송해야한다.

scp라는 커맨드를 이용해서 할건데, 매번 복사 붙여넣기로 하면 귀찮으니까
이것도 스크립트를 하나 만들자.

scp-transport.sh라는 파일을 하나 만든다

scp -i C:/Users/user/Downloads/chrome-memo-server-key.pem \
  chrome-memo-server.conf default init-ubuntu-server.sh \
  ubuntu@13.125.13.161:~

첫째줄은 인증을 위해 인증키의 위치를 알려주는 것이다.
키 페어 파일의 위치를 입력하면 된다.
중요한건, 경로 이름을 \(역슬래시)가 아닌 /로 적어야 한다.

두번째 줄은 전송할 파일이다.
init-ubuntu-server.sh는 '1. bash 파일 생성 및 구성'에서 만든 파일이고,
chrome-memo-server.conf와 default는 '2. 복사용 파일 구성'에서 만든 파일이다.
이 세 파일을 복사할 것이라고 전달하는 것이다.

세번째 줄은 도착 위치다.
:을 기준으로 앞은 URL, 뒤쪽은 파일 경로다.
URL은 PuTTY의 HostName과 동일하다.
파일 경로는 홈(~)으로 한다.

위에서 언급한 3개의 파일과 scp-transport.sh를 같은 파일에 넣는다.


이제 이 스크립트를 실행한다.

여기서 차이가 있는데, Linux와 Windows에서 .sh파일을 실행하는 방법이 다르다.

# Linux
bash scp-transport.sh

# Windows
scp-transport.sh

본인의 스크립트를 실행하는 위치에 따라서 다르게 실행하면 된다.

나는 Windows라서 다음과 같이 실행하였다.

이제 PuTTY로 인스턴스에 접속해서 확인하면 홈(~)에 파일들이 있는걸 볼 수 있다.


4. 테스트

아기다리 고기다리던 실행 시간이다.

EC2 인스턴스는 Linux 운영체제이므로 bash init-ubuntu-server.sh로 실행한다

bash init-ubuntu-server.sh

캬! 주모!


마무리하며

사실 중간에 오타가 하나 있었어서 끊기긴 했는데 (이 글에는 수정해서 올렸다)

아무튼 한번에 딱 되니까 쾌감이 진짜 좋다.

결과적으로는 bash파일 두개만 실행해서 세팅에 성공한 것이다.

이런 자동화가 정말 도움이 많이 되는것 같다.

(특히 나는 꼬이면 인스턴스를 새로 파기 때문에)

 

여러분도 슬기로운 코딩 생활이 되시길 바란다!


참고 자료

https://wlsvud84.tistory.com/11

 

리눅스 scp 명령어 사용법 ( 파일 전송 프로토콜 / 파일 보내기 /파일 받기 )

안녕하세요 롯사입니다. 이번 시간 포스팅은 리눅스 기반 운영체제에서 사용하는 파일 전송 프로토콜 scp에 대해서 포스팅해보겠습니다. 리눅스 기반 시스템 기반을 운영하고 계신 현업 종사자

wlsvud84.tistory.com

https://www.thewindowsclub.com/how-to-run-sh-or-shell-script-file-in-windows-10

 

How to run .sh or Shell Script file in Windows 10

You can run .SH or Shell Script files in Windows 10 either using Windows Subsystem on Linux or install Ubuntu and then execute the scripts.

www.thewindowsclub.com