[サーバー] さくらVPSのセットアップ② 〜 nginxのインストール、Jenkinsのインストール、nginxとJenkinsの接続(リバースプロキシ)、nginxとPHP、パケットフィルタリング、など 〜
こんにちは、@yoheiMuneです。
前回に引き続き、CentOSへのセットアップを行ったので、作業内容などを残しておきたいと思います。
軽量で高速なウェブサーバNginxを、Ubuntu 12.04に導入する(起動・停止編)
3.3 Nginx の起動停止
ただ1点、手痛い失敗をしました。最初に作ったJenkins用のユーザーに権限を付け忘れて(read権限すら付け忘れて)、Jenkinsのログインを切ってしまったため、Jenkinsに入れなくなってしまいました。その場合に以下の手順でJenkinsの設定を初期化しました。
以下を記述します。
iptablesの設定方法|さくらインターネット公式サポートサイト
iptablesの設定 入門編 - Murayama blog.
最後までご覧いただきましてありがとうございました!
前回に引き続き、CentOSへのセットアップを行ったので、作業内容などを残しておきたいと思います。
Special Thanks to https://flic.kr/p/7XUm8L
目次
nginxのインストール
Webサーバーとして今回はApacheではなくnginxに挑戦します。インストールは簡単でyum経由でインストールできます。# CentOS6系の場合 # nginxのレポジトリをyumに追加 $ rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm # yum経由でインストール $ yum install nginx # 起動 $ service nginx start # 起動確認 $ curl http://localhost # OS起動時に自動起動するように設定する $ chkconfig nginx on # 再起動して確認してみる $ reboot
参考資料:
nginxをyumでインストールする手順 (CentOS/RedHat)軽量で高速なウェブサーバNginxを、Ubuntu 12.04に導入する(起動・停止編)
3.3 Nginx の起動停止
Jenkinsのインストール
ビルド管理や定期実行ジョブの管理にはJenkinsさんが便利。今回もJenkinsのお世話になるべく色々とセットアップしました。インストール、起動
まずはインストールと起動です。Jenkinsもyum経由でインストールできます。# Javaのインストール $ yum install java-1.7.0-openjdk # Jenkinsのレポジトリをyumに追加 $ wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo $ rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key # インストール $ yum install jenkins # 起動 $ service jenkins start # 起動確認 $ curl http://localhost:8080 # OS起動時に自動起動するように設定する $ chconfig jenkins on # 再起動して確認してみる $ reboot
参考資料:
CentOS/RedHatにJenkinsをインストールする手順 (yum, RPM)Jenkinsの認証周りの設定
デフォルト設定では誰でもなんでもできてしまいますので、認証周りの設定を行います。参考資料:
JenkinsをCentOS6にインストールしてユーザー認証設定ただ1点、手痛い失敗をしました。最初に作ったJenkins用のユーザーに権限を付け忘れて(read権限すら付け忘れて)、Jenkinsのログインを切ってしまったため、Jenkinsに入れなくなってしまいました。その場合に以下の手順でJenkinsの設定を初期化しました。
# 設定ファイルをなかったことにする $ cd /var/lib/jenkins $ sudo mv config.xml _config.xmlこれでJenkinsを再起動したら無事に設定が初期化されました。よかったよかった。
JenkinsにGitを導入する
全てのプログラムはbitbucketというGithubのお友達のようなサービスで管理しているため、JenkinsでもGitが使えるように設定します。参考資料:
開発者(個人)のためのJenkins - Git Plugin編JenkinsでRubyが使えるようにする
今回作成したプログラムのうちいくつかはRubyで書きました。JenkinsでもRubyを扱えるように環境変数のパスを設定しておきます。Jenkinsの管理 > システムの設定 > グローバルプロパティ > 環境変数
に以下を設定した。キー: PATH 値: /opt/rbenv/bin:/opt/rbenv/shims:${PATH}
JenkinsでSCPも使えるようにするために鍵を作る
Jenkinsで管理するタスクの中には、他のサーバーへSCPでデプロイするものもあります。Jenkinsユーザーでいい感じにSCPができるように鍵を設定しておきます。ちなみに、ここはかなりはまりました。Linux上でJenkinsユーザーにどうやったらなれるのか、あちこち調べ回りました。$ sudo su jenkins -s /bin/bash $ cd ~/.ssh $ ssh-keygen $ cat id_rsa.pub # => コピる # リモートサーバーに接続 $ ssh user@xx.xx.xx.xx $ cd .ssh $ echo "## id_rsa.pubの内容 ##" >> authorized_keys $ exit # 接続テスト $ scp sample.txt user@xx.xx.xx.xx:~
メール通知
あといくつかのビルドでは、ビルド成功時にもメール通知してほしかったので、以下のプラグインを使いました。Email-ext plugin
nginxをリバースプロキシとして使いJenkinsに繋ぎこむ
今回のサーバーはリリース間もないサービスを色々と載せようと考えているため、先述のnginxにたくさんの役割をしてもらおうと考えています。その中の一つがリバースプロキシで、この機能を使うことでhttp://jenkins.example.com
としてアクセスしてきた場合にJenkinsサーバーへリクエストを流す設定をしました。# Jenkins用の設定ファイルを作る $ cd /etc/nginx $ touch conf.d/jenkins.example.com.conf
以下を記述します。
# conf.d/jenkins.example.com.conf server { server_name jenkins.example.com; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; location / { proxy_pass http://127.0.0.1:8080; } }設定のチェックをして再起動します。
# 設定チェック $ /etc/init.d/nginx configtest # 再起動 $ service nginx restart
参考資料:
Nginxでリバースプロキシを設定するパケットフィルタリング
8080のJenkinsポートなど不要なポートはIn/Outで塞いでしまいます。# 必要なポートを指定 $ iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT $ iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT # その他は閉じる $ iptables -P INPUT DROP $ iptables -P OUTPUT ACCEPT # など、その他にも色々と設定しました。
参考資料:
Linuxで作るファイアウォール[パケットフィルタリング設定編] (1/2)iptablesの設定方法|さくらインターネット公式サポートサイト
iptablesの設定 入門編 - Murayama blog.
nginxとPHP
サーバーサイドプログラムは今回、PHPで作成しました。nginxでPHPが動くように色々と設定を行いました。参考資料:
CentOSにてnginxでPHPを動かすその他
そのほか、以下の記事を参照しました、ありがとうございます!参考資料:
sudo時にPATHを引き継ぐ方法最後に
以上で必要最低限なモジュールはインストールすることができました。それにしてもはまるポイントがいろいろとあったw。ぜひ同じハマりをしないように、次に困った時にはこのブログを見直してヒントを得られるようにしたいと思う今日この頃です。最後までご覧いただきましてありがとうございました!