Edited at

スローロリスでも出来る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にこだわらない人はまずは一旦これで始めても良いかもしれない。