Freelance Orgsin Official Site

ごゆっくりしていって下さい

AzureからCentOSの最小限Rails環境を構築

AzureからCentOSのRails環境を構築したので,ログを残しておこうと思う.

運用する前にまずテストとして,月に1500円以下の低スペックのMicrosoft AzureによるLinux環境.

※なお,この環境でCapistranoを走らせるとメモリ使用率が100%を超え,落ちる事があったので,仮にデモ等で自動デプロイなどをしたい場合スペックを上げることを推奨する.

想定構成

  • 開発サーバ
  • ステージングサーバ
  • リバースプロキシ用サーバ
  • Webアプリをのせるサーバ
  • DBサーバ

コンピュータスペック

  • Microsoft Azure
  • Basic A0
    • 1 コア
    • 0.75 GB メモリ
    • 1データ ディスク
    • 1x300 最大 IOPS)
  • CentOS release 6.8 (Final)
  • 1,365.98 JPY/月 (推定)

CentOSの設定

作業ログ

# 最初にパッケージの更新
$ sudo yum update

# 必要なライブラリのインストール
$ sudo yum -y install epel-release
$ sudo yum -y install git gcc gcc-c++ openssl-devel readline-devel ruby-devel rubygems libxslt-devel nginx mumin postgresql-devel sqlite sqlite-devel nodejs

# ssh認証の設定
$ mkdir .ssh
$ chmod 700 .ssh/
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ echo "{public key}" >>.ssh/authorized_keys

$ vi /etc/ssh/sshd_config
$ AuthorizedKeysFile .ssh/authorized_keys
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PasswordAuthentication no
ClientAliveInterval 15
# ※この設定でパスワードログインができなくなるので注意

$ service sshd restart

# JSTへ変更
$ service ntpd restart
$ ntpdate -s -b ntp.jst.mfeed.ad.jp
$ cp /etc/localtime /etc/localtime.back
$ cp /etc/sysconfig/clock /etc/sysconfig/clock.back
$ ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ echo 'ZONE="Asia/Tokyo"' >/etc/sysconfig/clock
$ date

# Ruby環境のインストール
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ ~/.rbenv/plugins/ruby-build/install.sh
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ rbenv install --list
$ rbenv install -v 2.4.0
$ rbenv global 2.4.0

## Railsのインストール
$ gem install --no-ri --no-rdoc rails

疎通確認

次に,AzureのLinuxとローカルコンピュータの疎通チェックをする.以下2点が問題なければこの作業はOK.

  • 公開鍵を使い,ssh認証でつながること → リモート作業をやっていく上で問題なければOK
  • 22,443,80ポートを空け,自分のIPを直指定しつながること → IPを指定しないと外部に公開してしまうため → セルフ証明書を通さないなら443は開ける必要がない
ポートの空け方

リモート上で作業することも可能ですが,今回はAzureを使っているので,Azureポータル上で行ってみました.AWSで言えば,セキュリティグループのインバウンドの設定のようなものです。

  1. 「ダッシュボード」から,仮想マシンを選択します
  2. 「設定」→「エンドポイント」→「スタンドアロン」に追加します
  3. ブラウザから,今回作った環境のホストにアクセスし「Welcome to nginx on EPEL!」が出ることを確認する
  4. /usr/share/nginx/html/index.htmlの内容を変え,反映されているかどうか確認する
    ※ブラウザのキャッシュをクリアしないと反映されない可能性もあるのでChromeなら「command+R」でキャッシュをクリアしておくと良い

※設定内容は,アクセス制御リストのアクションを許可にし,リモート サブネットに自らのグローバルIPアドレスを入力して保存すればOK

f:id:sinsinchang:20161221174653p:plain

Azureテクノロジ入門2016 (マイクロソフト関連書)

Azureテクノロジ入門2016 (マイクロソフト関連書)

さわってわかる機械学習 Azure Macine Learning 実践ガイド

さわってわかる機械学習 Azure Macine Learning 実践ガイド

免責事項

  • 広告は、「外部広告」や、ヘッダ、あるいはフッタにのみ表示しております。
  • 掲載された情報の内容の正確性については一切保証しません。
  • 当サイトに掲載された情報・資料を利用、使用、ダウンロードするなどの行為に関連して生じたあらゆる損害等についても、理由の如何に関わらず、当サイト管理者は一切責任を負いません。
  • 当記事は、予告なく更新され、削除される可能性があります。

f:id:sinsinchang:20161223134959p:plain