
ssafy에서 AIoT 프로젝트 중 백엔드와 인프라 역할을 수행하면서 배운점을 정리해보려고 한다.
이번 편에서는 기초적인 설정만 이야기하겠다
참고한 블로그
규바 ec2 Gitlab Docker Jenkins https Vue Springboot CI/CD 배포

ssh -i 키파일 ubuntu@서버주소
- 외부에서 nginx로 접속할 수 있도록 우분투 방화벽(UFW)에서 포트를 열어주었다.
1. 처음 ufw 설정 시 실수로 ssh접속이 안되는 경우를 방지하기 위해
ssh 터미널을 여유있게 2~3개 연결해 놓는다.
2. ufw 상태 확인
$ sudo ufw status
Status : inactive
3. 사용할 포트 허용하기 (ufw inactive 상태)
$ sudo ufw allow 22
3-1 등록한 포트 조회하기 (ufw inactive 상태)
$ sudo ufw show added
Added user rules (see 'ufw status' for running firewall):
ufw allow 22
4. ufw 활성화 하기
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
4.1 ufw 상태 및 등록된 rule 확인하기
$ sudo ufw status numbered
Status: active
ufw에 허용된 포트 확인
sudo ufw status numbered
80번 포트를 추가로 설정
sudo ufw allow 80
numbered에 등록된 번호4번 포트를 삭제(연습용)
sudo ufw delete 4
(중요) 삭제한 정책은 반드시 enable을 수행해야 적용된다.
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y입력
sudo ufw allow 443 (https)
sudo ufw allow 9090 (젠킨스)
스왑 메모리 설정
현재 메모리는 16GB로 굉장히 넉넉하지만, (연습+만약을 대비)를 이유로 가상 메모리 기법을 적용하였다. (다음에 freetier 사용할때 적용하면 좋을듯 싶다)
아마존 공식 추천 가이드에 맞추어 16GB의 절반인 8GB를 스왑메모리로 적용하였다.
시스템 업데이트 및 도커 설치
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get install ca-certificates
sudo apt-get install curl
sudo apt-get install software-properties-common
도커 공식 GPG( 오픈 소스 암호화 도구 GNU Privacy Guard)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
도커 저장소 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
도커 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
시스템 실행시 도커 자동 실행
sudo systemctl start docker
sudo systemctl enable docker
도커 버전확인
docker --version
Jenkins 설치
젠킨스 + 도커 사용 방법
젠킨스 도커 이미지를 받기 (도커 내부에서 젠킨스 구동)
호스트에 젠킨스 직접 설치
우리의 경우 docker in docker 문제가 발생할 수 있기에 호스트에 직접설치하는 방식을 활용했다.
자바 설치
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
jenkins는 자바로 구동되기 때문에 자바가 필요하다!!
설치
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
$ echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install jenkins
$ sudo systemctl status jenkins
sudo usermod -aG docker jenkins
$ sudo systemctl start jenkins
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
우리의 경우 젠킨스 포트번호가 기존 실행중인 코드와 겹쳐서 오류가 발생하였다.
이를 해결하기 위해 2가지 파일에서의 포트 번호를 변경하였다. (9090)
기본적인 시스템 젠킨스 포트 변경 (이것만 변경했을때는 적용이 되지 않았다)
sudo nano /etc/default/jenkins
젠킨스 서비스에서 포트 변경
sudo nano /usr/lib/systemd/system/jenkins.service
젠킨스 재시작(이 명령어 실행전에 데몬 재실행을 하라고 뜬다 해주자 sudo systemctl daemon-reload )
sudo systemctl restart jenkins
확인
sudo systemctl status jenkins
나머지는 너무 길어서 다음 포스트에 설명하겠다