----- 이번 포스팅에서는 Hello World 성공했습니다. ------
저번 포스팅까지 한것
- GCP 무료 인스턴스 생성 (Ubuntu18.04)
- Ubuntu Swift5 환경 구축
- Swift 컴파일되는거 확인
- Vapor 프레임워크 설치
- Vapor Build & Serve 확인
- localHost 에서 Run
근데 VM 외부 ip 로 접속 했을 때 connection refused 가 뜬다.
생각해보니 Spring boot 서버 세팅할 때 순서가
- 로컬에서 스프링부트 init
- 로컬에서 API 개발
- 깃 리모트 레포에 푸쉬
- 클라우드 서버에 아파치2, Nginx 설치
- 해당 깃 풀 받기
- 뭐 서버 돌리기
였던걸로 기억난다.
문제점은 Vapor 를 서버에서 돌렸을때 돌아가는 하는데 외부 접속을 위한 단계가 빠진 것 같다.
오늘은 기필코 Hello World api 만든다.
(투자한 시간 3일째)
새마음 새뜻으로 새롭게 VM 부터 파겠다.
VM 지우고 깔고 지우고 깔고 역쉬 클라우드가 편해
이제는 외우겠다
- Ubuntu 16.04 로 인스턴스 생성
- SSH 접속
Swift 5.2.5 설치 (본인의 OS 에 맞는 Swift 바이너리 파일 주소를 적어야 합니다.)
sudo apt-get update
sudo apt-get install clang libicu-dev libpython2.7
wget https://swift.org/builds/swift-5.2.5-release/ubuntu1604/swift-5.2.5-RELEASE/swift-5.2.5-RELEASE-ubuntu16.04.tar.gz
tar xzf swift-5.2.5-RELEASE-ubuntu16.04.tar.gz
sudo mv swift-5.2.5-RELEASE-ubuntu16.04.tar.gz /usr/share/swift
echo "export PATH=/usr/share/swift/usr/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
sudo apt-get install python3-swiftclient
Ubuntu18.02 에서는 swiftclient 깔라는 얘기는 없었는데 16.04라서 그런가
Nginx 설치 및 방화벽 설정
sudo apt-get update
sudo apt-get install nginx
sudo ufw allow 'Nginx HTTP'
sudo ufw status
systemctl status nginx
외부 ip 로 접속
문제를 찾았다. 문제는 Vapor 가 아니다. 일단 외부 ip 접속 부터 해보자
다시 인스턴스 삭제했다가
이번엔 다시 우분투 18.02 로 만들었다.
sudo su
apt-get update
apt-get upgrade
apt-get install nginx
그리고 외부 ip 에 접속해보는데
https 로 하면 안된다 http 로 해야된다 하 이거때매 안되는줄 알고 vm 2번 새로 만들었다 아 짜증나네 진짜
정신차리고 다시 정리해보자
- vm 인스턴스 만든다 (우분투)
- Nginx 설치한다.
- HTTP 로 외부 ip 접속했을때 welcome to nginx 뜬다.
https 로도 접속 가능하게 인증서 추가한다. 생략- 거기에 swift 환경 설치한다.
- 거기에 vapor 환경 설치한다.
- Nginx 랑 vapor 연결해준다 (포워딩)
- 데모 프로젝트 만들어서 hello world 띄운다.
- Supervisor 로 SSH 창 꺼도 계속 동작하게 한다.
참고할 점은 Apple 은 Http로 통신하면 경고뜬다. HTTPS 써야된다.
근데 나는 나중에 필요하면 바꾸고 일단은 Hello World 제발
Ubuntu 18.04 인스턴스 생성
버전주의
Nginx 설치
sudo su
apt-get update
apt-get upgrade
apt-get install nginx
외부 ip http 기본 페이지 확인
Swift 설치
sudo apt-get update
sudo apt-get install clang libicu-dev libpython2.7
wget https://swift.org/builds/swift-5.2.5-release/ubuntu1804/swift-5.2.5-RELEASE/swift-5.2.5-RELEASE-ubuntu18.04.tar.gz
tar xzf swift-5.2.5-RELEASE-ubuntu18.04.tar.gz
sudo mv swift-5.2.5-RELEASE-ubuntu18.04 /usr/share/swift
echo "export PATH=/usr/share/swift/usr/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
swift --version
swift
:exit
Vapor 설치
사실은 Swift 5.1.0 깔아서다시하고있음 이래서 도커를 쓰는구나 싶다.
git clone https://github.com/vapor/toolbox.git
cd toolbox
git checkout <원하는버전> //나는 최신버전이니까 master
swift build -c release --disable-sandbox --enable-test-discovery
mv .build/release/vapor /usr/local/bin
아 증말 이단계에서 진행이 안된다. 너무 오래걸려ㅠㅠ
리얼 한 1시간 걸린거 같다.
vapor 프로젝트 만들어서 NGIX 포워딩
vapor new hello
/etc/nignx/sites-available 파일 수정
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
try_files $uri @proxy;
location @proxy {
proxy_pass http://127.0.0.1:8080;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Server;
proxy_connect_timeout 3s;
proxy_read_timeout 10s;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
}
}
nginx 재시작 후 vapor 서버 시작
sudo systemctl restart nginx
cd ~/hello
vapor build
vapor run
처음 빌드하는 거면 시간이 꽤 걸린다.
http://YourDomainOrIP/hello 접속했을 때 Hello World 나오면 성공
와씨 됬다 드디어 하 참 Hello World 겁나 반갑네
Supervisor 설치 (생략했음)
sudo apt-get update
sudo apt-get install supervisor
config 파일 만들기
경로 - /etc/supervisor/conf.d/hello.conf
아래 sammy 를 본인 이름 루트로 변경
내 경로는
uuzaza74@vapor:~$ pwd
/home/uuzaza74
그래서 sammy 에 내 경로를 넣어준다.
[program:hello]
command=vapor run --env=production
directory=/home/sammy/hello/ # Put correct path here
autorestart=true
user=sammy # Put username here
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
서비스 에러나도 자동으로 다시 시작하는 기능
sudo supervisorctl reread
sudo supervisorctl add hello
sudo supervisorctl start hello
일단 supervisor 는 붙이지 않겠다.
SSH 연결 끄고도 접속 되는지 확인
후기
- 소요시간 3일
- VM 인스턴스 28번 삭제했다 만듬
- 자 이제 시작이야
- 편하게 스프링부트 쓸껄
- 시작한 김에 끝까지?
- 굳이 Vapor..?
- 디비는 또 어떻게 하지
- CI/CD는 뭘로하지?
- 아
https://medium.com/@ankitank/deploy-a-basic-vapor-app-with-nginx-and-supervisor-1ef303320726
https://gist.github.com/DevSecOpsGuy/281ffc34e4fc2f01e36d1e2bdf9db574
'Server > Vapor - Server_Side_Swift' 카테고리의 다른 글
Vapor 서버 만들기 - Ubuntu+Swift+Vapor+Github+Supervisor(5) (0) | 2020.08.16 |
---|---|
Vapor 서버 만들기 - Ubuntu+Swift+Vapor+Github(4) (0) | 2020.08.16 |
GCP - 피땀흘린 서버 인스턴스 이미지로 백업하기 (0) | 2020.08.16 |
GCP - 무료 Vapor 서버 만들기 - Ubuntu+Swift(2) (0) | 2020.08.15 |
GCP - 무료 Vapor 서버 만들기 - Ubuntu+Swift(1) (2) | 2020.08.14 |
댓글