前回、さくらVPSに常時接続できる最低限のセキュリティを施した後、今日まで放置したままでした。今日はホームページが公開できるようにApacheとPHPのインストール。そして不必要なサービスを停止します。
前回のようにドットインストールをお手本に進めていきますが、独自ドメインは必要ないのでVirtualHost設定をとばします。あと予定していたFTPとMySQLも見送ることにしました。
FTPを入れれば、いつも使ってるfilezillaが使えるので運用がラクになりますが、後述するファイル転送ソフトのWinSCPの出来があまりにも良かったので様子見します。MySQLもすぐ使う予定がないので見送ります。
使わないサービスは極力外すのが理想。こんな感じのカスタマイズこそVPSの魅力ですね。
一番大事なWebサーバー
ドットインストールの該当範囲
兎にも角にもWebサーバーです。ここはWinでもドットインストール通りで特にトラブルはありません。途中/etc/httpd/conf/httpd.confの編集で、vimが初めての人はイライラMAXになるかもです。
下が入力するコマンドです。
- yum install httpd
apacheインストール
- chkconfig httpd on
自動起動ON
- cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
設定バックアップ
- vim /etc/httpd/conf/httpd.conf
変更箇所は下を参照
- service httpd configtest
記述チェック
- service httpd start
サーバー立上げ
ドットインストールでは触れていませんが、httpd.confの設定変更は全てセキュリティの為で、こんな意味があります。
- /etc/httpd/conf/httpd.conf
-
ServerTokens OS → Prod 404などのエラーページのOS情報をなくす ServerSignature On → Off エラーページのapache情報をなくす ドキュメントルート /var/www/html の所のOptions Indexes → -Indexes ファイル一覧を表示しない
あっという間にWebサーバーのインストールは終了です。サーバーのインストールって思ったよりも簡単ですよね。では、実際にブラウザで確認してみます。
- vpsのipアドレスをブラウザで入力
Apacheの画面がサクッと表示されると思います。
Winのファイル転送はCyberduckの代わりにWinSCPを
次は普通のレンサバのようにHTMLファイルをアップしますが、先にchownでユーザーに/var/www/htmlのアクセス権を与えておきます。その後、ドットインストールではファイルのアップにCyberduckというソフトを使っています。
ここでWinではWinSCPというソフトを使います。これはFFFTPやfilezillaのようなFTPクライアントのように、SSHでファイル転送するソフトです。
SSHなので、さくらVPSにFTPサーバーを入れなくても既に使える状態です。このWinSCPの出来があまりにも素晴らしいため、私はFTPサーバーの導入を見送りました。
WinSCPの注意点は前回作ったPuTTYの秘密鍵を設定する点。PuTTYと同じSSHでファイル転送するソフトなので当たり前ですね。
接続に成功すると自分のホームディレクトリが表示されます。/var/www/htmlにテストHTMLをアップしてブラウザで確認してみましょう。
いちいち/var/www/htmlに移動するのが面倒な人は、シンボリックリンク(Winのショートカット)でしのぎましょう。
- シンボリックリンク作成
ln -s /var/www/html www
PHPerはPHPをインスコ
ドットインストールの該当範囲
次はPHPのインストール。こちらも特に問題なく進めます。私はpearも一緒にインストールしました。
- yum install php php-devel php-mysql php-mbstring php-gd php-pear
PHPインストール
- php -v
バージョン確認
- cp /etc/php.ini /etc/php.ini.org
設定バックアップ
- vim /etc/php.ini
変更箇所は下を参照
- service httpd restart
サーバー再スタート
php.iniは普通のレンサバでも触ることがあると思います。内容を簡単に説明すると、
- /etc/php.ini
-
error_log = /var/log/php.log エラーログ出力先 mbstring.language = Japanese デフォルト言語 mbstring.internal_encoding = UTF-8 内部文字エンコーディング mbstring.http_input = auto HTTP入力文字エンコーディングのデフォルト mbstring.detect_order = auto 文字エンコーディング検出順序のデフォルト expose_php = Off 応答ヘッダーにPHPのバージョン等を出力しない date.timezone = Asia/Tokyo タイムゾーン
のような感じ。ちなみに、これらの設定はPHPファイルの中でもこんな感じで変更できます。
- php.iniの設定をPHPファイル内で変更する例
-
mb_language('Ja'); mb_internal_encoding('UTF-8'); date_default_timezone_set('Asia/Tokyo');
最後にちゃんとPHPがインストールできたかどうか、
<?php echo phpinfo(); ?>
という中身でPHPを作成してアップしてみましょう。
ここまでお世話になったドットインストールですが、RubyやPythonは入れないので、ここでお別れです。お疲れ様でした、ありがとう!
次に前回開けておいたFTPとMySQLのポートを閉じます。
FTPとMySQLのポートを閉じる
- /etc/sysconfig/iptablesの下の3行をコメントアウト
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
その後、反映&確認。
service iptables restart
iptables -L
次の作業で最後です。不要なサービスを停止してパフォーマンスを上げておきます。
不要なサービスの停止
さくら社長のブログを参考にします。
どのサービスが不必要なのか丁寧に説明されているので目を通し、chkconfig ~ off のリストをザクっとコピーしてPuTTYにペーストすれば、一撃で全部のコマンドを実行してくれます。こんなに沢山のコマンドを管理者権限で一撃ペーストなんて大丈夫か!と感じることは大切ですが、そういう時も必要です。
すると、いくつかのコマンドは弾かれてしまいます。
#chkconfig acpid off
#chkconfig auditd off
#chkconfig autofs off
サービス autofs に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig avahi-daemon off
サービス avahi-daemon に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig bluetooth off
サービス bluetooth に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig cups off
サービス cups に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig firstboot off
サービス firstboot に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig gpm off
サービス gpm に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig haldaemon off
#chkconfig hidd off
サービス hidd に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig kudzu off
サービス kudzu に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig lvm2-monitor off
#chkconfig mcstrans off
サービス mcstrans に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig mdmonitor off
#chkconfig messagebus off
#chkconfig netfs off
#chkconfig nfslock off
サービス nfslock に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig pcscd off
サービス pcscd に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig portmap off
サービス portmap に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig rawdevices off
サービス rawdevices に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig restorecond off
#chkconfig rpcgssd off
サービス rpcgssd に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig rpcidmapd off
サービス rpcidmapd に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig sendmail off
サービス sendmail に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
#chkconfig smartd off
#chkconfig xfs off
そんなサービス知らないよって事で、既に無効化されているようです。実は社長ブログには、この「不要なサービスの停止」の他に、
- 要らないコンソールを無効に /etc/inittab
- selinuxを無効に /etc/sysconfig/selinux
などがありますが、それらも最新版は最初から無効になっています。
以上でWEB公開におけるとりあえずのサーバー環境が整いました。いろいろ触ったので一応コンパネで再起動、あとは通常のレンサバのように使っていけます。
次回は定期的なメンテとlogwatchでのサーバー監視をしたいと思います。