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を再起動し、すべてのサービスが期待どおりに再起動することを確認します。



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

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

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

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

macOS Catalina 10.15.4サプリメントの更新により、解決するよりも多くの問題が発生しています

最近、Appleは問題を修正するための補足アップデートであるmacOS Catalina 10.15.4をリリースしましたが、このアップデートにより、Macマシンのブリックにつながる問題がさらに発生しているようです。詳細については、この記事をお読みください

原子力が必ずしも悪ではないことを証明する5つの例

原子力が必ずしも悪ではないことを証明する5つの例

原子力は、過去の出来事のために私たちが決して尊重しないことを常に軽蔑していますが、それは必ずしも悪ではありません。詳細については、投稿をお読みください。

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

AIはどのようにしてプロセス自動化を次のレベルに引き上げることができますか?

これを読んで、人工知能が小規模企業の間でどのように人気を博しているか、そして人工知能がどのように成長し、競合他社に優位に立つ可能性を高めているかを理解してください。

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

ジャーナリングファイルシステムとは何ですか、そしてそれはどのように機能しますか?

私たちのコンピューターは、ジャーナリングファイルシステムと呼ばれる組織化された方法ですべてのデータを保存します。これは、検索を押すとすぐにコンピューターがファイルを検索して表示できるようにする効率的な方法です。https://wethegeek.com/?p = 94116&preview = true

ビッグデータは人工知能をどのように変えていますか?

ビッグデータは人工知能をどのように変えていますか?

ビッグデータと人工知能は流行語ですが、それらがどのように相互に関連しているか知っていますか?さて、この記事を最後まで読んで、同じことを知ってください。

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

UbuntuでNginxをセットアップしてライブHLSビデオをストリーミングする

HTTPライブストリーミング(HLS)は、Apple Inc.によって実装された非常に堅牢なストリーミングビデオプロトコルです。HLSは、ファイアウォール、プロキシ、