さくらVPSでスタートダッシュ決めた後はこーすりゃいいの?

さくらインターネット ロゴ

前回、さくらVPSに常時接続できる最低限のセキュリティを施した後、今日まで放置したままでした。今日はホームページが公開できるようにApacheとPHPのインストール。そして不必要なサービスを停止します。

前回のようにドットインストールをお手本に進めていきますが、独自ドメインは必要ないのでVirtualHost設定をとばします。あと予定していたFTPとMySQLも見送ることにしました。

FTPを入れれば、いつも使ってるfilezillaが使えるので運用がラクになりますが、後述するファイル転送ソフトのWinSCPの出来があまりにも良かったので様子見します。MySQLもすぐ使う予定がないので見送ります。

使わないサービスは極力外すのが理想。こんな感じのカスタマイズこそVPSの魅力ですね。

 

一番大事なWebサーバー

ドットインストールの該当範囲

  1. Webサーバーの設定をしよう
  2. Webページを設定してみよう

兎にも角にもWebサーバーです。ここはWinでもドットインストール通りで特にトラブルはありません。途中/etc/httpd/conf/httpd.confの編集で、vimが初めての人はイライラMAXになるかもです。

下が入力するコマンドです。

  1. yum install httpd
    apacheインストール
  2. chkconfig httpd on
    自動起動ON
  3. cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
    設定バックアップ
  4. vim /etc/httpd/conf/httpd.conf
    変更箇所は下を参照
  5. service httpd configtest
    記述チェック
  6. 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 ファイル一覧を表示しない

Apache2 Test Pageあっという間にWebサーバーのインストールは終了です。サーバーのインストールって思ったよりも簡単ですよね。では、実際にブラウザで確認してみます。

  1. vpsのipアドレスをブラウザで入力

Apacheの画面がサクッと表示されると思います。

 

Winのファイル転送はCyberduckの代わりにWinSCPを

次は普通のレンサバのようにHTMLファイルをアップしますが、先にchownでユーザーに/var/www/htmlのアクセス権を与えておきます。その後、ドットインストールではファイルのアップにCyberduckというソフトを使っています。

WinSCPここで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をインスコ

ドットインストールの該当範囲

  1. PHPの設定をしよう

次はPHPのインストール。こちらも特に問題なく進めます。私はpearも一緒にインストールしました。

  1. yum install php php-devel php-mysql php-mbstring php-gd php-pear
    PHPインストール
  2. php -v
    バージョン確認
  3. cp /etc/php.ini /etc/php.ini.org
    設定バックアップ
  4. vim /etc/php.ini
    変更箇所は下を参照
  5. 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でのサーバー監視をしたいと思います。