구 원트노/AWS 디플로이

[Ruby on Rails + AWS + Mysql] 7. 환경 변수,데이터베이스,서버 실행(아마존 프리티어 사용해 웹 서버 구축하기)


이전 글


[루비/루비 온 레일즈] - [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 서버 세팅 (아마존 프리티어 사용해 웹 서버 구축하기)

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



1. 환경 변수 설정(figaro gem)

Rails에서는 환경 변수 값을 쉽게 설정해주는 gem으로 figaro가 있습니다.
이것을 사용해서 여러 환경 변수 값을 설정해주겠습니다.


미리 프로젝트에 figaro gem을 설치해두었으므로 추가로 설치하지 않겠습니다.

만약 설치 안 했다면 gemfile에 gem "figaro"를 추가하세요.

일단 figaro gem을 사용하겠습니다.

1
bundle exec figaro install
cs


이 후 생성된 config/application.yml 에 환경 변수 값을 설정해주면 됩니다.

1
2
3
 production:
   SECRET_KEY_BASE: "2d8f75c9be5c591a5d990165e23dc44e6b62f111cde71f" #rake secret으로 생성한 무작위 
   SUMMERFOLD_DATABASE_PASSWORD: "비밀번호" #mysql root 계정 비밀번호
cs

여기서 보이는 SECRET_KEY_BASE 같은 환경 변수값은 원래 어디에 설정되어 있나면

config/secret.yml에


또 config/database.yml에


이런식으로 설정 되어있었던 것들입니다.


2. 데이터베이스 마이그레이션

production모드로 데이터베이스 마이그레이션을 하겠습니다.

mysql은 sqlite와 다르게 migrate하기 전에 create를 먼저 해줘야 합니다.

1
2
rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production
cs

3. 웹 서버 실행

마지막 작업으로 웹 서버를 실행하고 precompile작업을 합니다.


먼저 nginx 서버를 실행합니다.

1
sudo /opt/nginx/sbin/nginx
cs


다음으로 precompile 작업을 해줍니다.

1
RAILS_ENV=production rake assets:precompile
cs
이 작업을 해주지 않으면 css나 이미지 파일이 연결되지 않는 문제가 생깁니다.


마지막으로

1
touch tmp/restart.txt
cs
이 명령어를 실행해주면 모든 작업이 끝납니다.
만약 rails 프로젝트를 수정했다면 위 명령어만 다시 실행하면 변경 사항이 적용이 됩니다.

추가적으로 nginx를 아예 종료하고 싶다면
1
sudo kill $(cat /opt/nginx/logs/nginx.pid)
cs
이 명령어를 사용하면 됩니다.


이렇게 인스턴스의 public ip로 접속하면

생성한 프로젝트가 가동되고 있는 것을 볼 수 있습니다.


이 포스팅을 마지막으로 "아마존 프리티어 사용해 웹 서버 구축하기" 작업이 끝이 났습니다.

비록 작업이 복잡하더라도 한 번 처음부터 끝까지 해본다면 흐름을 이해하실 수 있을 겁니다.

긴 글 읽어주셔서 감사합니다.


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