[AWS]EC2 ubuntu Swift, Vapor설치

힐링힐링·2024년 1월 5일
0

네트워크

목록 보기
1/5

Swift 설치:

Ubuntu 서버에 Swift를 설치합니다. Swift.org에서 제공하는 Ubuntu용 Swift 바이너리를 다운로드하여 설치할 수 있습니다.
내 ubuntu 서버는 20.04고 아키텍처는 86_64 임

sudo apt-get update
sudo apt-get install \
          binutils \
          git \
          gnupg2 \
          libc6-dev \
          libcurl4 \
          libedit2 \
          libgcc-9-dev \
          libpython2.7 \
          libsqlite3-0 \
          libstdc++-9-dev \
          libxml2 \
          libz3-dev \
          pkg-config \
          tzdata \
          uuid-dev \
          zlib1g-dev

패치지 다운후 키 다운

$ wget -q -O - https://swift.org/keys/all-keys.asc | \
  gpg --import -

gpg: /home/ubuntu/.gnupg/trustdb.gpg: trustdb created
gpg: key D441C977412B37AD: public key "Swift Automatic Signing Key #1 <swift-infrastructure@swift.org>" imported
gpg: key 9F597F4D21A56D5F: public key "Swift 2.2 Release Signing Key <swift-infrastructure@swift.org>" imported
gpg: key 63BC1CFE91D306C6: public key "Swift 3.x Release Signing Key <swift-infrastructure@swift.org>" imported
gpg: key EF5430F071E1B235: public key "Swift 4.x Release Signing Key <swift-infrastructure@swift.org>" imported
gpg: key 7638F1FB2B2B08C4: public key "Swift Automatic Signing Key #2 <swift-infrastructure@swift.org>" imported
gpg: key 925CC1CCED3D1561: public key "Swift 5.x Release Signing Key <swift-infrastructure@swift.org>" imported
gpg: key FAF6989E1BC16FEA: public key "Swift Automatic Signing Key #3 <swift-infrastructure@swift.org>" imported
gpg: key 925CC1CCED3D1561: "Swift 5.x Release Signing Key <swift-infrastructure@swift.org>" 1 new signature
gpg: key F167DF1ACF9CE069: public key "Swift Automatic Signing Key #4 <swift-infrastructure@forums.swift.org>" imported
gpg: key 925CC1CCED3D1561: "Swift 5.x Release Signing Key <swift-infrastructure@swift.org>" 1 new signature
gpg: key F167DF1ACF9CE069: "Swift Automatic Signing Key #4 <swift-infrastructure@forums.swift.org>" 1 new signature
gpg: Total number processed: 11
gpg:               imported: 8
gpg:         new signatures: 3

scp -r -i "/Users/kimjihun/Desktop/AWS/키페어 비밀번호/aws-ec2-keypair.pem" ./ "ubuntu@3.39.59.46:/home/ubuntu/project"

다운로드 페이지 접속후 링크 복사 후 다운

20.04이기 때문에 해당 표시 링크 복사함

$ wget 다운로드링크주소
$ wget https://download.swift.org/swift-5.9.2-release/ubuntu2004/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu20.04.tar.gz

압축 해제

$ ls 로 경로 확인후 압축해제

설치된 파일 압축해제

$ tar xzf swift-5.9.2-RELEASE-ubuntu20.04.tar.gz

키체인 경로 추가

$ export PATH=$HOME/swift-5.9.2-RELEASE-ubuntu20.04/usr/bin:$PATH

변경사항 적용

source ~/.bashrc

설치확인

swift --versionls

참고 문서
https://www.swift.org/install/linux/#installation-via-docker

Vapor 설치:

Swift가 설치되면, Vapor 툴체인을 설치합니다. 이는 Vapor 프로젝트를 쉽게 생성하고 관리할 수 있게 해줍니다.

아래 명령어 실행후 잠시 대기
최신 버전 확인 :https://github.com/vapor/toolbox/releases

git clone https://github.com/vapor/toolbox.git
cd toolbox
git checkout <desired version> //최신버전으로
sudo apt install make 
make install

vapor --help 명령어시 경로 지정 오류가 생긴다.

해당 임시 경로 설정

export PATH=$PATH:/usr/local/bin

설치확인

vapor --version

패키지가 없다고 한다. 프로젝트 생성하러 가자

참고 문서
https://docs.vapor.codes/install/linux/

PostgreSQL 설치:

PostgreSQL를 사용하기때문에 관련 패키지또한 서버에 미리 설치해준다.

sudo apt-get update
sudo apt-get install postgresql postgresql-contrib

메모리 부족시 (선택)

프리티어 t2.micro선택시 메모리가 1기가라 이후에 서버빌드할때 터진다.

Swap 파일 생성 및 활성화

Swap 파일 생성: 먼저, swap 파일을 생성합니다. 아래 예시에서는 1GB 크기의 swap 파일을 생성합니다. 필요에 따라 크기를 조정할 수 있습니다.

sudo fallocate -l 1G /swapfile

파일 권한 설정: Swap 파일은 보안상의 이유로 제한된 권한을 가져야 합니다.

sudo chmod 600 /swapfile

Swap 영역 설정: 생성한 파일을 swap 영역으로 설정합니다.

sudo mkswap /swapfile

Swap 활성화: Swap을 활성화하여 사용합니다.

sudo swapon /swapfile

Swap 설정 유지
Swap 설정이 재부팅 후에도 유지되도록 하려면, /etc/fstab 파일에 swap 설정을 추가해야 합니다.

fstab 파일 편집:

sudo nano /etc/fstab

다음 줄 추가: 파일의 끝에 다음 줄을 추가합니다.

/swapfile swap swap defaults 0 0

파일 저장 및 종료: 변경 사항을 저장하고 편집기를 종료합니다.

Swap 설정 확인
Swap 설정이 제대로 적용되었는지 확인하려면, 다음 명령어를 사용합니다.

sudo swapon --show

시스템의 전체 메모리 상태를 확인하려면 free -h 명령어를 사용합니다.

프로젝트 생성 및 구성:

Vapor 명령어를 사용하여 새 프로젝트를 생성하고, 필요한 모델, 컨트롤러, 라우트 등을 설정합니다.

디렉토리 생성

/Jihoon/Projects/에 만들것임

mkdir Jihoon
mkdir Projects

프로젝트 생성

vapor new MyVaporProject
vapor new VaporProject

의존성 빌드

swift build
swift package update

vapor 서버 외부 접속허용

vapor 서버 외부 접속허용

vapor package가 있는 상위폴더에서 실행한다.

swift run App serve --env production --hostname 0.0.0.0 --port 8080

ubuntu GUI 설치: xfce설치

패키지 목록 업데이트:

sudo apt-get update

GUI 설치:

Xfce 설치 방법

터미널 열기: Ubuntu에서 터미널을 열어 줍니다.

패키지 목록 업데이트: 최신 패키지 정보를 얻기 위해 터미널에서 다음 명령어를 실행합니다.

sudo apt-get update

Xfce 설치: 다음 명령어를 사용하여 Xfce 데스크탑 환경을 설치합니다.

sudo apt install xfce4

원격 데스크톱 솔루션 VNC 서버 설치

GUI 환경을 만들기위해 VNC 서버를 설치해야함
설치

sudo apt-get install tightvncserver

설정

vncserver
  1. VNC 서버 설정 확인
    원격 접속에 사용하는 VNC 서버 설정을 확인하세요. 예를 들어, vncserver를 사용하는 경우:
mkdir /home/ubuntu/.vnc
nano ~/.vnc/xstartup

or

vim ~/.vnc/xstartup

Xfce 세션 시작 설정: 파일에 다음과 같은 내용을 포함시키거나 수정합니다.

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

실행 권한 부여: xstartup 파일에 실행 권한을 부여합니다.

chmod +x ~/.vnc/xstartup

VNC 서버 재시작: 변경 사항을 적용하기 위해 VNC 서버를 재시작합니다.

vncserver -kill :1

로컬에서 VNC 서버 설치

https://www.realvnc.com/en/connect/download/viewer/

보안포트열기

설치후 로컬에서 RealVNC 에서 접속

공용 ipv4주소:5900 + 포트번호

13.237.29.39:5901
scp -r -i "/Users/kimjihun/Desktop/AWS/KeyPair/aws-keypair.pem" ./ "ubuntu@13.237.29.39:/home/ubuntu/project"

프로젝트 이동

로컬에서 개발한 프로젝트를 EC2 서버로 이동시키기 위해 git, rsync, scp 등의 도구를 사용

보낼 소스코드 디렉토리 이동

cd /path/to/your/vapor/project

내소스 코드 디렉토리

cd /Users/kimjihun/Desktop/techit/git팀원들과협업/Swift_Project/Vapor_helloDemo/Vapor_hello

scp 명령 사용하여 보내기

옮길 디렉토리로 들어간뒤 아래 명령어를 실행한다.

scp -r -i /path/to/your/private-key.pem ./ your-ec2-user@your-ec2-server-ip:/home/ubuntu/project

Ex)내 디렉토리

scp -r -i "/Users/kimjihun/Desktop/AWS/KeyPair/aws-keypair.pem" ./ "ubuntu@13.237.29.39:/home/ubuntu/project"

Vapor프로젝트 빌드

확인하기위해 EC2서버 옮겨진 경로에서 프로젝트 빌드

swift run App serve --env production --hostname 0.0.0.0 --port 8080

API 개발:

REST API 엔드포인트를 개발합니다. 이때는 Swift 언어를 사용하여 로직을 구현합니다.

로컬 테스트 및 디버깅:

개발 중에는 로컬 환경에서 프로젝트를 실행하고 테스트합니다. CLI(Command Line Interface)와 Swift 컴파일러를 사용하여 오류를 디버깅할 수 있습니다.

배포:

개발이 완료되면, Ubuntu 서버에 API를 배포하고 실행합니다.

profile
블로그 이전합니다 https://james-kim-tech.tistory.com/

0개의 댓글