웹사이트 검색

Ubuntu 14.04에서 Passenger 및 Apache와 함께 Rails 앱을 배포하는 방법


소개

이 자습서에서는 설치, 구성 및 유지 관리가 쉬운 Rails 친화적인 웹 서버로 Phusion Passenger를 설치하는 방법을 보여줍니다. Ubuntu 14.04의 Apache에 통합할 것입니다. 이 자습서가 끝나면 Droplet에 테스트 Rails 애플리케이션이 배포됩니다.

Apache보다 Nginx를 선호하는 경우 링크를 따라 Ubuntu 14.04에서 Passenger 및 Nginx와 함께 Rails 앱을 배포하는 방법을 살펴보세요.

전제 조건

첫 번째 단계는 새 물방울을 만드는 것입니다. 소규모 사이트의 경우 512MB 계획을 사용하면 충분합니다.

메모리 사용량이 적기 때문에 32비트 Ubuntu 이미지를 선택하는 것이 좋습니다(64비트 프로그램은 32비트 프로그램보다 약 50% 더 많은 메모리를 사용함). 그러나 더 큰 시스템이 필요하거나 4GB 이상의 RAM으로 업그레이드할 가능성이 있는 경우 64비트 버전을 고려해야 합니다.

Ubuntu 14.04를 사용해야 합니다. 이 글을 쓰는 시점에서 Ubuntu 14.10에는 아직 Passanger APT 저장소가 없습니다. 게다가 Ubuntu 14.04에는 추가적인 이점이 있습니다. 바로 \장기 지원\을 의미하는 LTS 버전입니다. LTS 릴리스는 오랫동안 사용할 수 있는 안정적인 플랫폼으로 설계되었습니다.Ubuntu는 LTS 릴리스가 5년 동안 보안 업데이트 및 기타 버그 수정을 받을 것을 보장합니다.

  • Ubuntu 14.04 32비트 드롭릿

1단계 - Sudo 사용자 추가

Droplet이 생성되면 시스템 사용자를 생성하고 서버를 보호해야 합니다. 초기 서버 설정 문서에 따라 그렇게 할 수 있습니다.

이 자습서를 따르려면 sudo 권한이 있는 기본 사용자가 필요합니다. 이 예제에서는 rails 사용자를 사용합니다. 사용자 이름이 다른 경우 다음 단계에서 올바른 경로를 사용해야 합니다.

2단계(선택 사항) - 도메인 설정

사이트가 제대로 작동하고 표시되도록 하려면 도메인 이름이 새 서버를 가리키도록 DNS 레코드를 설정해야 합니다. 링크를 따라 호스트 이름 설정에 대한 자세한 정보를 찾을 수 있습니다.

그러나 IP 주소를 통해 사이트에 액세스할 수 있으므로 이 단계는 선택 사항입니다.

3단계 — Ruby 설치

소스에서 Ruby를 수동으로 설치합니다.

다른 작업을 수행하기 전에 업데이트를 실행하여 설치하려는 모든 패키지가 최신 상태인지 확인해야 합니다.

sudo apt-get update

다음으로 일부 라이브러리 및 기타 종속 항목을 설치합니다. 이렇게 하면 설치가 최대한 원활해집니다.

sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev libsqlite3-dev sqlite3

Ruby 소스 파일을 위한 임시 폴더를 만듭니다.

mkdir ~/ruby

새 폴더로 이동:

cd ~/ruby

안정적인 최신 Ruby 소스 코드를 다운로드합니다. 이 글을 쓰는 시점에서 이것은 버전 2.1.4입니다. Ruby 웹 사이트에서 현재 최신 버전을 얻을 수 있습니다. 최신 버전을 사용할 수 있는 경우 다음 명령에서 링크를 바꿔야 합니다.

wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz

다운로드한 파일의 압축을 풉니다.

tar -xzf ruby-2.1.4.tar.gz

추출된 디렉터리를 선택합니다.

cd ruby-2.1.4

configure 스크립트를 실행합니다. 종속성을 확인하고 코드를 컴파일하는 데 필요한 단계가 포함된 새 Makefile을 생성하므로 시간이 다소 걸립니다.

./configure

make 유틸리티를 실행하면 Makefile을 사용하여 실행 가능한 프로그램을 빌드할 수 있습니다. 이 단계는 조금 더 오래 걸릴 수 있습니다.

make

이제 install 매개변수를 사용하여 동일한 명령을 실행합니다. 컴파일된 바이너리를 /usr/local/bin 폴더에 복사하려고 시도합니다. 이 단계에서는 이 디렉터리에 쓰기 위해 루트 액세스 권한이 필요합니다.

sudo make install

이제 Ruby가 시스템에 설치되어야 합니다. Ruby 버전을 인쇄하는 다음 명령으로 확인할 수 있습니다.

ruby -v

Ruby 설치가 성공적이면 다음과 같은 출력이 표시됩니다.

ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]

마지막으로 임시 폴더를 삭제할 수 있습니다.

rm -rf ~/ruby

4단계 - 아파치 설치

Apache를 설치하려면 다음 명령을 입력하십시오.

sudo apt-get install apache2

예, 그게 다입니다!

5단계 - Passenger 설치

먼저 리포지토리 서버용 PGP 키를 설치합니다.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

APT 소스 파일을 생성합니다.

sudo nano /etc/apt/sources.list.d/passenger.list

Passenger 저장소를 파일에 추가하려면 다음 행을 삽입하십시오.

deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

Ctrl+X를 눌러 종료하고 Y를 입력하여 파일을 저장한 다음 Enter 키를 눌러 파일 위치를 확인합니다.

루트에 대한 액세스를 제한하려면 이 파일의 소유자 및 권한을 변경하십시오.

sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.list

APT 캐시 업데이트:

sudo apt-get update

마지막으로 Passenger를 설치합니다.

sudo apt-get install libapache2-mod-passenger

Passenger Apache 모듈을 확인하십시오. 이미 활성화되었을 수 있습니다.

sudo a2enmod passenger

아파치를 다시 시작합니다.

sudo service apache2 restart

이 단계는 Ruby 버전을 이전 버전으로 덮어씁니다. 이 문제를 해결하려면 잘못된 Ruby 위치를 제거하고 올바른 Ruby 바이너리 파일에 대한 새 심볼릭 링크를 만드십시오.

sudo rm /usr/bin/ruby
sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

6단계 - 배포

이 시점에서 자체 Rails 애플리케이션이 준비되어 있으면 배포할 수 있습니다. 기존 앱을 배포하려는 경우 프로젝트를 서버에 업로드하고 /etc/apache2/sites-available/default 단계로 건너뛸 수 있습니다.

이 자습서에서는 Droplet에서 직접 새 Rails 앱을 만듭니다. 새 앱을 만들려면 rails gem이 필요합니다.

사용자의 홈 디렉터리로 이동합니다.

cd ~

추가 문서 없이 rails gem을 설치하면 설치 속도가 빨라집니다. 여전히 몇 분 정도 걸립니다.

sudo gem install --no-rdoc --no-ri rails

이제 새 앱을 만들 수 있습니다. 이 예에서는 testapp라는 이름을 사용합니다. 다른 이름을 사용하려면 이 섹션의 다른 명령 및 파일에서 경로를 업데이트해야 합니다.

나중에 수동으로 실행하고 싶기 때문에 Bundler 설치를 건너뜁니다.

rails new testapp --skip-bundle

디렉토리를 입력하십시오:

cd testapp

이제 JavaScript 실행 환경을 설치해야 합니다. therubyracer gem으로 설치할 수 있습니다. 설치하려면 먼저 Gemfile을 엽니다.

nano Gemfile

다음 줄을 찾으십시오.

# gem 'therubyracer',  platforms: :ruby

주석을 제거하십시오.

gem 'therubyracer',  platforms: :ruby

파일을 저장하고 Bundler를 실행합니다.

bundle install

이제 프로젝트를 위한 가상 호스트 파일을 만들어야 합니다. 기본 Apache 가상 호스트를 복사하여 이를 수행합니다.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testapp.conf

구성 파일을 엽니다.

sudo nano /etc/apache2/sites-available/testapp.conf

최종 결과가 아래 표시된 파일과 일치하도록 기존 내용을 편집하거나 바꾸십시오. 변경해야 하는 사항은 빨간색으로 강조 표시됩니다. 고유한 도메인 이름과 Rails 앱의 올바른 경로를 사용해야 합니다.

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /home/rails/testapp/public
    RailsEnv development
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory "/home/rails/testapp/public">
        Options FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

기본적으로 이 파일은 포트 80에서 도메인 이름을 수신하고, www 하위 도메인에 대한 별칭을 설정하고, 서버 관리자의 메일 주소를 설정하고, 새 프로젝트의 공개 디렉터리에 대한 루트 디렉터리를 설정하고, 사이트에 대한 액세스를 허용합니다. . 링크를 따라가면 Apache 가상 호스트에 대해 자세히 알아볼 수 있습니다.

설정을 테스트하기 위해 Rails Welcome aboard 페이지를 보고 싶습니다. 그러나 이는 응용 프로그램이 개발 환경에서 시작된 경우에만 작동합니다. Passenger는 기본적으로 프로덕션 환경에서 애플리케이션을 시작하므로 RailsEnv 옵션으로 이를 변경해야 합니다. 앱이 프로덕션 준비가 된 경우 이 설정을 그대로 두는 것이 좋습니다.

이 앱에 도메인을 할당하지 않으려면 ServerNameServerAlias 행을 건너뛰거나 IP 주소를 사용할 수 있습니다.

파일을 저장합니다(CTRL+X, Y, ENTER).

기본 사이트를 비활성화하고 새 사이트를 활성화한 다음 Apache를 다시 시작합니다.

sudo a2dissite 000-default
sudo a2ensite testapp
sudo service apache2 restart

이제 앱의 웹사이트에 액세스할 수 있어야 합니다. Droplet의 도메인 또는 IP 주소로 이동합니다.

http://droplet_ip_address

앱이 배포되었는지 확인합니다. 사용자 지정 애플리케이션 또는 기본 Rails 페이지에 오신 것을 환영합니다.

Rails 앱이 이제 서버에 있습니다.

7단계 - 정기적으로 업데이트

Ruby를 업데이트하려면 이 튜토리얼의 4단계에 표시된 대로 최신 버전을 컴파일해야 합니다.

Passenger 및 Apache를 업데이트하려면 기본 시스템 업데이트를 실행해야 합니다.

sudo apt-get update && sudo apt-get upgrade

그러나 사용 가능한 새로운 시스템 Ruby 버전이 있는 경우 Ruby(소스에서 설치됨)를 덮어쓸 것입니다. 이러한 이유로 Ruby 바이너리 파일에 대한 기존 symlink를 제거하고 새(올바른) 파일을 생성하기 위해 명령을 다시 실행해야 할 수 있습니다. 이 자습서의 6단계 끝에 나열되어 있습니다.

업데이트 프로세스 후 웹 서버를 다시 시작해야 합니다.

sudo service apache2 restart