Rails+Passenger+Debian

이 기사에서는 데비안(Google Cloud Platform의 VM 사용)에서 Rails 환경을 구축한 절차를 요약합니다. (2019/09/02)

htps //w w.ぃ 그래서. 코 m / 드 cs / ゔ ぇ p 맨 t / r r / 루 바이 온 - 라 ls - 아파치 ぇ - 데 비안 /
h tps://sym 포 균열. bぉg. FC2. 소 m/bぉg-엔트리-423. html
이 기사를 참고로했습니다.

버전 정보

rails 6.0.0
Ruby 2.6.3

GCP의 VM 인스턴스 생성(생략. Debian9 선택)

시스템 업데이트

터미널
$ sudo apt-get update && sudo apt-get upgrade

RVM 및 Ruby 설치

터미널
$ sudo apt install dirmngr
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ curl -sSL https://get.rvm.io | bash -s stable --ruby
$ source /home/username/.rvm/scripts/rvm
$ rvm requirements

Rails 설치

터미널
$ gem install rails

Rails 앱 만들기

터미널
$ rails new example-app
$ cd example-app
$ bundle

passenger 설치

터미널
$ gem install passenger
$ passenger-install-apache2-module

오류 메시지에 따라 누락된 프로그램을 설치합니다.

터미널
$ sudo apt-get install libcurl4-openssl-dev
$ sudo apt-get install apache2-mpm-worker
$ sudo apt-get install apache2-dev
$ sudo apt-get install libapr1-dev
$ sudo apt-get install libaprutil1-dev
$ sudo apt-get install apache2

다시, apache2-module을 설치 (상당히 시간이 걸린다)

터미널
$ passenger-install-apache2-module

apache 설정 파일 확인 (username은 환경에 따라 다름)

터미널
$ passenger-install-apache2-module --snippet
LoadModule passenger_module /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2
  PassengerDefaultRuby /home/username/.rvm/gems/ruby-2.6.3/wrappers/ruby
</IfModule>

passenger.conf 작성 (username은 환경에 따라 다름)

터미널
$ vi /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
  PassengerRoot /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2
  PassengerDefaultRuby /home/username/.rvm/gems/ruby-2.6.3/wrappers/ruby
</IfModule>

passenger.load 생성 (username은 환경에 따라 다름)

터미널
$ vi /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /home/username/.rvm/gems/ruby-2.6.3/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so

000-default.conf 변경 (ip_address, username은 환경에 따라. 포트 번호 80은 기본값)

터미널
$ vi /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
        ServerName ip_address:80
        ServerAdmin webmaster@localhost
        DocumentRoot /home/username/example-app/public
        RailsEnv development
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        <Directory "/home/username/example-app/public">
            Options FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
</VirtualHost>

모듈 활성화

터미널
$ a2enmod passenger

apache 재부팅

터미널
$ sudo /etc/init.d/apache2 restart

브라우저에서 ip에 액세스



apache 오류 로그 확인 방법(참고)

터미널
$ cat /var/log/apache2/error.log

감상

중간에 다양한 오류가 발생했습니다. (bundler가 없습니다, bundler의 버전이 맞지 않습니다, apache2-mpm-worker가 없습니다, 서버 권한이 없습니다, authz_core : error 등.) 이러한 오류는 패키지 버전을 맞추고 경로를 정확하게 작성합니다. 설정 파일을 검토하여 해결했습니다. copipe뿐만 아니라 오류 로그를 구그로 원인을 확인할 수 있도록하고 싶습니다.

좋은 웹페이지 즐겨찾기