brunch

You can make anything
by writing

C.S.Lewis

by Argent Aug 27. 2016

Ubuntu에 퓨전 패신저(+Nginx) 설치

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/

매거진의 이전글 [IntelliJ] JavaWeb 초기 세팅하기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari