いーほろよいの技術ブログ

IT技術ブログになります。

Ruby on Railsのお勉強 〜おさらい〜

Railsをやろうと思った経緯

ここ数年でRailsの要望が今まで以上に、すごいスピードで上がってきている事を実感したので、使えるようになろうかと重い腰をあげました。

正直、バックエンドのFWはパフォーマンスと運用コストが見合っていれば『なんでもいいじゃない?』っていうのが私の意見なのですが...

 

環境構築のおさらい

以前、環境構築でrbenvとbundlerのインストールの記事を書いております。

今回は用語と工程のおさらいに止めます。

環境構築を確認されたい方は↓の記事を確認お願いします。

 

e-horoyoi.hatenablog.com

 

 

e-horoyoi.hatenablog.com

 

用語

先ずは各用語について、おさらいです。(簡単な説明のみ)

rbenv

複数のRubyバージョンを管理する。

 

gem

rubyのパッケージを管理する。

 

bundler

gemの一部でパッケージを一括管理できる。

 

Ruby on Rails開発環境を作るまでの工程

  1. rbenvのインストール(この時点で同時にgemはインストールされる)
  2. 使用するrubyのバージョンを指定してインストール
  3. bundlerのインストール
  4. 開発するための場所(ディレクトリ)を作成して移動
  5. 移動先のディレクトリ内でbundlerの初期化(Gemfile作成)を行う
  6. 作成されたGemfileに使用するrailsのバージョンを記述してrailsをインストール
  7. railsコマンドでプロジェクトを作成(ここでほぼ環境構築おわり)

 

実際の組み込み作業

構成

プロジェクト : rbhoge

 

手順

>mkdir rbhoge

>cd rbhoge

>rbenv local 2.4.1

>bundler init

>vi Gemfile

gem "rails", "{version}" を追記

>bundler install --path vendor/bundler

>bundler exec rails new .

>vi Gemfile

"therubyracer"のコメントアウトを外す

>bundler install --path vendor/bundler

 

とりあえず、ここまで

 

次回からは簡単なお問い合わせフォームを作ってみたいと思います。 

virtualenvをインストールしようと思ったらpyenv-virtualenvになった

間が空いてしました。

色々と忙しくて...(言い訳です。)

 

↓前回、pyenvをインストールした話の続きです。

e-horoyoi.hatenablog.com

 

virtualenvをインストールしようと思ったらpyenv-virtualenvというプラグインがあるようなので、大人しくそれをインストールします。(正直、違いがよくわかっていません。)

分かっている事はpyenv-virtualenvを使用する事でpyenvでインストールした各バージョンのプラグインを分けて使用できるようになるようです。

例えば、バージョン3.6.1にパッケージのipythonが入っている仮想環境、入っていない仮想環境という具合に別々の環境が作れる。

 

インストールはGitHubに公開されているpyenv-virtualenvにあるreadmeの手順に沿って行うだけです。

github.com

 

手順

pyenv-virtualenvの準備

>git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

 

cloneできたか確認する。(pyenv-virtualenvがあればOK

>ls -l ~.pyenv/plugins/

 

ログイン時にvirtualenvが有効になるように設定ファイルに追記

>echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

 

設定ファイルの読み直し

※個人的には"souce ~/.bash_profile"をオススメします。(何故かpyenv shellが認識されなかったので)

>exec "$SHELL"

 

作成する仮想環境に必要なpythonのバージョンをインストール

今回は2.7系を予めインストールしておく(3系でも手順は同じです)

>pyenv install 2.7.13

↓警告が出るけどインストールできた。

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?

 

仮想環境の作成

バージョンが2.7.13のmy-virtual-env-2.7.13という仮想環境を作成する。

コマンド実行後に"ls -l ~/.pyenv/versions/"を実行すると分かり易いです。

インストール済みの各バージョン以下のenvsディクトリ以下に作成されます。

それを各バージョンと同じ階層にシンボリックリンクを貼ってます。

>pyenv virtualenv 2.7.13 my-virtual-env-2.7.13

 

検証用にenv2.7.13という仮想環境も作成する。

>pyenv virtualenv 2.7.13 env2.7.13

 

仮想環境の構築 (その1)

作成された仮想環境(my-virtual-env-2.7.13)を構築するためアクティブ状態にします。

※これを実行するとbashプロンプトにアクティブ状態の仮想環境名が表示されます。

 >pyenv activate my-virtual-env-2.7.13

 

試しに作成した仮想環境(my-virual-env-2.7.13)にipythonをインストール

>pip install ipython

 

インストールされた事を確認

>pip show ipython

 

仮想環境の構築 (その2)

このままenv-2.7.13に切り替えてipythonがインストールされているか確認してみます。

>pyenv activate env2.7.13

 

ipythonがインストールされているか確認

>pip show ipython

※表示されないはず 

 

まとめ

流れとやる事を下記にまとめます。

 

予め作成する仮想環境に対応したpythonのバージョンをインストール

>pyenv install {バージョン}

 

仮想環境の作成(必要な分)

>pyenv virtualenv {pythonのバーション} {仮想環境名}

 

作業ディレクトリを作成

>mkdir ~/{作業ディレクトリ名}

 

作業ディレクトリに移動して仮想環境を指定

>cd ~/{作業ディレクトリ名}

>pyenv activate {仮想環境名}

 

仮想環境に合わせてプラグインをインストール

作成した仮想環境ごとに使用するプラグインをインストールする。

※心配なら仮想環境以下を覗いて確認

python2系

>pip install {パッケージ名}

 

python3系

>pip3 install {パッケージ名}

 

仮想環境別のパッケージインストールの確認する場所

~/.pyenv/versions/{仮想環境名}/lib/{pythonバージョン}/site-packages/

 

仮想環境から抜ける

作業が終り仮想環境から抜けたいとき

>pyenv deactivate

 

以上、virtualenvあらためpyenv-virtualenvでした!

 

次回予告

php-envをやろうかと思ったのですが、Ruby on Railsを掘り下げてみたいと思います。

 

最後まで読んでいただきありがとうございます!

 

pyenvをインストールしてみた

前々回?にrbenvをインストールしたと思います。

 

e-horoyoi.hatenablog.com

 

今回はpyenvをインストールしてみます。

 

はじめに

今回は事前インストールするものはありませんでした。

強いていうなら、pyenvを提供してくださっているGitHubのドキュメント(readme)を読むくらいかと思います。

github.com

 

pyenvのインストール

手元にpyenvのcloneを作成

>git clone https://github.com/pyenv/pyenv.git ~/.pyenv

 

GitHubにある手順通りに.bash_profileに環境変数を追記

>echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile

>echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

>echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

>exec $SHELL

 

pythonのインストール

先ずはリリースされているバージョンの確認

pyenv install --list

 

3.6.1をインストール

pyenv install 3.6.1

 

インストール出来ているか確認

pyenv versinos

 

以上、pyenvのインストールです。 

 

pyenvだけでも便利なのですが、virtualenvを入れるともっと便利になるようです。

 

次回予告

virtualenvのインストールと使い方

 

 

 

CentOS7でFirewallの設定を無効にする!

はじめに

Ruby on Railsの環境構築時にRailsサーバーを立ち上げたのに接続できない問題でFirewallが邪魔していたので停止&無効にした話です。

本来、セキュリティ上は必須なのですが、閉ざされた開発環境でのみ使用するという条件下のため停止&無効にするという話です。

闇雲に停止&無効にはしないでください。

 

作業コマンド

作業はroot権限を持っていないとできません。

 

確認

今まで停止or無効にした記憶がなければ、下記のコマンドを打つとactiveと表示されるはずです。

>systemctl status firewalld.service

 

停止

>systemctl stop firewalld.service

 

無効

>systemctl disable firewalld.service

 

無効の確認

>systemctl is-enabled firewalld

 

Ruby on Railsの環境構築やってみる

だいぶ日が空いてしまいました。

申し訳ございません。

言い訳は手元のMacの調子が悪くレンボーカーソルが頻発して固まるといった症状が続いております....

 

↓前回の作業でrbenvをインストールできたので

 

e-horoyoi.hatenablog.com

 調子にのってRailsの環境構築をやろうと思ったのですが、やり方が沢山あってお腹いっぱいになります。

 

はじめに

rbenvの環境が整っている事が前提で進めます。

また、今回やりたい事はbundlerを使用してRailsをインストールする。

どうやらgemでインストールするよりbundlerを使用する方が主流になりつつあるそうです。

bundlerについて

複数のパッケージをgemでインストールする事になると思います。

しかし、一つずつgemでインストールしていると面倒...。

また、『相性の合ったパッケージをまとめて管理したい。』ともなるでしょう。

そんな時にbundlerを使用するとGemfileで一括管理できます。

 

準備

予め済ませておく事

後半のRailsのプロジェクト作成時にsqlite3関連でエラーになるので予めインストールします。

>yum install sqlite-devel

※root権限での作業になります。

 

Railsサーバー立ち上げ時にgemパッケージの"therubyracer"がインストールされている必要があり、このパッケージをインストールするのにg++が必要になるので予めインストールしておく。

>yum install gcc-c++

※root権限での作業になります。

 

 

以前、四苦八苦しながらインストールした時は管理者権限を要求された記憶が薄っすらあるので、自分のアカウントでsudoコマンドが実行できるようにwheelグループに参加します。(もしかしたらローカル環境ならいら無いかも)

>usermod -aG wheel {追加したいユーザーアカウント}

※root権限での作業になります。

 

rbenvをインストールするとgemが既にインストールされております。

 

bundlerのインストール

>rbenv exec gem install bundler

 

bundlerのインストール確認

>gem list | grep 'bundler'

 

作業ディレクトリ(プロジェクト)を作成して移動

>mkdir ~/hoge

>cd ~/hoge

 

Ruby on Railsインストール

確認作業

リリースされているRailsのバージョンを確認します。

 

たくさん出ます。

そしてstableかは下記のコマンドではわかりません。

今回は最新の4系をインストールしてみたいと思います。

>gem search ^rails$ -a

 

bundlerの初期設定

ここで気を付ける事は"rbenv exec"で実行する事です。

bundlerだけでもいいのですが、local環境に作りたい場合、その環境に移動してrbenvで指定したrubyのバージョン以下で作業しないとglobalの環境に構築する事になってしまうので注意が必要です。

>rbenv exec bundler init

 

実行すると"Gemfile"というファイルができます。

このファイルの中にインストールしたいgemパッケージを羅列してインストールする。 

>vi Gemfile

今回は下記を追記する。(バージョンを指定しないと最新が入る)

gem "rails", "4.2.9"

 

railsインストール

>rbenv exec bundler install --path vendor/bundler

 

補足:gitで管理する場合"/vendor/bundler" を管理対象外にする必要あり

>echo '/vendor/bundle' >> .gitignoree

 

インストール後にプロジェクト作成

Gemfileの上書き確認がありますが上書きで構いません。

>rbenv exec bundler exec rails new .

 

Railsサーバー起動

CentOS7のfilewallを停止しておいてください。

e-horoyoi.hatenablog.com

 

>rbenv exec bundler exec rails s -b 0.0.0.0

※お約束エラー"uglifier"が出ると思います。分かり難いのですがGemfileの"therubyracer"がコメントアウトされているので、このコメントアウトを外しbundlerを利用してGemfileの再インストールをすると解消されるはず。

 

ホストのブラウザから確認

下記のように3000番ポートを指定してアクセスしてWelcomeが表示されればOKです。

http://{ご自身の環境に合わせて}:3000/

f:id:e-horoyoi:20170703154508p:plain

以上、Ruby on Railsをインストールしてみるでした。

 

次回予告

とりあえず、環境構築あたりをやろうと思うので次回はpyenvの環境構築をやってみようと思います。

 

以上、最後までお読みいただきありがとうございます。 

 

rbenvをインストール

先日は脱線してしまい申し訳ございません。

今回はちゃんとrbenvをインストールします。

 

↓前々回に宣言していたアレです。

e-horoyoi.hatenablog.com

 

はじめに

思ったより簡単でした。

GitHubに手順が書いてあります。

github.com

 

github.com

 

rbenvって何?

Rubyは更新頻度の高い言語なので、いくつものバージョンを開発環境に準備したいという要望を叶えてくれるものです。(ありがたい)

 

rbenvインストールする前に

git、gccbzip2、openssl-devel、readline-devel、zlib-develが必要になるので予めインストールしておきましょう。

>yum install git gcc bzip2 openssl-devel readline-devel zlib-devel -y

 

rbenvのインストール

1.  gitからclone

>git clone https://github.com/rbenv/rbenv.git ~/.rbenv

 

 

2. インストール

>cd ~/.rbenv && src/configure && make -C src

 

3.  ".bash_profile"に登録

>echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

>echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

>souce ~/.bash_profile

 

4. バージョン確認

バージョン確認と共にインストールと設定ができている事を確認する。

>rbenv --version

 

5.  ruby-buildをclone

早速、rubyをインストールしたいのですが、rbenvをインストールしただけではinstallできません。

ruby-buildをcloneするとinstallオプションが使えるようになります。

>git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

 

6. バージョンの確認

>rbenv install --list

 

7. rubyのインストール その1

ruby2.3を入れてみる。

>rbenv install -v 2.3.4

 

8. rubyのインストール その2

ruby2.4を入れてみる。

>rbenv install -v 2.4.1

 

9. インストール済みの一覧を表示

>rbenv versions

 

10. 全体で使用するバージョンを選択

>rbenv global 2.3.4

* 2.3.4 (set by /home/kazuo/.rbenv/version)

  2.4.1

こんな感じで選択される。

 

11. ディレクトリ別にバージョンを指定

>mkdir ~/ruby241

>cd ~/ruby241

>rbenv local 2.4.1

>ruby -v

ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

>cd ~/

>ruby -v

ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]

 

ディレクトリ別にも使用できるし便利ですね。

今回ご紹介したrbenvのオプションは他にもあるので確認してみてください。

 

次回予告

Ruby on Railsをインストールしてみる。

 

以上、rbenvをインストールするでした。

 

最後までお読みいただきありがとうございます。

 

 

FuelPHPの環境インストール

Rubyをやるとか言ってましたが、以前にFuelPHPのセットアップした時の手順書が出てきたので忘れ無いうちに転記したいと思います。

若干古いですがCentOS6の環境をお使いならまだ行けるかと思います。

 

はじめに

ここで達成できる目標は下記の通りです。

  • IUSリポジトリを使用したrpmパッケージインストールの手順書になります
  • "yum update"が済んでいる事を環境を前提の手順になっております
  • FuelPHPが使用できる環境構築の話でそれ以降の手順はございません
  •  開発者の想定はサーバーサイドにてCUIで作業する事を想定しております

 

環境について

構成

OS:CentOS6系

WEBサーバー:niginx

言語:PHP5.6

フレームワークFuelPHP(1.7.2)

DB:MySQL5.6

 その他:Mecab

yumリポジトリ参照先

http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/
http://nginx.org/packages/centos/6/noarch/RPMS/

 

インストールする

nginx、phpおよびphp関連パッケージ、mysql-client

1. "/etc/yum.repos.d/"以下にepel、ius、nginxを追加する

>rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/epel-release-6-5.noarch.rpm

>rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-13.ius.centos6.noarch.rpm
>rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

 

※インストール後のyum.repos.dの設定は以前のブログと同じです。

 

e-horoyoi.hatenablog.com

 

 

2. 追加後にクリアして参照されるよにしておく

>yum clean all

 

3. MySQL関連のパッケージをインストールする場合は"mysql-libs"を削除する

"mysql-libs"を予め削除しないとインストールするタイミングで競合が発生する事があります。

※因みに、mysql-libsはpostfixと依存関係があるので依存関係を無視して削除する。
>rpm -e --nodeps mysql-libs

 

4. PHPインストール

>yum install -y php56u-cli php56u-common php56u-devel php56u-embedded php56u-fpm php56u-gd php56u-mbstring php56u-mcrypt php56u-mysqlnd php56u-pdo php56u-soap php56u-pear php56u-pecl-jsonc php56u-pecl-jsonc-devel php56u-pecl-memcache php56u-pecl-memcached php56u-pecl-xdebug php56u-xml php56u-xmlrpc mysqlclient16 mysqlclient16-devel mysql56u git2u

 

インストールするパッケージ一覧

php56u-cli-5.6.7-1.ius.centos6.x86_64.rpm
php56u-common-5.6.7-1.ius.centos6.x86_64.rpm
php56u-devel-5.6.7-1.ius.centos6.x86_64.rpm
php56u-embedded-5.6.7-1.ius.centos6.x86_64.rpm
php56u-fpm-5.6.7-1.ius.centos6.x86_64.rpm
php56u-gd-5.6.7-1.ius.centos6.x86_64.rpm
php56u-mbstring-5.6.7-1.ius.centos6.x86_64.rpm
php56u-mcrypt-5.6.7-1.ius.centos6.x86_64.rpm
php56u-mysqlnd-5.6.7-1.ius.centos6.x86_64.rpm
php56u-pdo-5.6.7-1.ius.centos6.x86_64.rpm
php56u-soap-5.6.7-1.ius.centos6.x86_64.rpm
php56u-pear-1.9.5-1.ius.centos6.noarch.rpm
php56u-pecl-jsonc-1.3.7-1.ius.centos6.x86_64.rpm
php56u-pecl-jsonc-devel-1.3.7-1.ius.centos6.x86_64.rpm
php56u-pecl-memcache-3.0.8-4.ius.centos6.x86_64.rpm
php56u-pecl-memcached-2.2.0-4.ius.centos6.x86_64.rpm
php56u-pecl-xdebug-2.3.0-2.ius.centos6.x86_64.rpm
php56u-xml-5.6.7-1.ius.centos6.x86_64.rpm
php56u-xmlrpc-5.6.7-1.ius.centos6.x86_64.rpm
mysqlclient16-5.1.61-4.ius.centos6.x86_64.rpm
mysqlclient16-devel-5.1.61-4.ius.centos6.x86_64.rpm
git2u-2.3.3-1.ius.centos6.x86_64.rpm

 

開発環境(個人環境)に必要であればインストール

>yum install -y mysql56u mysql56u-common mysql56u-devel mysql56u-embedded mysql56u-embedded-devel mysql56u-libs mysql56u-server
mysql56u-5.6.23-2.ius.centos6.x86_64.rpm
mysql56u-common-5.6.23-2.ius.centos6.x86_64.rpm
mysql56u-devel-5.6.23-2.ius.centos6.x86_64.rpm
mysql56u-embedded-5.6.23-2.ius.centos6.x86_64.rpm
mysql56u-embedded-devel-5.6.23-2.ius.centos6.x86_64.rpm
mysql56u-libs-5.6.23-2.ius.centos6.x86_64.rpm
mysql56u-server-5.6.23-2.ius.centos6.x86_64.rpm

 

nginxインストール

>yum -y install nginx

 

FuelPHPのApp以下をセットアップ

1. FuelPHPのDL

下記からDLして展開します。

>unzip fuelphp-1.7.2.zip

fuelphp.com

 

2. composerの実行

展開したファイル直下にcomposer.pharというファイルがあるので更新コマンドを実行する

>php composer.phar update

 

3. デフォルトのフォルダを書き込み可能にする

注:実行するときは下記の環境変数が登録されている事を確認する。(これが設定されて無い"Configクラスを見つけられない"とエラーになる)

export FUEL_ENV=development
export SERVICE_NAME_ENV={サービス名}

注:エラー時に手動で作成する
mkdir /{任意のパス}/fuel/app/cache /{任意のパス}/fuel/app/logs /{任意のパス}/fuel/app/tmp

>php oil refine install

下記、実行結果の例
Made writable: /{任意のパス}/fuel/app/cache
Made writable: /{任意のパス}/fuel/app/logs
Made writable: /{任意のパス}/fuel/app/tmp
Made writable: /{任意のパス}/fuel/app/config

 

Mecabのインストール

FuelPHPのセットアップには関係無いのですが、手順書に含まれていたので書いておきます。

Mecab(本体)のインストール

>yum install -y gcc-c++
>cd /tmp
>wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
>tar zxfv mecab-0.996.tar.gz
>cd mecab-0.996
>./configure --enable-utf8-only
>make
>make install

 

Mecab IPAdic(辞書インストール)

>wget https://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
>tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
>cd mecab-ipadic-2.7.0-20070801
>./configure --with-mecab-config=../mecab-config --with-charset=utf8
>make
>make install

 

php-mecabMecabのExtensionをインストール)

>cd /tmp
>wget https://github.com/rsky/php-mecab/archive/master.zip
>unzip master.zip
>cd php-mecab-master/mecab
>phpize
>./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/local/bin/mecab-config
>make
>make install
>sed -i -e 's|; default extension directory¥.|; default extension directory.¥nextension=mecab.so|' /etc/php.ini

 

以上、FuelPHPのセットアップになります。 

 

最後までお読みいただきありがとうございます。