- VirtualBoxにインストールされたUbuntu22.04.1 Serverが対象
- vim、ssh、git、curlがインストール済みであること
- rubyバージョンは2.7.1
- railsバージョンは6.1.7.6
- データベースはPostgreSQLを使用
- ImageMagickを使用
- Apach、Passengerを使用
- リモートでDeployできる環境構築まで
Ruby管理ツールrbenvをインストールする
$ sudo git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv $ sudo git clone https://github.com/rbenv/ruby-build.git /usr/local/rbenv/plugins/ruby-build
visudo コマンドで編集
Defaults secure_pathの変更
Defaults env_keepの追加
$ sudo visudo
Defaults secure_path ="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/rbenv/bin:/usr/local/rbenv/shims" Defaults env_keep +="RBENV_ROOT"
/etc/profileの一番下に下記の設定を追記
$ sudo vim /etc/profile
export RBENV_ROOT=/usr/local/rbenv export PATH="$RBENV_ROOT/bin:$PATH" eval "$(rbenv init -)"
設定を反映
$ source /etc/profile
Rubyに必要なライブラリーをインストール
sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev
Rubyをインストール
$ sudo rbenv install 2.7.1
2.7.1を通常使用するバージョンに指定
$ sudo rbenv global 2.7.1
設定を反映
$ source /etc/profile
Rubyがインストールされたか確認
$ ruby -v ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
bundlerのインストールする
$ sudo gem install bundler
rubygemsのアップデート
$ gem update --system 3.2.33
nodeをインストールする
$ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - $ sudo apt-get install nodejs
yarnをインストールする
$ sudo npm install -g yarn
PostgreSQLをインストールする
$ sudo apt install postgresql
ライブラリをインストール
$ sudo apt install libpq-dev
ユーザの追加
$ sudo su - postgres $ createuser --createdb [user]
ImageMagickをインストールする
$ sudo apt install imagemagick
ライブラリをインストールする
$ sudo apt install libmagickcore-dev
Apacheをインストールする
$ sudo apt install apache2 apache2-dev
パッセンジャーをインストールする
$ sudo gem install passenger
新しくgemパッケージをインストールしたのでコマンドが使えるように読み込む
$ sudo rbenv rehash
モジュールをインストールする
$ sudo passenger-install-apache2-module
必要なライブラリをインストールするように指示されるのでその通りにインストールする
$ sudo apt-get install libcurl4-openssl-dev apache2-dev libapr1-dev libaprutil1-dev
再度passenger-installコマンドを実行
$ sudo passenger-install-apache2-module
インストールが終了するとApacheの設定ファイルに挿入する記述が表示されるので保存しておく。なお、passenger-installコマンドで再表示可能。
$ sudo passenger-install-apache2-module --snippet LoadModule passenger_module /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20 PassengerDefaultRuby /usr/local/rbenv/versions/2.7.1/bin/ruby </IfModule>
Apacheの設定ファイルの最下部にPassengerの記述を挿入
$ vim /etc/apache2/apache2.conf : LoadModule passenger_module /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /usr/local/rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/passenger-6.0.20 PassengerDefaultRuby /usr/local/rbenv/versions/2.7.1/bin/ruby </IfModule>
Apacheのデフォルトのバーチャルホスト設定を無効にする
$ sudo a2dissite 000-default Site 000-default disabled. To activate the new configuration, you need to run: systemctl reload apache2
新しくバーチャルホストの設定ファイルを作る
$ sudo vim /etc/apache2/sites-available/example.conf <VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example/current/public ErrorLog ${APACHE_LOG_DIR}/example.error.log CustomLog ${APACHE_LOG_DIR}/example.access.log combined LogLevel warn <Directory "/var/www/example/current/public"> Require all granted </Directory> </VirtualHost>
バーチャルホスト設定の有効化
$ sudo a2ensite example.conf
ルートディレクトリの作成
$ sudo mkdir /var/www/example
ルートディレクトリの所有者をデプロイするユーザーへ変更
$ sudo chown [user] /var/www/example
ルートディレクトリのパミッションを変更
$ sudo chmod 755 /var/www/example
Apache再起動
$ sudo service apache2 reload
master.keyのコピー
<strong>config/master.keyをサーバーの/var/www/example/shared/config/master.keyにコピー</strong>
プロジェクトをサーバーにデプロイ
$ cap production deploy