구 원트노/AWS 디플로이

[Ruby on Rails + AWS + Mysql] 6. passenger+nginx 웹 서버 세팅 (아마존 프리티어 사용해 웹 서버 구축하기)

이전 글


[루비/루비 온 레일즈] - [Ruby on Rails + AWS + Mysql] 0. AWS란 (아마존 프리티어 사용해 웹 서버 구축하기)

[루비/루비 온 레일즈] - [Ruby on Rails + AWS + Mysql] 1. rails 프로젝트 준비하기 (아마존 프리티어 사용해 웹 서버 구축하기)

[루비/루비 온 레일즈] - [Ruby on Rails + AWS + Mysql] 2. AWS EC2 인스턴스 생성 (아마존 프리티어 사용해 웹 서버 구축하기)

[루비/루비 온 레일즈] - [Ruby on Rails + AWS + Mysql] 3. putty 사용 (아마존 프리티어 사용해 웹 서버 구축하기)

[루비/루비 온 레일즈] - [Ruby on Rails + AWS + Mysql] 4. 서버 초기 세팅 (아마존 프리티어 사용해 웹 서버 구축하기)

[루비/루비 온 레일즈] - [Ruby on Rails + AWS + Mysql] 5. Mysql DB 서버 세팅 (아마존 프리티어 사용해 웹 서버 구축하기)




1. passenger+nginx 웹 서버 세팅

꺼지지 않는 사이트를 구동하려면 웹 서버가 필요합니다. 

이번 포스팅에서는 이 웹 서버를 설치하고 설정하는 작업을 진행하겠습니다.

웹 서버는 여러 종류가 있습니다. 가장 대표적으로는 Apache가 있고, 저희가 이번에 사용할 Nginx가 있습니다.

Nginx의 특징으로 말하자면 더 적은 자원으로 더 빠르게 데이터를 서비스 할 수 있다고 합니다.

저희가 사용하는 프리 티어의 용량이 그리 크지는 않아서 Apache보다 Nginx가 더 적합합니다.


Rails에서는 앱을 배포할 수 있도록 도와주는 gem으로 Passenger가 있습니다. 

이 Passenger를 통해 Nginx를 설치해 보겠습니다.


먼저 passenger 젬을 설치해보겠습니다.

1
gem install passenger
cs


다음 Nginx를 설치하겠습니다. Nginx는 root 사용자 계정을 통해 설치해야 하기 때문에 root 계정으로 사용자를 변경해줍니다.

먼저 root사용자의 비밀번호를 설정합니다.

1
sudo passwd 
cs


이 명령어 다음 원하는 비밀번호를 설정합니다. 

설정이 완료되면 

1
su
cs

명령어를 통해 root 계정으로 전환해줍니다.

root 계정으로 전환되면 앞에 ec2-user였던 부분이 root로 전환되고 

명령어 전에 있던 $표시가 #으로 바뀌어있는 걸 볼 수 있습니다.


이제 Nginx를 설치합니다.

1
passenger-install-nginx-module
cs


중간에 ruby, python, node.js 등등 선택하라고 나와있는 부분에서 ruby를 선택해줍니다.

enter를 누르고 진행하다 보면 중간 중간 막히는 부분이 존재합니다.

그러면 ctrl+c를 눌러 설치를 종료하고 순서대로 이 명령어들을 치면 해결됩니다.

맨 처음 나오는 오류로 보안상 문제로 특정 폴더로 접근하지 못한다고 나왔을 때 권한 설정해주는 명령어입니다.

1
sudo chmod o+"/home/ec2-user" 
cs

다시 

1
passenger-install-nginx-module
cs

앞의 ruby를 선택하고 진행합니다.


또 하다 보면 curl관련 소프트웨어가 설치되지 않았다고 경고문이 뜹니다.

그러면 다시 설치를 종료하고 curl을 설치해줍니다.

1
sudo yum install libcurl-devel.x86_64 
cs

다시 앞에 nginx 설치 명령어를 실행하고 문제가 생기면

1
sudo dd if=/dev/zero of=/swap bs=1M count=1024
cs

1
sudo mkswap /swap 
cs


1
sudo swapon /swap 
cs

이런 식으로 반복해주시면 Nginx가 설치 완료 되어집니다.


추가적으로 Nginx 설치 부분에 대한 자세한 설명이 필요한 분들은

http://hcn1519.github.io/articles/2016-02/rails_passenger_nginx

여기로 찾아가서 확인하기 바랍니다.


Nginx 설치가 완료되고 root 사용자에서 ec2-user로 전환해줍니다.

1
exit -root
cs


이제 Nginx 설정을 하겠습니다.

1
sudo vi /opt/nginx/conf/nginx.conf
cs

로 접속해서 


server{}라고 되어있는 부분을 찾습니다.

그 위에 이 설정을 추가해줍니다.

1
2
3
4
5
6
7
server {
    listen 80;
    server_name [원하는 도메인];
    passenger_enabled on;
    root /home/ec2-user/[rails 프로젝트명]/public;
}
 
cs

추가해줄 부분은 [원하는 도메인], [rails 프로젝트명]인데

원하는 도메인은 지금 단계에서는 아무거나 설정하셔도 됩니다.

rails 프로젝트 명은 현재 rails 프로젝트명을 적으면 됩니다.



이렇게 Nginx 설치와 기본 설정은 끝이 났습니다.


다음에는 figaro gem으로 환경 변수 값 설정, 데이터베이스 마이그레이션 등 마무리 작업에 대해 포스팅하겠습니다.


궁금하신 점 있으시면 댓글 남겨주세요!!