コレグレーデギネード

WindowsとかUbuntuとかRubyとかRailsとか

UbuntuSever16.04 + rvm + ruby2.6.3 + rails5.2.3 + Apache2 + Passenger + PostgreSQL for localhost

本来ならばUbuntuServer18.04を試したかったがlocalhost用マシンがi686だったためインストールできず。32bit対応の16.04環境で2019.7現在最新版のRails環境を整える練習。

ローカルマシンにUbuntu Sever 16.04をインストール済みでssh,vimが入っていればOK

RVMのインストール
公開鍵のインポート

$ curl -sSL https://rvm.io/mpapis.asc | sudo gpg --import -
$ curl -sSL https://rvm.io/pkuczynski.asc | sudo gpg --import -

RVM(Ruby Version Manager)のマルチユーザーインストール

$ curl -sSL https://get.rvm.io | sudo bash -s stable

rvmグループを作成してrootを追加

$ sudo usermod -a -G rvm root
$ sudo gpasswd -a [user] rvm
Adding user [user] to group rvm

gem installする時にsudoが不要になる

一度ログアウトする

インストールされたか確認

$ rvm --version
rvm 1.29.9 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

必要なパッケージの確認とインストール

$ rvm requirements
Checking requirements for ubuntu.
Installing requirements for ubuntu.
Updating system[user] password required for 'apt-get --quiet --yes update': ..-※

※今ログインしているuserのパスワードを入力すると必要なパッケージをインストールしてくれる

インストールできるRubyバージョンの確認

$ rvm list known

[ruby-]2.6[.3]が安定版の最新

Rubyのインストール

$ rvm install 2.6

RVMのリロード

$ rvm reload
RVM reloaded!

インストールの確認

$ rvm list
=* ruby-2.6.3 [ i686 ]

# => - current
# =* - current && default
#  * - default

$ gem --version 3.0.4

デフォルト設定

$ rvm alias create default ruby-2.6.3

Bundlerのインストール

$ gem install bundler

Apache2のインストール

$ sudo apt-get install apache2

Passengerに必要なパッケージのインストール

$ sudo apt-get install libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev

Passengerのインストール

$ gem install passenger -v 5.3.7
$ passenger-install-apache2-module

かなり時間かかります…

--------------------------------------------
Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/rvm/gems/ruby-2.6.3/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/local/rvm/gems/ruby-2.6.3/gems/passenger-6.0.2
     PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.6.3/wrappers/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

コマンドを実行して表示された結果をコピーしてバーチャルホストの設定ファイルに書き込む

$ passenger-install-apache2-module --snippet
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.6.3/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rvm/gems/ruby-2.6.3/gems/passenger-6.0.2
  PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.6.3/wrappers/ruby
</IfModule>

バーチャルホストの追加
ここにPassengerのモジュールの設定も記述する

$ sudo vim /etc/apache2/sites-available/localhost.conf
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.6.3/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rvm/gems/ruby-2.6.3/gems/passenger-6.0.2
  PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.6.3/wrappers/ruby
</IfModule>

<VirtualHost *:80>
# サーバーネーム
   ServerName localhost
# Railsのドキュメントルート
   DocumentRoot /var/www/rails/localhost/public
# エラーログ
   ErrorLog ${APACHE_LOG_DIR}/localhost.error.log
   CustomLog ${APACHE_LOG_DIR}/localhost.access.log combined
    LogLevel warn
# Railsのディレクトリ
   <Directory /var/www/rails/localhost/public>
     AllowOverride all
     Options -MultiViews
   </Directory>
   AllowEncodedSlashes on
   PassengerAllowEncodedSlashes on
</VirtualHost>

デフォルトの設定を無効にする

$ sudo a2dissite 000-default

バーチャルホストの設定を有効にする

$ sudo a2ensite localhost

ルートディレクトリの作成

$ sudo mkdir /var/www/rails

パーミッションの変更(Forbiddenの回避)

$ sudo chmod 755 /var/www/rails

ディレクトリの所有者をプロジェクトを作成(アップロード)するユーザーへ変更

$ sudo chown [user] /var/www/rails

Apache再起動

$ sudo service apache2 reload

FTPでファイルアップロードする準備
Vsftpdのインストール

$ sudo apt-get install vsftpd

詳細設定はこちら
https://www.hiroom2.com/2017/08/06/ubuntu-1604-vsftpd-ja/

vsftpdを有効にして再起動

$ sudo systemctl enable vsftpd
$ sudo systemctl restart vsftpd

/var/www/rails/にプロジェクトlocalhostFTPでアップする
vendor/bundleをアップすると大変なことになるのでアップしない
とりあえずでrails new localhostでも可

既存のGamfileを元に必要なgemをbundle install

$ cd /var/www/rails/localhost/
$ bundle install

PostgreSQLのインストール

$ sudo apt-get install postgresql

ライブラリのインストール

$ sudo apt-get install libpq-dev

Javascript Engineのインストール

$ sudo apt-get install nodejs

現在ログインしているユーザーでデータベースの作成ができるように--createdbオプションを追加してユーザーを作成
必要に応じてパスワードのオプションを設定しても可

$ sudo su postgres
createuser --createdb [user]

production用データベース作成

$ createdb localhost_production

マイグレーション

$ cd /var/www/rails/localhost/
$ rails db:migrate RAILS_ENV=production

アセットのプリコンパイル

$ rake assets:precompile RAILS_ENV=production

localhostに設定したホストのIPにブラウザでアクセスしてプロジェクトが動作していればOK