스마트 폰 앱 개발시 갑자기 두드리는 API 서버를 nginx, Let’s encrypt, JSON Server로 구축
7036 단어 JSONnginxSwiftAmazonLinuxNode.js
목적
스마트 폰 앱 개발의 초기 단계에서 아직 API의 사양 등이 푹 빠져있는 상황에서, 사쿠토 시험용 API 서버를 세우고, API를 조금 꼬아 보면서 앱 개발을하고 싶다.
로컬 머신에 JSON Server로 API 서버 세우는 것이 제일 빨리 보였지만, 어차피라면 네트워크상에 두어 HTTPS로 API 두드려 보고 싶네요, 라고 하는 것으로 구축해 보았다.
완성 예정도
스마트폰 앱 개발용 PC
↓↑
HTTPS(Let’s encrypt)
↓↑
Nginx(:443)
↓↑
JSON 서버(:3000)
※ 서버는 EC2 사용하고 있지만 취향에 맞게 부디
구축 절차
1. AWS 및 도메인 준비
1. 관리 콘솔 등에서 EC2 인스턴스를 시작합니다.
스마트폰 앱 개발용 PC
↓↑
HTTPS(Let’s encrypt)
↓↑
Nginx(:443)
↓↑
JSON 서버(:3000)
※ 서버는 EC2 사용하고 있지만 취향에 맞게 부디
구축 절차
1. AWS 및 도메인 준비
1. 관리 콘솔 등에서 EC2 인스턴스를 시작합니다.
2. ElasticIP 1개 지불
2. Node.js 설치
# nvmをインストールする
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
# Node.jsのLTSバージョンをインストールする(ここはお好みで)
$ nvm install v4.4.4
# インストールしたNode.jsの設定 + デフォルトver.として指定する
$ nvm use 4.4.4
$ nvm alias default 4.4.4
# インストールされたNode.jsのver.を確認する
$ node -v
3. json-server 설치
$ npm install -g json-server
OK
API 내용 정의(db.json)
db.json
{
"users": [],
"keywords": [
{
"id": 1,
"text": "hoge"
},
{
"id": 2,
"text": "fuga"
},
{
"id": 3,
"text": "piyo"
}
],
"articles": []
}
json-server에 db.json을 주어 시작
시작시 라우팅 내용이 출력됩니다.
$ json-server db.json
\{^_^}/ hi!
Loading db.json
Done
Resources
http://localhost:3000/users
http://localhost:3000/keywords
http://localhost:3000/articles
Home
http://localhost:3000
Type s + enter at any time to create a snapshot of the database
엔드포인트에 액세스해 보기
$ curl http://localhost:3000/keywords
[
{
"id": 1,
"text": "hoge"
},
{
"id": 2,
"text": "fuga"
},
{
"id": 3,
"text": "piyo"
}
OK
4. Let’s encrypt로 무료 SSL 인증서 획득
Let’s encrypt 설치
# install
sudo yum install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
# confirm
./letsencrypt-auto --help
# 証明書の発行
sudo ./letsencrypt-auto certonly -a standalone -d ドメイン名 --debug
# 発行に成功した場合下記パスに秘密鍵とサーバ証明書と中間証明書が結合されたファイルが出力されているのでnginxのSSL設定時に利用
# /etc/letsencrypt/live/ドメイン名/privkey.pem
# /etc/letsencrypt/live/ドメイン名/fullchain.pem
5. nginx(443번 포트)에서 요청을 받고 json-server(3000번 포트)에 액세스를 흘린다
# nginxのインストール
$ yum install -y nginx
# nginxの設定
$ vim /etc/nginx/nginx.conf
설정 파일에서 # Settings for a TLS enabled server.
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name ドメイン名; # 修正1
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/ドメイン名/fullchain.pem”; # 修正2
ssl_certificate_key "/etc/letsencrypt/live/ドメイン名/privkey.pem”; # 修3
# It is *strongly* recommended to generate unique DH parameters
# Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048
#ssl_dhparam "/etc/pki/nginx/dhparams.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost:3000; # 修正4
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
nginx 시작
$ service nginx start
6. HTTPS로 API 서버에 액세스 해보십시오
흠흠, 좋을 것 같네요.
좋다.
그리고는 JSON 서버 의 문서를 보면서 APIKit등으로 가시가시 API 두드리자!
7. 정리
nginx·Let’s encrypt·JSON Server를 사용해, 빨리 두드리는 API 서버를 구축해 보았다.
도메인 주위의 설정만 끝나고 있으면, 10분 전후로 HTTPS로 API를 두드리는 상태까지 이케한다고 생각합니다.
참고
Amazon Linux에 Node.js 및 npm 넣기
【개인 메모】 JSON Server를 사용하여 손쉽게 WebAPI 모형을 만듭니다.
JSON 서버
# install
sudo yum install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
# confirm
./letsencrypt-auto --help
# 証明書の発行
sudo ./letsencrypt-auto certonly -a standalone -d ドメイン名 --debug
# 発行に成功した場合下記パスに秘密鍵とサーバ証明書と中間証明書が結合されたファイルが出力されているのでnginxのSSL設定時に利用
# /etc/letsencrypt/live/ドメイン名/privkey.pem
# /etc/letsencrypt/live/ドメイン名/fullchain.pem
# nginxのインストール
$ yum install -y nginx
# nginxの設定
$ vim /etc/nginx/nginx.conf
설정 파일에서 # Settings for a TLS enabled server.
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name ドメイン名; # 修正1
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/ドメイン名/fullchain.pem”; # 修正2
ssl_certificate_key "/etc/letsencrypt/live/ドメイン名/privkey.pem”; # 修3
# It is *strongly* recommended to generate unique DH parameters
# Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048
#ssl_dhparam "/etc/pki/nginx/dhparams.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://localhost:3000; # 修正4
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
nginx 시작
$ service nginx start
6. HTTPS로 API 서버에 액세스 해보십시오
흠흠, 좋을 것 같네요.
좋다.
그리고는 JSON 서버 의 문서를 보면서 APIKit등으로 가시가시 API 두드리자!
7. 정리
nginx·Let’s encrypt·JSON Server를 사용해, 빨리 두드리는 API 서버를 구축해 보았다.
도메인 주위의 설정만 끝나고 있으면, 10분 전후로 HTTPS로 API를 두드리는 상태까지 이케한다고 생각합니다.
참고
Amazon Linux에 Node.js 및 npm 넣기
【개인 메모】 JSON Server를 사용하여 손쉽게 WebAPI 모형을 만듭니다.
JSON 서버
nginx·Let’s encrypt·JSON Server를 사용해, 빨리 두드리는 API 서버를 구축해 보았다.
도메인 주위의 설정만 끝나고 있으면, 10분 전후로 HTTPS로 API를 두드리는 상태까지 이케한다고 생각합니다.
참고
Amazon Linux에 Node.js 및 npm 넣기
【개인 메모】 JSON Server를 사용하여 손쉽게 WebAPI 모형을 만듭니다.
JSON 서버
Reference
이 문제에 관하여(스마트 폰 앱 개발시 갑자기 두드리는 API 서버를 nginx, Let’s encrypt, JSON Server로 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/uti/items/ab2910881058cad871c9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)