Amazon Web Services에 레일즈 프로젝트 배포하기
나중에 필요할 때 다시 보려고 만든 거라 짜임이 없습니다ㅠㅠ
제가 디플로이할 때 문제가 없었으나 문제가 있을 수도 있습니다..
* 메인 출처: 이두희 대장님의 "멋쟁이 사자처럼" 4기 온라인 강의
//t2.micro 기준//
Passenger gem 설치
gem install passenger
gcc c++ 설치
sudo yum install -y gcc-c++.noarch libcurl-devel.x86_64 sqlite-devel pcre-devel.x86_64
sudo chmod o+x "/home/ec2-user"
루트 계정 비밀번호 만들기 (비밀번호 설정)
sudo passwd
su로 접속(su 엔터 후 비밀번호 엔터)
su
Phusion Passenger Nginx module 깔기
passenger-install-nginx-module
화살표 내리고 스페이스바로 파이선은 해제. 즉 루비만 체크.
* 메모리 부족하다 뜸(t2.micro 기준) // 상위 티어의 경우 아래의 과정이 불필요할 수 있습니다.
ctrl+c
sudo dd if=/dev/zero of=/swap bs=1M count=1024
sudo mkswap /swap
sudo swapon /swap
passenger-install-nginx-module
1. Yes: download, compile and install Nginx for me. (recommended)
1
Please specify a prefix directory [/opt/nginx]:
그냥 엔터
설치 완료 확인되면
엔터
관리자 계정에서 빠져나옴
exit
루트 폴더 변경
sudo vi /opt/nginx/conf/nginx.conf
쭉 내리다가 server로 시작하는 곳 위에다가 아래의 내용을 넣음
server {
listen 80;
server_name 서버 도메인 주소 혹은 IP 주소;
passenger_enabled on;
root /home/ec2-user/프로젝트 이름(중요, 폴더명 확인)/public;
}
nginx ON
sudo /opt/nginx/sbin/nginx
위에 쳤는데 오류가 뜨면
sudo /opt/nginx/sbin/nginx -s reload
프로젝트 디렉터리로 이동
cd ~
cd 프로젝트 이름
rake db:migrate RAILS_ENV=production
만약, 오류 뜨면 프로젝트 루트 폴더에 Gemfile에서 therubyracer에 대한 주석을 삭제
vi Gemfile
#gem 'therubyracer', platforms: :ruby => gem 'therubyracer', platforms: :ruby
다시
rake db:migrate RAILS_ENV=production
rake secret
하고 나온 키를 복사
vi ~/.bashrc
맨 밑에 줄에
export SECRET_KEY_BASE=아까 나온 키값
프로젝트 폴더에서
mkdir tmp
패신저 재실행
touch tmp/restart.txt
아래의 사이트에 자세히 설명되어 있으니 참고하면 좋다.
https://www.phusionpassenger.com/library/walkthroughs/deploy/ruby/