Phusion Passenger on Ubuntu(AWS EC2)
참고한 사이트(rbenv 설치까지만 같고 Phusion Passenger는 다른 방법으로 설치했다.)
https://gorails.com/deploy/ubuntu/14.04
우분투의 패키지 관리 도구인 apt-get 업데이트 및 기본적으로 필요한 개발자 프로그램 설치
sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
rbenv 설치하기
cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
ruby 2.3.0 설치(버전은 옵션)
rbenv install 2.3.0
rbenv global 2.3.0
ruby -v
bundler 설치하기
gem install bundler
rbenv rehash
//t2.micro 기준//
Passenger gem 설치
gem install passenger
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
아마 Permission Denied 오류가 뜰 것임. 그렇다면 아래 커맨드 입력
sudo `which passenger-install-nginx-module`
1. Yes: download, compile and install Nginx for me. (recommended)
1
Please specify a prefix directory [/opt/nginx]:
그냥 엔터
설치 완료 확인되면
엔터
루트 폴더 변경
sudo vi /opt/nginx/conf/nginx.conf
쭉 내리다가 server로 시작하는 곳 위에다가 아래의 내용을 넣음
server {
listen 80;
server_name 서버 도메인 주소 혹은 IP 주소;
passenger_enabled on;
root /home/ubuntu/프로젝트 이름(중요, 폴더명 확인)/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
하고 나온 키를 복사 // 이 방법 말고도 figaro라는 gem을 사용하는 방법도 있음.
vi ~/.bashrc
맨 밑에 줄에
export SECRET_KEY_BASE=아까 나온 키값
프로젝트 폴더에서
mkdir tmp
패신저 재실행
touch tmp/restart.txt
아래의 사이트에 자세히 설명되어 있으니 참고하면 좋다.
https://www.phusionpassenger.com/library/walkthroughs/deploy/ruby/