HTK を Lubuntu にインストールした時に下記のエラーが出ました。 そのときの解決方法を記述しました。
続きを読む HTK: インストール時の missing separator error「Linux」カテゴリーアーカイブ
OpenShift: rhc setup はなにをやってくれるのか
OpenShift では rhc setup
というコマンドが使えます。 このコマンド、実際にはなにをやってくれるのでしょうか。 やってみました。
OpenShift: ssh で ログイン する方法
OpenShift へ ssh でログインする方法です。
試した環境
- OS: Ubuntu
- rhc 1.38.4
- Openshift Gear: 1 small
事前準備
OpenShift の Webコンソール から、 ssh で使用する鍵を登録しておきます。
ログインする方法
rhc を使う
OpenShift のアプリケーション名を rhc ssh
の後につけます。 たとえば OpenShift のドメインが app-domain.rhcloud.com
となっているなら rhc ssh app
となります。
認証トークンをローカルマシンに保存していない場合、接続時にパスワードを求められます。 認証トークンは rhc setup
で作成することができます。
ssh を使う
rhc を経由せずに ssh を使う方法です。
OpenShift の Webコンソール 右下に表示されている ssh コマンド を実行します。 または、 rhc apps
を実行すると ssh の欄に AAAAAABBBBBCCCCCCDDDDDD@app-domain.rhcloud.com
という文字列が表示されるので、 それを ssh の後につけてコマンドを実行します。
パスワードの入力などは必要ありません。
crontab をコマンドで登録する方法
Rails などで、 setup を自動にしている人は多いと思います。 Rails だと whenever という gem を使って crontab をプログラムから設定してしまうことができるのですが、 メールサーバなど Rails をインストールしていない、 インストールするのも煩わしい環境だとそうはいきません。 そこで本記事では、 shell を使って crontab を設定する方法を紹介します。
続きを読む crontab をコマンドで登録する方法Passenger と Nginx で Rails を動かす インストール手順
Passenger, Nginx で Rails を動かすこととなりました。 しかし、デフォルトのインストール方法ではレスポンスに不要なヘッダが含まれてしまいますので、これを除去するために モジュールを含めて nginx のコンパイル・インストールを行いました。 以下はその記録です。
環境
- Ruby 2.2.2
- Nginx 1.8
- Passenger 5.0.18
- EC2 Amazon Linux 2015.03
手順
ruby はインストールされているものとして進めます。
- Passenger の インストール
- Nginx のインストール
- Nginx 及び 必要なモジュールのダウンロード
- コンパイル・インストール
- nginx の設定
- nginx の再起動 (または起動)
Passenger のインストール
gem install passenger
を実行して、 Passenger をインストールします。
Nginx のインストール
ここで root 権限 を使って passenger-install-nginx-module
とやれば、 nginx のインストールはできます。 nginx のソースをダウンロードしてコンパイルしてくれます。 しかし、その状態だと レスポンスヘッダに Nginx や Passenger の名前・バージョンが出力されます。
そういったヘッダを出力させないために、 モジュールを含めて Nginx をコンパイルする必要があります。
Nginx 及び 必要なモジュールのダウンロード
まずは Nginx と 必要なモジュールをダウンロードします。
sudo su -
で root ユーザ に変更して、 cd /usr/local/src
を実行します。
Nginx のダウンロード
Nginx (tar.gz形式) をダウンロードします。 このとき最新の安定版だったのは Nginx 1.8.0 でした。 Nginx の公式ダウンロードページからダウンロードできます。
1 |
wget http://nginx.org/download/nginx-1.8.0.tar.gz |
ダウンロードができたら展開しておきます。
1 |
tar xvfz nginx-1.8.0.tar.gz |
headers-more-nginx-module のダウンロード
シンプルな Nginx と Passenger で運用すると、 ヘッダに Nginx や Passenger のバージョン、 処理時間などが出力されます。 サーバの内側の情報をできるだけ外に出さないようにするために、 Nginx では headers-more-nginx-module というのを使って対処します。
こちらのモジュールは github から最新のバージョン(tar.gz形式)のURLを取得します。
リリース一覧ページ : Releases · openresty/headers-more-nginx-module
1 |
wget https://github.com/openresty/headers-more-nginx-module/archive/v0.261.tar.gz |
ダウンロードができたら展開しておきます。
1 |
tar xvfz v0.261.tar.gz |
展開後は、展開前のファイル名をわかりやすいものに変更しておきます。 Tab を使えば、 展開後のディレクトリ名を利用して(ある程度)簡単に入力できます。
1 |
mv v0.261.tar.gz headers-more-nginx-module-0.261.tar.gz |
コンパイル・インストール
インストールの際には 次のものが必要ですので、 ない場合はあらかじめインストールしておいてください。 なかったとしてもメッセージが表示されますので心配はいりません。
- C コンパイラ (/usr/bin/cc)
- C++ コンパイラ (/usr/bin/c++)
- wget または curl
- SSL をサポートしている curl の development header
- Openssl development header
- Zlib development header
- rake, rack, ruby development header, rubygems
Nginx を過去に同じ場所に同じようにインストールしていた場合は、古い nginx 実行ファイル が nginx.old
という名前になります。
スワップ領域
EC2 micro instance などを使っている場合で、 メモリが十分に無い場合(1GB以下の場合)はスワップ領域が必要になります。 root 権限 で次のコマンドを実行します。
1 2 3 4 |
sudo dd if=/dev/zero of=/swap bs=1M count=1024 chmod 644 /swap sudo mkswap /swap sudo swapon /swap |
メモリが足りないままインストールを実行した場合でも、インストール中に案内が表示されますので心配はいりませんが。
passenger-install-nginx-module
を実行します。 特にオプションは必要ありません。
1 |
passenger-install-nginx-module |
ここからインストールが始まります。
まずは 処理の説明が表示され、 Press Enter to continue, or Ctrl-C to abort.
と表示されます。 Enter を押して続行します。 途中で止めたくなったら いつでも Ctrl-C を押せば止められます。
続いて Which languages are you interested in?
と表示されるので 必要なものを画面の指示にしたがって選択し、 Enter を押します。
インストールされているソフトウェアのチェックが終わると、Do you want this installer to download, compile and install Nginx for you?
と、 インストール方法を聞かれます。 ソースからコンパイルを行うので 2. No: I want to customize my Nginx installation. (for advanced users)
を選びます。
また、 私の場合は PCRE というのがインストールされていなかったようで、 途中で自動的にダウンロードされました。
次にソースファイルの場所とオプションの入力が必要になります。 次のように入力しました。
- Where is your Nginx source code located?
/usr/local/src/nginx-1.8.0
- nginx のソースの場所です。
- Where do you want to install Nginx to?
- デフォルトのまま何も入力せず Enter を押しました。
- nginx のインストール先です。
- Extra Nginx configure options
--add-module=/usr/local/src/headers-more-nginx-module-0.261
- nginx をコンパイルする際のオプションです。 headers-more-nginx-module を使用するため、
--add-module
オプションを設定しています。 デフォルトで設定されるオプションはコンソール上に表示されます。
最後の意志確認をされますので、 まちがっていなければ Enter を押します。 コンパイルとインストールが実行されます。
nginx の設定
私は /opt/nginx/conf/nginx.conf.default
をコピーして /opt/nginx/conf/nginx.conf
を作って編集しました。 (もっときれいなやり方もあると思いますが。)
Rails を動かすだけなら 次のようにすれば OK です。 抜粋してサンプルを掲載します。 client_max_body_size
はクライアントからの画像アップロードのために設定しています。 (デフォルトでは1Mだそうです。) その他の設定値の意味は Phusion Passenger users guide, Nginx version などに説明がありますのでそちらをご参照ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
http { passenger_root /path/to/passenger-x.x.x; passenger_ruby /path/to/bin/ruby; server { location / { index index.html index.htm; client_max_body_size 10M; passenger_enabled on; root /var/rails/root/public; passenger_base_uri /var/rails/root; rails_spawn_method smart; rails_env development; # or production } } } |
そこにヘッダレスポンス変更のための記述を追加します。
1 2 3 4 5 6 |
http { more_clear_headers Server; more_clear_headers ETag; more_clear_headers X-Powered-By; more_clear_headers X-Runtime; } |
設定が間違っていないことを次のコマンドでチェックします。 エラーが表示されなければ OK です。
1 |
/opt/nginx/sbin/nginx -t |
Nginx の再起動 (または起動)
再起動のときには /opt/nginx/sbin/nginx -s reload
とやることが多いのですが、 今回はそれではうまくいきませんでした。
/opt/nginx/sbin/nginx -s stop
で nginx を止めてから /opt/nginx/sbin/nginx
を実行するとうまくいきました。
初めて起動する場合は /opt/nginx/sbin/nginx
のみ実行すれば OK です。