• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
    • AIサービス開発
    • AI画像解析 – 無償PoC
  • 最新情報
  • アカデミー
  • 採用情報
    • Avintonで働く魅力
    • 求人
    • よくある質問
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • CSR(企業の社会的責任)
  • お問い合わせ

Ruby on Rails インストール

  • Python3.6 と OpenCV のインストール (Ubuntu18.04LTS)
  • ルーティング
  • 見た目を美しくしてみましょう
  • NAT
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • カート内のアイテム個数を変更
  • 三目並べ – 3.勝敗がつくようにしよう
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • カートの設置
  • Ruby on Rails を MySQLでセットアップ
  • レイアウト調整
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • VLAN
  • テスト
  • 機械学習を用いた画像分類
  • Ruby on Railsによる簡単なウェブアプリケーション
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • Ubuntuの設定
  • PostgreSQL Setup
  • REDIS
  • Amazon EC2 インスタンスの初期設定をしよう
  • Pythonの設定
  • GNS3のセットアップ
  • viエディタ
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • Pythonでデータベースを操作する
  • Python2.7とOpenCVのインストール
  • ファイル操作コマンド
  • OpenCVのテストプログラム
  • グループとユーザー
  • Pythonで画像を分類するプログラムを作成する
  • AWS CLIをインストールしてコマンド操作しよう
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • Windows Server 2012 R2 Hyper-V
  • 困った時に使うコマンド
  • PacketTracerのセットアップ
  • 一般グループのユーザーとグループ
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • プライバシーポリシー
  • VMware ESXi サーバー構築
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • フロントエンドのデモンストレーション
  • APIのデモンストレーション
  • CISCO 1800ルータセットアップ
  • ファイル検索コマンド
  • ESXi – Switchの追加とVLAN
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • 三目並べ – 0.導入
  • テキスト処理
  • ESXi - VyOS
  • データベースへのデータロード
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • CCNA
  • ESXi – 小規模ネットワーク 構築
  • ファイル管理
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • CSV import & export – Node.js, mySQL – 1
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • CSV import & export – Node.js, mySQL – 2
  • PCからルータ、スイッチへのSSH接続設定
  • 【Python入門】Python Numpy チュートリアル
  • SQL 便利な関数
  • PostgreSQLによるデータ分析
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • NodeJSでWebアプリケーション開発 – React編
  • Pythonによるマルチスレッドプログラミング実践
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • DockerとApacheを使ってWebサーバーを構築しよう
  • NodeJSでWebアプリケーション開発 – React編
  • Ruby on Rails インストール
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • Linuxとは
  • Pandasによる構造化データ分析
  • カート機能作成
  • Ruby on Rails Academy
  • ショッピングアプリケーション作成
  • ダイナミックルーティング
  • PostgreSQL – Python – Apache – Bootstrap
  • 三目並べ – 1.ゲーム盤を作ろう
Home Academy Ruby on Rails インストール

Ruby on Rails Academy #1

このシリーズではRuby on Railsと他いくつかのライブラリーを用いたウェブ開発の全プロセスを扱っていきます。

1. rvmでRubyをインストール

以前の内容( https://avinton.com/academy/ruby-on-rails-set-up-with-mysql/ )でapt-getを用いてRubyをインストールしました。しかしながら実際にリリースするものを開発する際は保守性・再現性の観点からバージョンマネージャーを用いてインストールすることが一般的です。今回はrvmでRubyをインストールします。

既にrubyをapt-getでインストールしている場合

[code lang=bash]
sudo apt-get autoremove ruby
[/code]

rvmをインストールします。

[code lang=bash]
gpg –keyserver hkp://keys.gnupg.net –recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable
[/code]

PATHはrvmのインストーラが自動でbash_profileに書き込んでくれますので読み込みましょう。

[code lang=bash]
source /home//.bash_profile
[/code]

確認します。

[code lang=bash]
rvm -v
[/code]

Rubyをバージョン指定してインストールします。

[code lang=bash]
rvm install 2.3.1
ruby -v
[/code]

Rubyをバージョンマネージャーrvmによってインストールできました。
これで、他のバージョンのRubyを動作させる場合にも簡単に切り替えることができます。

exercize: 1

Railsの新しいプロジェクトを作り、何かしらのページを作って動作させてみましょう。

編集の際、テキスト編集ソフトがあると便利です。
その一つ、Github製のAtomは以下の手順でインストールできます。

[code lang=bash]
sudo add-apt-repository ppa:webupd8team/atom
sudo apt-get install atom
[/code]

そして、プロジェクトのルートディレクトリにいる状態で、

[code lang=bash]
atom ./
[/code]

と打つとプロジェクト全体を編集することが可能です。

2. Githubアカウントの取得

現在、多くのソフトウェア開発は外部のソースコード管理システムを介在させて行われています。
そのうちでも非常に多くの人に使われているGithubを使って今回は進めます。

https://github.com

新しいアカウントを取得すると、新しいレポジトリを作れます。
“Your Profile”から新しいレポジトリ(後でつけるプロジェクト名と同じにしましょう)を作ります。

先ほど作ったプロジェクトディレクトリをgit化します。

[code lang=bash]
git init
[/code]

exercize: 2

gitの基本的なコマンド, pull/add/commit/push/merge について調べ、今作ったプロジェクトをGithubのレポジトリにアップロードしましょう。

3. プロダクションサーバーのセットアップ

ローカルとリモートのレポジトリーを作ったので、次はプロダクションを想定したサーバーをセットアップをします。
プロダクションサーバーはローカルで作ったものがWebサーバーを通してしっかり動くかどうか確認するためのものです。

ubuntu server をダウンロードしましょう。
https://www.ubuntu.com/download/server

Virtualboxで新しく仮想マシンを作ります。
ubuntu-serverのディスクイメージを使って作りましょう。

起動するとこんな画面になるかと思います。 screen

OSをアップデートします。

[code lang=bash]
sudo apt-get update
[/code]

後でひとつ目の開発用VMから今つくったプロダクションVMへデプロイするためにsshをインストールしておきましょう。

[code lang=bash]
sudo apt-get install ssh
[/code]

[code lang=bash]
sudo service ssh status
[/code]

次は接続の設定をしましょう
ubuntu-server の画面でメニューから, Devices – > Network setting を選び
Advanced を開きます。
その中のPort Forwardingに進みます。.
この画面で、ホストマシンと仮想マシンのポートを紐付けることができます。今回は3022を22と繋げます。
image
また、VirtualBoxのホストマシンはデフォルトで10.0.2.2と設定されているので、設定が済むと

[code lang=bash]
ssh -p 3022 username@10.0.2.2
[/code]

で開発VMから接続できるようになります。

※また、Virtualbox Guest Addition という追加ディスクをVM上でマウントすることで、Virtualboxを便利に使用することが出来るようになります。( Devices – > Insert guest additions CD image )

次に実際にサーバーをセットアップしていきます。
ウェブアプリケーションは多くの場合ウェブサーバーとアプリケーションサーバーを必要とします。

今回は Nginx と Phusion Passenger を使います。
こちら にubuntu(debian)向けのガイドがあります。

確認します。

[code lang=bash]
sudo service nginx status
[/code]

これでサーバーが起動しました。
ウェブページはたいていポート80で稼働しています。確認してみてください。
確認できたら、sshと同じようにこれをホストマシンのポートに紐付けましょう。

exercize 3

Railsアプリケーションを作るにあたってmysql, rvm, ruby, bundlerがサーバーにも必要になります。
セットアップしてみましょう。

4. Test deployment

デプロイに必要な役者が揃いました。
RailsではデフォルトでCapstranoというgemが推奨されていますが、今回はminaを使ってデプロイします。
official page
Gemfile に追加してインストールしましょう。

minaにはデプロイ用スクリプトのテンプレートを用意してくれるコマンドがついています。

[code lang=bash]
mina init
[/code]

そして deploy.rb を適宜編集します。

[code lang=ruby]
set :user, 'deployer'
set :domain, '10.0.2.2'
set :port, '3022'
set :deploy_to, '/var/www/html'
set :keep_releases, 1
set :rails_env, ENV['RAILS_ENV'] || 'production'
set :shared_dirs, ['log']
set :shared_files, ['.env']

set :repository, 'https://github.com/yourname/yourproject.git'
set :branch, 'master'

set :execution_mode, :system

task :environment do
command %[source ˜/.bash_profile]
command %[rvm use 'ruby-2.3.1']
end

task :setup1 do

command %[sudo mkdir -p /var/www]
command %[sudo mkdir -p /var/www/html]
command %[sudo chown deployer /var/www/html]
command %[mkdir -p "/var/www/html/shared/log"]
command %[chmod g+rx,u+rwx "/var/www/html/shared/log"]

command %[touch "/var/www/html/shared/.env"]
end

desc "Deploys the current version to the server."
task :deploy do
deploy do
# Put things that will set up an empty directory into a fully set-up
# instance of your project.
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
#command %{rails db:migrate RAILS_ENV=production} #no migrations now
command %{rails assets:precompile RAILS_ENV=production}
invoke :'deploy:cleanup'

on :launch do
in_path(fetch(:current_path)) do
command %{mkdir -p tmp/}
command %{touch tmp/restart.txt}
end
end
end

end
[/code]

‘setup’ という単語はminaに組み込まれていて、sudoの無いコマンドでセットアップしてくれるのですが今回はsudoが必要なため setup1 という名前を代わりに使います。
ではプロダクションサーバーをセットアップしましょう。
(–verbose をつけると実行されている詳細なコマンドを見ることができます。)

[code lang=bash]
mina setup1
[/code]

ファイルを編集したので、リモートレポジトリーにコミットします(今はブランチのことは気にしなくて構いません)

[code lang=bash]
git add .
git commit -m "mention what your change about"
git push
[/code]

実際にデプロイしましょう。

[code lang=bash]
mina deploy –trace (–verbose)
[/code]

デプロイ先に指定したディレクトリを見てみましょう。
minaによって行われたことを確認してみてください。

[code lang=bash]
cd /dir/you/deplyoed/to
[/code]

最後に、nginxの設定をして、デプロイした内容が公開されるようにします。
/etc/nginx/sites-available/default

[code lang=c]
…

root /var/www/html/current/public;

…
server_name _;
passenger_enabled on;
rails_env production;

#location / {
…
#
#}
[/code]

開発用VMからページを見てみましょう。

▼ クリックで展開
おそらくこんなエラーが出たと思います。
‘Incomplete responce recieved from application’
殆どの場合、エラーにはログが記録されていますので、nginxのログを見に行きましょう。
tail -n 100 /var/log/nginx/error.log

どうやら secret_key_base が必要なようですので作りましょう。

通常このような鍵・パスワードのような機密事項または環境によって異なる値(IPなど)は環境変数によって管理するのが便利です。railsには’dotenv-rails’というgemがあるので使ってみましょう。

プロジェクトのルートディレクトリで、

touch .env

として環境変数を保存する隠しファイルを作ります。
次にsecret keyを生成します。

rake secret

これを”.env” のなかにsecrets.ymlに指定されている変数として書き込みます。
いい機会ですのでデータベースのパスワードも環境変数に置き換えてしまいましょう。

当然ですが、これらの値はリモートレポジトリにコミットすべきではありません。
gitにはgitignoreという機能があります。
.gitignore ファイルに .env を追加しましょう。

ここまでできたら、変更をgithubにプッシュしてから、デプロイし直します。
そして.envの内容をプロダクションサーバーにも書き込みます。(sshでログインするか、scpを使いましょう)
もう一度開発用VMからページを見てみましょう。

 

これで一通りの環境構築が完了しました。

exercise 4

デプロイする度にパスワードを要求されていると思います。
Password Authentication から Publickey Authentication に変えることでこれを不要にできます。

前へ
次へ

採用情報

採用情報

Search

タグ

AI AI導入 Avinton Academy CSR活動 Deep Learning DX LPIC Python Ruby SDGs Webエンジニア イベント インタビュー インフラエンジニア ウェビナー エンジニア オンラインセミナー サーバーエンジニア システム開発 セミナー データサイエンス データベース データ解析 ニュービジネス研究会 ネットワークエンジニア ビックデータ ベンチャー ボランティア 勉強会 営業 就活 就職活動 成長 技術インターン 採用 新規事業 横浜 機械学習 求人 派遣 深層学習 画像分類 社員インタビュー 第二新卒 経営者交流会
© 2021 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
    • AIサービス開発
    • AI画像解析 – 無償PoC
  • 最新情報
  • アカデミー
  • 採用情報
    • Avintonで働く魅力
    • 求人
    • よくある質問
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • CSR(企業の社会的責任)
  • お問い合わせ
  • 日本語
    • English (英語)
Avinton Japan