Mac
MySQL
Apache
RubyOnRails

スローロリスでも出来るMacで構築するRuby On Rails + MySQL + Apache構成のローカル開発環境

この辺にぃ、美味い開発環境があるらしいんすよ。
あっそっかぁ
構築しませんか?
構築してぇなぁ。
構築しましょうよ!
じゃけん夜構築しましょうね〜。

こ↑こ↓

はぇ〜すっごい普通

ということで、Ruby On Rails + MySQL + Apacheのローカル開発環境をMacで構築しますよ〜するする。

Ruby On Railsに対してMySQL + Apacheを選んだのはなんで?(殺意)

んにゃぴ...(Ruby On Railsのスタンダードが)よくわからなかったからです(無知)

やっぱり、自分(が使い慣れてるMySQLとApache)のが一番ですよね。

各アプリのバージョン

Ruby 2.5.3
Ruby On Rails 5.2.1
Apache2.4.37
MySQL 5.7

全部HomeBrewでインストールしたゾ。

構築手順

Ruby、Ruby On Railsのインストール手順

こ↑こ↓
https://arrown-blog.com/mac-local-rails-install/

リンク貼り付けだけを行う屑

スッゲーわかりやすい神記事だからね。仕方ないね(レ)
各手順で何をやっているかもしっかり解説してるから見とけ見とけよ〜。

ほんとにここの手順に通りやればOK牧場(激寒ギャグ)

MySQLのインストール手順

こ↑こ↓

インストール手順
https://weblabo.oscasierra.net/mysql-57-homebrew-install/
インストール後セットアップ
https://weblabo.oscasierra.net/mysql-57-init-setup/

ま、多少(の外部サイト引用)はね?

ちゃちゃちゃと参考リンクの通りにインストールしてくれよな〜。

RailsでMySQLを扱う

いざ、MySQLをインストールしたものの接続しなければ意味がない。

Railsアプリの作成

bash
rails new RoRtest -d mysql

RoRtestというMySQLをDBとして利用するRailsプロジェクトを作成している。
フォルダ内は色々なフォルダ、ファイルが作成されているが、意味不明 ☆
ここを見るといいゾ〜。
http://railsdoc.com/rails_base

ちなみに、この時点ではプロジェクトは作られたもののMySQLにテーブルの作成は行われていない。
DBの接続先情報を編集しなきゃ...(使命感)

DBの接続情報を編集

bash
cd RoRtest
vim config/database.yml

編集できるならvimでbiimでもなんでもいいゾ

コメント部分を除外するとこんなんが出てくる。

bash
default: &default
   adapter: mysql2
   encoding: utf8
   pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
   username: root
   password:
   host: localhost 
 development:
   <<: *default
   database: RoRtest_development
 test:
   <<: *default
   database: RoRtest_test
 production:
   <<: *default
   database: RoRtest_production
   username: RoRtest
   password: <%= ENV['UNTI_DATABASE_PASSWORD'] %>

development,test,productionというのは、Railsが定義する環境のことだ。
今回はdevelopmentを使うからここの編集をしていくのら。

bash
username: #MySQL導入時に作成したユーザ
password: #ユーザのパスワード`

defaultのここだけ変えればOK牧場。

DBに接続してスキーマ作成

bash
rails db:create

上記の設定情報を参照して、接続先にスキーマを作る。
実行後、MySQLに接続して'RoRtest_development'スキーマが作成されていれば工事完了です...。

Apacheのインストール手順

こ↑こ↓
https://weblabo.oscasierra.net/apache-macos-install-homebrew/

許しは請わぬ

ちゃちゃちゃと参考リンクの通りにインストールしてhttpd起動してさ、終わりでいいんじゃない?(適当)

ApacheでRailsで動作できるようにする

バニラのApacheだとRailsは(うごか)ないです。

Phusion PassengerというモジュールをApacheに組み込む必要がありますあります。

※ 注意:自分は出ませんでしたが、結構Phusion Passengerのインストールで依存関係のエラーがでることが多いようです。エラーが出たらGoogle先生に聞いてみてほしいゾ。

Passengerのインストール

bash
gem install passenger

ApacheにPassengerモジュールのインストール

bash
passenger-install-apache2-module

おいゴラァ!パスが通ってねぇぞ!って言われた時は、おそらくこのディレクトリにありますんでフルパスで実行してホラ

bash
/Users/hassoubeat/.rbenv/versions/2.5.3/bin/passenger-install-apache2-module #適宜読み替えて、どうぞ

インストールまで結構な時間がかかる。

インストールが完了したら、httpd.confにこれを書け(命令)って言われる。

bash
LoadModule passenger_module /Users/hassoubeat/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/passenger-5.3.6/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /Users/hassoubeat/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/passenger-5.3.6
  PassengerDefaultRuby /Users/hassoubeat/.rbenv/versions/2.5.3/bin/ruby
</IfModule>

見落としちゃったよ...やべぇよやべぇよ...って兄貴はこのコマンド打ってどうぞ。
上の内容が表示されるゾ〜。

bash
passenger-install-apache2-module --snippet

httpd.confにPassengerモジュールの植え付けを行う ♂

bash
cp /usr/local/etc/httpd/httpd.conf /usr/local/etc/httpd/httpd_back.conf #動かなくなった時用のバックアップ
vim /usr/local/etc/httpd/httpd.conf
brew services restart httpd

さっきの書けって言われた内容を適当な場所にぶち込んでやるぜ。(自分はLoadModuleが続いている箇所の末尾に入れました)
更新が終わったらApacheを再起動して、設定を反映するゾ〜。

ApacheにRailsアプリをデプロイ(バーチャルホストの設定)
これまでの手順でもうApache上でRailsが動くようになっているので、バーチャルホストを設定してデプロイして動作確認。

httpd.confのバーチャルホストを有効にする

httpd.conf
↓ このコメントアウトを外して有効に。
#Include /usr/local/etc/httpd/extra/httpd-vhosts.conf

httpd-vhosts.confでRailsアプリのバーチャルホストを登録

httpd-vhosts.conf
<VirtualHost *:8080>
  # Railsの環境指定
    RailsEnv development #デプロイするアプリの環境を指定(指定しないとproductionになってうまく動かない)
    PassengerEnabled on #Passengerを有効にする
    ServerAdmin webmaster@ruby.example.com
    DocumentRoot "/Users/hassoubeat/vscode_work/RoRtest/public" # MySQLのとこで作ったRailsアプリ"RoRtest"のpublicフォルダを指定
    DirectoryIndex index.html
    <Directory "/Users/hassoubeat/vscode_work/RoRtest/public">
       Require all granted #対象のディレクトリへのアクセス制御(通さないと403エラーが)
    </Directory>
    ServerName ruby.example.com #好みで(後で/etc/hostsでローカルIPと紐付けるので、控えておくように)
    ErrorLog "/usr/local/var/log/httpd/ruby.example.com-error_log" #好みで
    CustomLog "/usr/local/var/log/httpd/ruby.example.com-access_log" common #好みで
</VirtualHost>

/etc/hostsファイルにバーチャルホストで登録したServerNameを登録

/etc/hosts
127.0.0.1   localhost ruby.example.com

Apacheを再起動

bash
brew services restart httpd

工事完了です...。

動作確認としてに、scaffoldで適当なページを生成して確認するゾ〜。

bash
cd /Users/hassoubeat/vscode_work/RoRtest #自分が作成したRailsアプリのディレクトリに読み替えてくれよな〜
rails g scaffold deltarune -character_name:string #deltaruneっていうテストテーブルとそれにアクセスするための画面を自動生成
rails db:migrate #DBに反映

じゃあ、流しますね...(HTTPリクエスト)
http://ruby.example.com:8080/deltarunes

スクリーンショット 2018-11-10 0.28.17.png

念の為、"New Deltarune"からデータの登録も...。

スクリーンショット 2018-11-10 0.26.59.png

inm.jpeg
そ の た め の 右 手

このアクセスの段階でエラーが起きたら、アプリフォルダ内のlog/development.logを調べてみてどうぞ。

bash
less /Users/hassoubeat/vscode_work/RoRtest/log/development.log

ここに何もでないなら、Apacheの側のログも咥え入れろ〜。

お ま と め

ぬわぁぁぁぁぁぁぁん疲れたもぉぉぉぉぉぉぉん
開発環境構築スッゲーきつかったゾ〜。
やめたくなりますよ〜。環境構築〜。

割とRails4の情報とかも混在してて、これ見ればオワリッ!っていうのがなくてインターネットをグルグルしていた。

とりあえず今回は脳死で使い慣れたMySQLとApacheで構築してみたけど、Ruby On Rails開発環境のベストプラクティス環境とかってあるんですかね?(無知)

現場でガリガリRuby On Railsで開発している兄ちゃんがいたら、教えてくれや。
ナレッジ、貯めて待つぜ。

dokata.jpeg

余談

RailsはデフォルトでデータベースとWEBサーバを持っているため、MySQLとApache連携をしなくても使おうと思えば使える。
データベース:SQLite3
WEBサーバ:Puma

以下手順。

Railsアプリの作成

bash
rails new test_prj`

コマンドを実行したフォルダに'test_prj'というフォルダが生成される。

Railsアプリの実行

bash
cd test_prj
rails start

実行するとこんなのが表示される。
スクリーンショット 2018-11-09 17.36.30.png
サーバを止める時はCtrl + C。バックグラウンドにする方法はないんですかね...?(無知)

Pumaが起動しており、localhost:3000でアクセスを受けているらしい。
ブラウザでアクセスすると。

こんな感じで動作する。
MySQL + Apacheにこだわらない人はまずは一旦これで始めても良いかもしれない。