はじめに
railsチュートリアルを1周した後に、オリジナルアプリ作成のためにローカル環境を構築しました。
チュートリアル学習時は、cloud9を使用していた為、初めての作業でした。
初学者のため、必須ではないコマンドが含まれているかもしれませんが、どうかご了承ください。
なかなか苦戦しながら環境設定をしたので、同じ境遇の方に少しでも参考になると幸いです。
もし、修正箇所がございましたら、ぜひ、お知らせください。
目標
下記作業までの完了を目標としています。
- 内容
- railsに新規アプリ作成
- MySQLの設定および導入
- Git・GitHubの設定
- herokuサーバにアプリをデプロイ
前提
-
PC仕様
- OS:macOS(Catalina)
-
使用シェル
- zsh
-
使用技術
- バックエンド:ruby(バージョン:2.7.3)
- フレームワーク:rails(バージョン:6.1.3.2)
- データベース:MySQL(バージョン:8.0.25)
- インフラ:heroku
1.homebrewの導入
はじめに、ターミナル(私の場合はVScodeのターミナル)に入力します。
上手くいけば、homebrewが使用可能になります。
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
homebrewはAppleで提供してないツールをインストールする時に使う便利なソフトのようです。
詳しくは、下記URLを参考にしてください。
■Homebrew公式ページ
念のため、homebrewがインストールできているか確認します。
% brew -v
〜〜実行結果〜〜
Homebrew <バージョン>
ここで、homebrewのバージョンが表示されれば、インストールされています。
2.Ruby,Railsのインストール
まず、homebrew経由で必要なgem一式をインストールします。
(もしかすると不要かも:ここはrailsチュートリアルを参考にしました)
% brew install libtool libxslt libksba openssl libyaml
rubyのバージョン管理ツールrbenv
とruby-build
をインストールします。
これでrubyを土台にしてRubyGemを使って、railsが構成できる準備が整います。
% brew install rbenv ruby-build
■ Rubyインストール
まず、インストール可能なrubyバージョンを確認します。
% rbenv install --list-all
上記で確認したバージョンの中から指定したいバージョンを選択し、rubyをインストール&コンパイルします。
% rbenv install <バージョン>
インストール出来ているrubyバージョンを確認します。
% rbenv versions
もしインストール済みのrubyで不要なものがあれば
削除しておきましょう。
% rbenv uninstall バージョン
ここで、ターミナルで使用しているシェルを調べておきます。
% echo $SHELL
〜〜実行結果〜〜
/bin/zsh
私の場合、上記通り、zshが動作しているようでした。
先程に調べたシェルに対して、rbenv初期化コードを書き込みます。
(おそらく、MacOSがCatalinaの方は、zshかと思います)
% echo 'eval "$(rbenv init -)"' >> ~/.zshrc
初期化した内容をすぐに反映させます。
(ターミナルを再起動しても同じ動作となるはずです。)
% source ~/.zshrc
土台となるrubyをバージョン指定します。
(globalは全範囲で使われる設定で、localとするとディレクトリ毎で制御できるようです。)
※railsインストールする前に行います。
% rbenv global <バージョン>
一度、rubyがインストールできているか確認します。
% ruby -v
■ Railsインストール
railsのバージョンを指定して、インストールします。
(RubyGemsをもって、railsをインストールしている)
% gem install rails -v <バージョン>
なお、インストール済みのrailsで不要なバージョンが存在する場合は
削除しておきましょう。
# インストール済みのrailsバージョンを全て確認する
% gem search ^rails$ -l
*** LOCAL GEMS ***
rails (6.1.4, 6.1.3.2, 5.1.7)
# 不要なバージョンを削除する
% gem uninstall rails -v '5.1.7'
% gem uninstall railties -v '5.1.7'
ちゃんと、railsがインストールできているか確認します。
% rails -v
これで、rubyとrailsがインストールできました!良かった良かった!
3.MySQLのインストールから設定まで
続いて、データベースの設定していきます。
まず、homebrewを使ってmysqlをインストールします。
% brew install mysql
mysqlがインストールできたか確認します。
% brew info mysql
さっそく、mysqlサーバーを起動させてみます。
(停止する時はstartではなくstopをコマンドとします。)
% mysql.server start
root権限でログインします。
現状はパスワード無しで、ログイン可能です。
% mysql -u root
ログインできた所で、セキュリティ設定を行います。
(mysqlにログインするとプロンプトがmysql>
に変わります。)
mysql> mysql_secure_installation
上記コマンドを行うと、下記質問をMySQLから聞かれるので、それぞれ回答していきます。
(基本は全てy(YES)の回答で良いのかなと。)
- 質問内容
- パスワードの設定を行うか → 回答:y
- パスワードの強度はどうするか → 回答:0 ~ 2
(Low:0, Medium:1, Strong:2) - 登録パスワードは入力してください → 設定するパスワードを入力
- 入力されたパスワードで設定して良いか → 回答:y
- 匿名ユーザーを削除するか → 回答:y
- リモートサーバーからrootユーザーへのアクセスを遮断するか → 回答:y
- テスト用のデータベースを削除するか → 回答:y
- (最後)入力内容をすぐに反映するか → 回答:y
上記が設定できたら、パスワードが設定できているか確認のため
exitコマンドでMySQLから脱出します。
mysql> exit
先ほどのMySQLへのログインコマンドに、-pオプション(password)を付けると
PASSWORDがプロンプト表示されますので、設定したパスワードを入力します。
% mysql -u root -p
Enter password: ここに設定したパスワードを入力する
(セキュリティ上、表示はされません)
すると、再度rootユーザーでログインできるかと思います。
先程とは異なりパスワードありで、rootユーザーでログインできる様になりました。
ただし、管理権限をもつrootユーザーで常時ログインして
作業する事は望ましくないので、新規ユーザーを作成しておいた方が良いでしょう。
(当記事では触れませんが、下記記事が分かりやすく解説してくれています。)
参考: データベースを使用するユーザーを作成する方法
MySQLの新規ユーザー設定は、下記記事を参考にさせて頂きました。
@reeenapi さん、ありがとうございました。
■RailsのDBを(初めから| |後から)MySQLに変更する
4.Railsアプリ作成
railsアプリケーションを作成する前に、念のため、
homebrewでインストールされたものを一覧で確認しておきます。
% brew list
開発する作業ディレクトリ(environment)を作成して、そこに移動します。
# environmentディレクトリを作成
% mkdir environment
# 作成したenvironmentディレクトリに移動
% cd environment
railsのバージョンを指定して、アプリケーションを作成します。
※オプション
--skip-test
:minitestを使用しない場合のオプション
-d mysql
:MySQLをデータベースとして設定
# <バージョン>は6.1.3など設定したいバージョンを記述
# <アプリケーション名>は何でもOK
% rails _<バージョン>_ new <アプリケーション名> -d mysql --skip-test
作成できたアプリケーションのディレクトリに移動します。
% cd <アプリ名>
rails newコマンドでアプリを生成すると、命名したアプリ名のディレクトリ直下に
gemfileとdatabase.ymlが自動で修正されます。
はじめに、Gemfileのdatabase欄にあるgemが「sqlite(デフォルト)」ではなく
「mysql2」となっていることを確認します。
〜省略〜
# Use mysql as the database for Active Record
gem 'mysql2', '~> 0.5'
〜省略〜
次にconfig/database.ymlで、usernameとpasswordが空白になっているので
さきほどMySQLで設定したものを記入していきます。
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <設定したユーザー名>
password: <設定したパスワード>
socket: /tmp/mysql.sock
development:
<<: *default
database: アプリ名_development
test:
<<: *default
database: アプリ名_test
production:
<<: *default
database: アプリ名_production
username: アプリ名
password: <%= ENV['アプリ名_DATABASE_PASSWORD'] %>
ここで、railsコマンドでデータベースを作成しておきます。
% rails db:create
これでMySQLの世界で新しいデータベースが作成されているはずです。
下記コマンドでmysqlにログインして確かめてみましょう。
% mysql -u <ユーザー名> -p
Enter password:
作成されているデータベースの一覧を出します。
mysql> show databases;
+-------------------------+
| Database |
+-------------------------+
| アプリ名_development |
| アプリ名_test |
| ~以下省略~ |
+-------------------------+
● rows in set (0.00 sec)
先ほど、config/database.ymlで設定した名称で
・アプリ名_development(開発用)と
・アプリ名_test(テスト用)
の2つのデータベースが作成されていると思います。
これでMySQLのインストールと設定が完了しました!
番外:railsを使いやすくする
rubyのコード解析ツールとして、rubocopというgemがあります。
rubocop導入には、下記記事が参考にさせて頂きました。
@d0ne1s さん、ありがとうございました。
[■VSCodeでRubocopを使う]
(https://qiita.com/d0ne1s/items/a3566aca023d11f2bfc4)
5.Git/GitHubの設定
ここからは、変更履歴を残すGit/GitHubの設定をしていきます。
1.Git
Gitがインストールされているか、念のため、確認します。
(Macでは標準で搭載されていたはずです)
% git --version
まず、Gitの設定をします。
# 名前
% git config --global user.name "名前"
# メールアドレス
% git config --global user.email Eメールアドレス
# (任意)Gitのパスワードを1日(86,400秒)保持する設定
% git config --global credential.helper "cache --timeout=86400"
一旦、Gitの設定状況を確認します。
% git config -l
railsアプリケーションのディレクトリに移動しておきます。
% cd <アプリ名>
このディレクトリで、Gitの初期化を行います。
(.gitファイルが生成されて以降の変更記録が残っていきます。)
% git init
.gitファイルが存在することを、念のため、確認します。
(ls:現ディレクトリ内のファイル一覧を表示, -a:隠しファイルも含める)
% ls -a
.git . . . . . . . .
↑ 隠しファイルが表示される
gitの現況を確認します。
(未add・未commitの状態を把握)
% git status
新規作成および変更を加えた全ファイルをgitのステージングエリアへ追加します。
% git add .
ステージングエリアの変更分に問題がなければ、コミットします。
(-mでメッセージ付ける)
% git commit -m "メッセージ"
これまでのcommit履歴を表示します。
(オプションの--onelineは1行表示)
% git log --oneline
2.GitHub
■GitHub公式ページ(まず、こちらでリポジトリを作成する)
上記URLからリポジトリを作成後、GitHubと現在のGitのリポジトリを紐付けます。
% git remote add origin https://github.com/GitHubアカウント名/アプリ名.git
Git commitで変更したファイルをGitHubへpushします。
% git push origin master
これで、Git/GitHubの設定が完了です!
6.Herokuの設定からデプロイまで
herokuに関しては、下記記事の一部を実行しています。
@murakami-mm さん、ありがとうございました。
[■Herokuへのデプロイ方法【Heroku+Rails+MySQL】]
(https://qiita.com/murakami-mm/items/9587e21fc0ed57c803d0)
まず、herokuのインストールします。
■heroku公式ページ(参考)
% brew tap heroku/brew && brew install heroku
いつものように、herokuがインストールできているかの確認します。
% heroku -v
インストールできていれば、herokuサーバにアプリケーションを作成します。
% heroku apps:create アプリ名
作成したアプリに、MySQLベースのClearDBというデータベースを適用させます。
無料ですが、容量が5MBです。詳細は下記にあります。
■heroku(ClearDB概要)
% heroku addons:create cleardb:ignite
次は、設定のためにClearDBのURLを確認します。
% heroku config
〜〜実行結果〜〜
=== アプリ名 Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
そして、上記で取得したURLを参考にして、各種設定をしていきます。
% heroku config:add DB_NAME='<データベース名>'
% heroku config:add DB_USERNAME='<ユーザー名>'
% heroku config:add DB_PASSWORD='<パスワード>'
% heroku config:add DB_HOSTNAME='<ホスト名>'
% heroku config:add DB_PORT='3306'
% heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'
再度、設定確認のコマンドを打って、ちゃんと設定できているか確認します。
% heroku config
最後に、ローカルリポジトリの内容をherokuへpushします。
% git push heroku master
git push Heroku masterコマンドを打つと、返答メッセージの文末あたりに
自分が作ったWEBアプリのURLが参照されます。
そのURLをクリックして、本番環境(heroku)でアプリが起動できているか確認してみてください!!
#終わりに
Qiita記事を中心に情報収集しながら、はじめて環境構築をした内容をまとめました。
現在、railsで新規アプリを実装していますが、毎日エラーと戦ってます。笑
今後は、学習内容のアウトプットのために、投稿記事を増やせればと思っています。
拙い文章でしたが、最後までお読みいただき、ありがとうございました!!!!!
それでは、また。