Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ruby on Railsは、プログラマーの生産性を向上させるために開発されたRubyの人気のあるWebフレームワークです。ただし、さまざまなgemと依存関係を一緒に動作させると、トリッキーになる場合があります。このガイドは、一般的に使用されるgemと依存関係を含む、本番環境に対応した完全なRails環境をセットアップするのに役立ちます。

必要条件

  • 512 MB以上のRAM(1024 MBを推奨)を備えたVultrインスタンス。
  • Ubuntu 17.04を実行するVultrインスタンス。

このガイドで使用されるスタック

  • Nginx:高速で強力なWebサーバー。(バージョン1.10.3)
  • Passenger:NginxがRubyアプリを提供するのに役立つアプリサーバー。(バージョン1.5.1.8)
  • Rbenv:Rubyバージョンマネージャー。(バージョン1.1.1-2)
  • Ruby:(バージョン2.4.1)
  • MariaDB:MySQLサーバーのオープンソースブランチ(バージョン10.2)
  • Let's EncryptのSSL証明書

取り付け

Sudoユーザーを追加

:攻撃にさらされる可能性があるため、これらのサービスをrootとしてインストールしないことを強くお勧めします。deployまたはappユーザーの設定は一般的な規則です。

sudo adduser deploy
sudo adduser deploy sudo
su deploy

システムの更新とアップグレード

Ubuntu VMですべての最新パッケージを実行していることを確認します。

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

ビルドシステムのインストール

rbenvおよびその他のgem を使用してRubyをコンパイルできるようにするには、さまざまなパッケージをインストールする必要があります。Rubyのバージョンによっては、一部のパッケージが不要な場合があります。

コンパイル
sudo apt-get install -y curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev
sudo apt-get install -y libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev
sudo apt-get install -y python-software-properties libffi-dev
sudo apt-get install -y build-essential openssl libreadline6 libreadline6-dev libreadline-dev
sudo apt-get install -y automake libtool bison pkg-config bison autoconf libc6-dev ncurses-dev
sudo apt-get install -y libapr1-dev libaprutil1-dev libx11-dev libffi-dev tcl-dev tk-dev
SSLサポート用のパッケージ

これらは、Passengerなどのいくつかのgemをコンパイルするために必要です。

sudo apt-get install -y zlib1g zlib1g-dev libssl-dev libyaml-dev libcurl4-openssl-dev libruby
バージョン管理

Rubyコミュニティは、Gitを選択したSCMとして使用しています。ただし、MercurialやSubversionなどの追加のものもインストールできます。

sudo apt-get install -y git git-core
MySQL / MariaDB用のデータベースドライバー
sudo apt-get install -y libmysqld-dev mysql-client libmysqlclient-dev
のこぎり

ネイティブXMLライブラリを必要とするいくつかの一般的なgemに必要です。

sudo apt-get install -y libxml2-dev libxslt-dev
Node.js

デフォルトのUbuntuリポジトリはいくつかのメジャーバージョンに遅れをとる傾向があるため、Nodeから最新バージョンの公式リポジトリを追加します。

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

オプションパッケージ

これらのパッケージは、システムの実行に必須ではありませんが、特定のgemを使用する必要がある場合に必要です。

グラフと画像

これらのライブラリは不要であり、画像操作の宝石を使用する予定がない限りスキップできます。Rmagickなど:

sudo apt-get install -y imagemagick libmagickwand-dev libvips-dev

SQLiteおよびPostgreSQL用のデータベースドライバー

他のデータベースに接続する必要がある場合、または単純なローカルDBを好む場合は、SQLiteまたはPostgreSQLのドライバーをインストールします。

sudo apt-get install -y libsqlite3-dev sqlite3  libpq-dev postgresql postgresql-contrib

ツール

通常、Ubuntuの新規インストール時にプレインストールされていないユーティリティ。選択したテキストエディタを自由にインストールしてください。

sudo apt-get install -y iotop htop nano vim

MariaDBサーバーをインストールする

MariaDBは強力なリレーショナルSQLサーバーであり、MySQLと完全に互換性があります。MariaDBの最新バージョンをインストールする最も簡単な方法は、公式リポジトリを使用することです。

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386] http://ftp.utexas.edu/mariadb/repo/10.2/ubuntu zesty main'
sudo apt update
sudo apt install -y mariadb-server

プロンプトに従って、rootパスワードを設定します。その後、フレッシュインストールにアクセスできることを確認します。

mysql -V 

次のような行が表示されます。

mysql  Ver 15.1 Distrib 10.2.8-MariaDB, for debian-linux-gnu (x86_64) using readline 5

MySQLシェルにログインします。

mysql -h localhost -u root -p 

:を使用\qして終了します。


RbenvとRubyをインストールする

Rbenv

gitを使用してRbenvをインストールします。これは最も簡単なインストール方法であり、後で簡単に更新できます。また、をインストールするとruby-build、実際にRubyのさまざまなバージョンをコンパイルします。

cd
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

:あなたは、単に更新する必要がありますcd ~/.rbenvgit pull

シェルでRbenvとRuby-buildを使用できるようにします。非対話型のbashコマンドで重要な、ファイルの先頭にエクスポート行が挿入されるようにするには、.bashrc次の行を使用します。

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.temp_bashrc
echo 'eval "$(rbenv init -)"' >> ~/.temp_bashrc
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.temp_bashrc

cat ~/.temp_bashrc ~/.bashrc > ~/.combined_bashrc && mv ~/.combined_bashrc ~/.bashrc && rm ~/.temp_bashrc

exec $SHELL

RbenvとRuby-buildがインストールされており、シェルで使用できるかどうかを確認します。

rbenv install --list

rbenv認識されない場合は、ログアウトしてシェルに再度ログインします。

~/.bash_profileファイルを作成し、ファイルを参照するように指定し~/.bashrcます。wheneverGem によって設定されたcronジョブなど、Railsアプリから非インタラクティブシェルコマンドを実行する必要がある場合、インタラクティブシェルと同じバージョンのRubyを使用します。これは、奇妙なエラーを防ぐのに役立ちます。次の行を~/.bash_profileファイルに追加します。

if [ -f $HOME/.bashrc ]; then
        source $HOME/.bashrc
fi

ルビー

Ruby 2.4.1をインストールします。

rbenv install 2.4.1

:このプロセスは、VMのリソースに応じて5〜15分かかる場合があり、進行状況バーはありません。

Rbenvをどこでも使用できるようにします。

rbenv global 2.4.1

乗客とNginx

aptのPGPキーとHTTPSサポートを追加します。

sudo apt-get install -y dirmngr gnupg
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates

Passengerリポジトリーを追加します。

sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger zesty main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update

Passenger + Nginxモジュールをインストールします。

sudo apt-get install -y nginx
sudo apt-get install -y libnginx-mod-http-passenger

この時点でドメイン名またはIPを使用してVultrインスタンスにアクセスし、これらをテストします。それらが機能している場合、ページにはデフォルトのNginxウェルカムページが表示されます。

Rails、App、およびPassengerの設定

BundlerとRailsをインストールします。

gem install bundler rails --no-ri --no-rdoc

Ubuntu / Debianの慣例では、アプリをでセットアップします/var/www。デフォルトでは、rootのみが書き込み可能です。設定を機能させるには、sudoユーザーに所有権を付与しますdeploy

sudo chown deploy:deploy /var/www -R

でRailsアプリを生成します/var/www/。デプロイするアプリがすでにある場合は、git cloneここで実行してから実行しますbundle

cd /var/www
rails new example --database=mysql
アプリを指すようにPassengerを構成します。
  1. 準備Nginx。

    sudo nano /etc/nginx/nginx.conf
    
  2. ユーザーをに変更しますdeploy

    user deploy;
    
  3. 構成のhttpセクションには、パッセンジャーを含むモジュールをロードするようにNginxに指示する行があるはずです。見つからない場合は、Virtual Host Configsタイトルの直後、ただしの前に追加できますsites-enabled

    include /etc/nginx/conf.d/*.conf;
    
  4. passenger.confファイルを編集/作成します。

    sudo nano /etc/nginx/conf.d/mod-http-passenger.conf
    
  5. PassengerにRbenvセットアップを使用するように伝えます。Passengerに含まれているRubyバージョンを指す行が含まれている場合があります。削除するかコメント化してください。

    passenger_ruby /home/deploy/.rbenv/shims/ruby;
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    
  6. のアプリを指すように仮想ホストを設定します/var/www/example/

    sudo nano /etc/nginx/sites-enabled/example.conf
    
    
    server {
      listen 80;
      server_name example.com www.example.com;
      root /var/www/example/public;
      passenger_enabled on;
    
      # When you are ready to switch to production mode - change this to `production`
      passenger_app_env development; # <-- !important      
    }
    
  7. Nginxを再起動します。

    sudo service nginx restart
    

この時点で、アプリケーションを開発モードで使用する準備ができています。本番モードに切り替えるには、Nginx設定に戻り、rails_env設定をに変更する必要がありますproduction

本番モードに切り替える前に、あなたはまだセットアップに本番データベースが必要になりますexample_productiondatabase.ymlと秘密鍵。CapistranoやMinaなどのツールをチェックして、アプリケーションのデプロイメントプロセスをスピードアップしてください。ENV変数をのようなgemで使用しdotenv、パスワードや秘密鍵などをgitリポジトリにコミットしないことをお勧めします。

SSLを設定する

ドメインにSSL証明書を提供するサービスは複数あり、多くは有料で、いくつかは無料です。使用するサービスに関係なく、SSLをセットアップします。Let's Encryptは非常に簡単で、無料で使用できます。Let's Encryptは、多くの大手技術者に支えられた非営利組織です。

取り付け

次のコマンドを実行し、プロンプトに従います。

sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx
sudo certbot --nginx
sudo certbot renew --dry-run

を使用してVultrインスタンスにアクセスHTTPSすると、安全なWebサイトが表示されます。

リニューアル

新しく発行された証明書は有効期限が切れており、定期的に更新する必要があります。これを行う最も簡単な方法は、cronジョブを設定することです。

sudo crontab -e 
30 2 * * 1 /usr/bin/certbot renew 

最後のオプションの手順として、VMを再起動し、すべてのサービスが期待どおりに再起動することを確認します。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。