Nginx+PerlのCGI環境にMovable Typeをインストールする一撃シェルスクリプト
ツールがなくてもサーバー構築でだじろがない! 一撃シェルスクリプト道場 第2回
ダウンロード ICHIGEKI (6.9 KB)
今回の一撃シェルスクリプトは、OSインストール直後のサーバーに対し、サーバーの構成管理とCMS(コンテンツ管理システム)の「Movable Type」のセットアップと起動をオートメーション化するものです。サーバーは前回と同様、CentOS 6.6をminimalでインストールしたものとします。CMSは起動したことがWebブラウザで確認できて楽しいので、皆さんもぜひチャレンジしてみてください。
-
- Page 4
-
- perl-fastcgiのinitスクリプトの作成
- ①行頭のdescriptionを修正するためにいったん削除する
- ②・③descriptionがないのも不都合なので追加する
- ④3行目にあるdescriptionの直下に「# chkconfig: - 85 15」を追加する
- ⑤「nginx="/opt/nginx/sbin/nginx"」を「perlfastcgi="/usr/bin/fastcgi-wrapper.pl"」に直す
- ⑥「prog=$(basename $nginx)」を「prog=$(basename perl)」に直す
- ⑦「NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"」で始まる行を削除する
- ⑧「lockfile=/var/lock/subsys/nginx」を「lockfile=/var/lock/subsys/perl-fastcgi」に直す
- ⑨start関数の中の「 [ -x $nginx ] || exit 5 」 を 「 [ -x $perlfastcgi ] || exit 5 」に直す
- ⑩start関数の中の 「 [ -f $NGINX_CONF_FILE ] || exit 6 」 を削除する
- ⑪start関数の中の「daemon $nginx -c $NGINX_CONF_FILE」を「daemon $perlfastcgi」に直す
- ⑫restart関数とreload関数の中から「configtest || return $?」を削除する
- ⑬reload関数内の「killproc $nginx -HUP」を「stop ; start」に直す
- ⑭60〜62行目にある「configtest」を関数ごと削除する
- ⑮case文の中で引数にrestartとconfigtestを与えたときの条件を、restartのみに変更する(configtest関数を削除したため)
- ⑯95行目にあるUsageの行から「configtest」を削除する
なお、今回の一撃シェルスクリプトが実行する処理は次のとおりです。
- OSインストール直後の各種設定
- ドキュメントルート作成とMovable Typeダウンロード
- MySQLインストールとDB作成
- perlモジュールとnginxインストール
- perl-fastcgi initスクリプト作成
- デーモンの自動起動設定、パッケージのアップデート、再起動
どのようなサーバーを構築するか
まず、Webサーバーとしてnginx、データベースとしてMySQLのコミュニティ版のrpmパッケージをインストールします。MySQLを使うのは、Movable TypeではデータベースにMySQLの利用が推奨されているためです。
なお、本稿執筆時点でCentOS 6標準のリポジトリにあるMySQLはv5.1ですが、コミュニティ版のリポジトリからv5.6をインストールすることができます。また、nginx単体ではCGIを動かせないので、perl-FCGIパッケージをインストールし、これをデーモンとして動かします。
一撃シェルスクリプトの設計ルールと今回の実装方針
一撃シェルスクリプトは、私が定義した次のルールに則って作成されています。
OSインストール直後に一撃シェルスクリプトを配置して動かすものとする
一撃シェルスクリプトが毎回同じように動作することを保証するために必要な前提です。
実行回数は1回のみで、人が張り付く必要のない設計とする
スクリプトの初回起動時以外に人が張り付かないようにするために、作業用PCからインストール対象のサーバーへMovable Typeをアップロードするのではなく、サーバー自身がMovable Typeを取得するようにしました。サーバーにopenssh-clientsパッケージをインストール[1]した後、手元のPCからMovable TypeのzipファイルをSCP(Secure Copy)でアップロードする仕様にしてしまうと、スクリプト起動から終了までの途中に少なくとも1回、人が張り付く必要が生じるからです。
また、前回の一撃シェルスクリプトで重視していないことでも触れていますが、何がなんでも1本のスクリプトファイルで完結することは目指しません。(インターネットにつながっていることが前提ですが)設定ファイルが複数または多岐にわたる場合には、GitHubなどから雛形ファイルをダウンロードし、各々のホストで整形加工することもよしとしています。
今回の一撃シェルスクリプトでは、perl-FCGIをデーモンとして動かすためのスクリプトを2本生成するのですが、一撃シェルスクリプトに直接ヒアドキュメントで書いてしまうと、非常に冗長で保守性が下がってしまいます。このため、別ファイルとして用意するか、外部Webサイトからダウンロードするかの選択肢となりますが、せっかくWebに公開されているリソースがあるので、これを活用したいと思います。
[1] CentOS 6.6をminimalでインストールするとopensshクライアントがインストールされていないため、一撃シェルスクリプトの中でインストールします。
対話式の入力は可能な限り回避する
一撃シェルスクリプトの定義では明言していませんが、シェルスクリプト実行時の引数は可能な限り少ないほうがよく、できれば引数なしか1つだけが理想です。もちろん、引数を少なくするためにシェルスクリプト内のハードコードが増えたりしては本末転倒ですが、人は間違う生き物ですから、可能な限り人の手が介在しないことが望ましいのです。このため、今回の一撃シェルスクリプトは引数にMovable TypeのダウンロードURLのみを与えるようにしています(使い方は後述)。
もう1つ、MySQLのrootユーザーにパスワードを付与するのですが、こちらは引数として与えずに、my.cnfの雛形ファイルをアップロードして対応することにします。
今回インストールするMovable Typeについて
Movable Typeは単にブログツールというだけでなく、Webサイト単位でWebページやファイルの管理、更新履歴の保存といったCMS機能を提供するパブリッシングプラットフォームです(Movable Typeの公式サイトより引用)。
今回は個人ブログの開設を目的に構築しているので、個人無償ライセンスでMovable Typeをインストールします。ライセンスについての詳細は「Movable Typeのライセンス 」をお読みください。また、「必要インストール環境と、ブラウザ動作環境]」もご一読をお勧めします。
一撃シェルスクリプトの他に用意するもの
今回のCMS構築には、以下のものも必要です。
メールアドレス
Movable Typeを個人ライセンスでダウンロードするには、パッケージのダウンロードURLをメールで受け取る必要があるため、外部から受信可能なメールアドレスを1つ用意します。
MySQLのパスワードを記述したファイル
MySQLのパスワードを自身で決め、以下のようにmy.cnfの元となる「root.my.cnf」というファイルをアップロードします。
[client] user=root password="P@sSw0Rd"
なお、今回の一撃シェルスクリプトでは、root.my.cnfのアップロードを忘れても、ランダムにパスワードを生成して/root/.my.cnfファイルをアップロードするようにしています。サーバーの構築が終わり、WebブラウザからMovable Typeの「おまかせインストーラ」でデータベースの設定を行う際に、/root/.my.cnfを開いてMySQLのパスワードを確認することも可能です。
次ページから、今回の一撃シェルスクリプトのコードを見ていきます[2]。ただし、見ていくのは次の処理を行うコードとし、前回と共通のコードは解説を省略します。
- OSインストール直後の各種設定①:ダウンロードURLを変数に格納
- OSインストール直後の各種設定②:unzipコマンドのインストール
- ドキュメントルートの作成とMovable Typeのダウンロード
- MySQLのインストールとDBの作成
- epelリポジトリとrpmforgeリポジトリのインストール
- perlモジュールとnginxのインストール
- perl-fastcgiのinitスクリプトの作成
[2] 今回の一撃シェルスクリプト(ファイル名:ICHIGEKI)は、本記事のタイトル下にある[ダウンロード]をクリックすると入手できます。
この記事は参考になりましたか?
- ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場連載記事一覧
-
- WordPressとnginx+MySQL+memcached+wp-cliをインストール...
- Nginx+PerlのCGI環境にMovable Typeをインストールする一撃シェルスク...
- Apacheホスティング環境(Webサーバー+PHP実行環境)をコマンド一発で構築する一撃...
- この記事の著者
-
濱田 康貴(ハマダ ヤスタカ)
サーバーエンジニアとして主にLinuxのWEBサーバーを設計、構築、運用を行っています。運用ツールの相棒としてシェルスクリプトやワンライナーは心強いパートナーと信じて疑わず、ブログでTIPSを公開しています。2009年5月のUSP友の会活動開始より参画し、現副会長。最近では、USP友の会で「一撃サーバー構築シェルスクリプト勉強会」を開催しているほか、日本で唯一のシェルスクリプト総合誌『シェルスクリプトマガジン』(毎月25日発売)で、隔月(偶数月号)連載「教えて先輩 サーバー運用お助けTips」を執筆しています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
