2018년 3월 9일자 확인됨
우분투에 서버 설치하기
시작하기전 기본 설정
- EC2 기본형 올리기 (프리티어급)
- express 노드 앱이 준비 되어 있다는 가정
- putty나 맥을 통해서 터미널로 접속이 가능해야함 (pem 파일 이미 등록된 상태)
DB는 AWS RDS 이용합니다.
파일 서버는 S3 이용합니다.
방화벽 설정하기
aws ec2는 콘솔에서 설정가능
참고 링크 :
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-16-04
ufw allow 80
ginx 설치
N일반적으로 우분투에 설치시 최신버전을 설치를 안한다. 그래서 저장소 키를 가져와서 직접 최신걸로 업데이트를 할 수 있다.
참고내용 :
https://websiteforstudents.com/install-nginx-latest-version-ubuntu-16-10-17-04/
https://bjornjohansen.no/install-latest-version-of-nginx-on-ubuntu
사인키 등록
// get nginx key
curl -O https://nginx.org/keys/nginx_signing.key
// install
apt-key add nginx_signing.key
$ sudo echo -e "deb https://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx" > /etc/apt/sources.list.d/nginx.list
sudo apt-get update
sudo apt-get install nginx
업그레이드시
sudo apt-get dist-upgrade
버전 체크
nginx -v
-> nginx version: nginx/1.10.3 (Ubuntu)
명령어 모음
// 시작
$ sudo service nginx start
$ sudo systemctl start nginx
$ sudo /etc/init.d/nginx start
// 재시작
$ sudo service nginx restart
$ sudo systemctl restart nginx
$ sudo /etc/init.d/nginx restart
// 중지
$ sudo service nginx stop
$ sudo systemctl stop nginx
$ sudo /etc/init.d/nginx stop
// 상태
$ sudo service nginx status
$ sudo systemctl status nginx
// 설정 reload
$ sudo service nginx reload
$ sudo systemctl reload nginx
$ sudo nginx -s reload
FTP 설치
sudo apt-get install vsftpd
설정페이지
nano /etc/vsftpd.conf
기본 설정
# chroot 적용
# 아래와 같은 설정을 할 경우 사용자들은 자신의 계정에서 상위 디렉토리로 이동할수 없게된다.
chroot_local_user=YES
# 수정 가능
write_enable=YES
*chroot_local_user=YES 주석을 풀면 아래와 같은 에러가 발생하는 경우가 있음
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
이러한 경우 vsftpd.conf 파일에
allow_writeable_chroot=YES 을 추가 저장
출처: http://nahosung.tistory.com/40 [nahos]
그리고 유저를 추가
adduser test
//비번 입력창 나오면 알아서 입력
FTP 권한 및 옵션 확인
echo 'allow_writeable_chroot=YES' >> /etc/vsftpd.conf //YES로 변경
chmod 777 /home/{유저이름}
sudo /etc/init.d/vsftpd restart //재가동
기본 설정
vsftpd.conf 와 관련된 내용
1. FTP의 포트를 바꾸고 싶으면 어떻게 해야 할까?
listen=YES 라고 써 있는 부분 아래에
listen_port=21022 (원하는 포트번호로 넣어줌) 적어준다
2. 비계정(guest)의 접속을 허용하게 하려면
anonymous_enabled=NO 를 YES로 변경해 준다.
3. 업로드 가능하게 하려면?
write_enable=YES에 걸려있는 주석을 제거해야 한다.
4. 파일 업로드 했을 때 파일의 권한을 설정하려면 어떻게 해야 하나?
local_umask=022 (마스킹 처리가 되기 때문에 022로 하면 해당파일은 755 라고 설정된다)에 걸려있는 주석을 제거한다.
5. 계정사용자가 상위디렉토리(root 디렉토리)에 접근하는 것을 허용하려면?
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
최초에 설치하면 주석이 걸려있는데 이것은 상위 디렉토리로 이동하는것을 막기 위함이다.
이 주석을 제거하고 난 후에 chroot_list_file 항목에 적혀있는 경로로 파일을 만들고 그 안에 계정이름을 적으면 상위로 이동하 것이 허용된다.
$sudo vi /etc/vsftpd.chroot_list
user1
user2
이렇게 하면 user1과 user2는 상위 디렉토리로 이동이 가능해진다.
6. root 계접 접속을 허용하려면?
$sudo vi /etc/ftpusers
root 계정에 앞에 주석처리 해준다 (또는 삭제)
노드 설치
nvm 으로 설치
https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04
또는 정식 설치
https://nodejs.org/en/download/package-manager/
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
or
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install -y nodejs
네이티브 애드온 설치
sudo apt-get install -y build-essential
노드를 백그라운드에서 돌릴수 있는 PM2 설치
sudo npm install pm2 -g
pm2 startup systemd //서버 재시동시 자동으로 올릴수 있도록
pm2 start ./bin/www //express app.js 실행
그리고 pm2을 통해서 외부에서 모니터링 설치
https://app.keymetrics.io 추천 ( 1개까진 무료 )
//create bucket 후
pm2 link b3o4z****** rxio4******** //메뉴얼대로 진행
이제 ngnix에서 내부 서버로 포워딩해야함
참고 사이트 :
vi /etc/nginx/sites-available/default
..........
# / 루트로 오는 경우 3000번으로 포워딩처리
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
.........
혹시 site-avavailable
폴더가 안만들어진 경우...
cd /etc/nginx/sites-enabled
//없는 폴더일 경우
//1. sites-enabled 폴더를 만든다.
//2. default(사이트이름가능) 만든다.
vi /etc/nginx/sites-enabled/default
///etc/nginx/sites-enabled/default 내용
server {
listen 80;
server_name {도메인주소};
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
nginx sites-enabled에 symlink 생성하기
이제sites-available
에 있는 파일들에 대해서sites-enabled
에 symlink를 추가합시다
mkdir /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/[아까 만든 default] /etc/nginx/sites-enabled/
그리고 문법에 이상없는 지 체크
nginx -t
-> nginx: configuration file /etc/nginx/nginx.conf test is successful
그럼 ngnix 재시작
// 재시작은 아래에 있는 명령어 중 하나로 실행하시면 됩니다.
$ sudo service nginx restart
$ sudo systemctl restart nginx
$ sudo /etc/init.d/nginx restart
-> [ ok ] Restarting nginx (via systemctl): nginx.service.
그러면 포스트맨이나 웹에서 접속 테스트를 해본다.
도메인은 router 53에서 A 레코드로 하나 추가함.
그리고 value 에 해당 아이피를 입력함
시간이 다소 걸릴 수 있음
도메인 변경후 접속 테스트를 해서 통과가 되는 경우 HTTPS 설치로 넘어가자.
HTTPS 설치 - letsencrypt + certbot 이용
으로 가서 맞는 환경을 선택...
우선 우분투 버전 체크
lsb_release -a
--------------------------
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
certbot 환경선택 에서 우분투 16.04 + Nginx 선택
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
그리고 certbot 인증 절차를 시작한다.
sudo certbot --nginx
// 이메일 등록하라고 함
// 기타 몇가지 설정하고 도메인이 꼭 설정이 되어 있어야 함
// 마지막은 http로 온걸 https로 리다이렉트할꺼냐 물어봄
그리고 letencrypt
이용시 3개월마다 갱신해야 한다. 이걸 자동 등록할수 있다.
sudo certbot renew --dry-run
그리고 https
로 접속 확인해본다.
마지막으로 제대로 되었는지 SSL 등급 테스트
를 해보자
그럼 이제 완료가 되었다. 터미널 끄고 개발하면 된다..ㅠㅠ
추가적으로 nginx 에 파일업로드시 용량부족이 뜨는 경우가 있다.
sudo nano /etc/nginx/nginx.conf
.............
http 부분에
client_max_body_size 2M; //2M 부분에 원하는 용량 적으면 된다.
.............
sudo /etc/init.d/nginx restart
'스터디 > Server' 카테고리의 다른 글
Spring Boot + Pm2 배포하기(Deploy) (0) | 2018.08.02 |
---|