本来ならば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/にプロジェクトlocalhostをFTPでアップする
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