VPSの初期設定とLAMP環境を構築する方法。

VPS(あえて”VPS”である必要はないけれど、安いので…。)の初期設定とLAMP環境を構築する方法。
さくらのVPSのようにほぼ最小構成で提供してくれたり、最小構成を選択出来るVPSサービスを想定しています。
また、サーバOSはREDHAT系(CentOS等)、クライアントOSはWindowsを対象にしています。

目次

1.サーバへの接続
2.更新可能なパッケージのアップデート
3.自動更新の設定
4.一般ユーザの作成
5.公開・秘密鍵ペアの作成
6.サーバに公開鍵を設定する
7.サーバのSSH設定の変更
8.Puttyの設定
9.iptablesの設定
10.Apache・MySQL・PHPのインストール
11.Apache・MySQLの最低限の設定
12.WinSCPの設定
13.WebMinのインストール

1.サーバへの接続

putty.exeをダウンロードして、起動してVPSにSSH接続する。
(SSHクライアントは何でも良いけれど、この記事ではPuttyを利用します。)

VPSのIPアドレスを入力したらOpenをクリックして接続する。
接続するとユーザIDとパスワードを聞かれるので、とりあえずrootでログインする。

2.更新可能なパッケージのアップデート

アップデートする。

yum -y update
3.自動更新の設定

yum-updatesdの停止。

service yum-updatesd stop

起動してない場合は停止出来ない旨のメッセージが出るが気にしない。

yum-updatesdの削除。

yum -y remove yum-updatesd

存在しない場合は存在しない旨のメッセージが出るが気にしない。

yum-cronのインストール。

yum -y install yum-cron

yum-cronの起動。

service yum-cron start

yum-cronの自動起動設定。

chkconfig yum-cron on
4.一般ユーザの作成

rootでは無い、一般ユーザを作成する。

useradd -m 任意のユーザ名
5.公開・秘密鍵ペアの作成

puttygen.exeをダウンロードして起動する。

Generateをクリック。

バーが出るので、いっぱいになるまでマウスを動かす。(マウスの動きで乱数を生成)

KeyCommentには任意の文字列を設定出来るが、そのままでもOK。(ログイン時とかに表示された気がする。)
KeyPassphraseを空白のままにしておくと、鍵のみで認証出来るのでログインの際のパスフレーズ入力の手間が省ける。
ただ、パスフレーズを設定しておくと、秘密鍵を盗まれた場合の時間稼ぎになるので、必要だと感じる人は設定すると良いと思う。

でも。秘密鍵を盗まれるという前提がそもそも「あってはならない」し、仮に秘密鍵を盗まれれば鍵のパスを解析する事も出来てしまうので、どうせ設定するのなら、ある程度長いパスにした方が良いと思う。

SavePublicKey と SavePrivateKey をそれぞれクリックして、秘密鍵を適当な名前で適当なディレクトリに保存する。
(秘密鍵さえあれば、puttygenで秘密鍵を読み込む事で公開鍵を生成出来るので、公開鍵の保存は任意。)

6.サーバに公開鍵を設定する

rootユーザで以下のコマンドを実行する。

ホームディレクトリに移動して、.sshディレクトリの作成。

cd
mkdir .ssh

.sshディレクトリのパーミッション変更。

chmod 700 .ssh

そして…

vi .ssh/authorized_keys

として、puttygenで生成しておいた公開鍵をコピーして貼り付けて保存する。

公開鍵のパーミッションを変更する。

chmod 600 .ssh/authorized_keys

「4.一般ユーザの作成」で作成した一般ユーザでも同様のコマンドを実行し、公開鍵を設定する。

7.サーバのSSH設定の変更

/etc/ssh/sshd_config を開いて、SSHの設定を行う。

vi /etc/ssh/sshd_config

以下、sshd_configの変更点。

SSHポート番号を10022に変更。(便宜上10022としているだけなので別のポートが良ければ任意で変更する。)
デフォルトではコメントアウトされている可能性があるので、文頭に#が付加されている場合は#を削除した後書き換える。

Port 10022

パスワード認証を拒否する。

PasswordAuthentication no

rootでのログインを許可。

PermitRootLogin yes

保存して編集を終了。

 

SSHの再起動。

service sshd restart

ここまでの設定の確認のために、一旦Puttyを終了させる。

8.Puttyの設定

Putty を再度起動して、IPアドレス・SSHの新しいポート番号・任意の設定名を入力する。

左側のタブでConnection→SSH→Auth と開き、秘密鍵の場所を指定する。

sessionタブに戻り、Saveをクリック。

接続先一覧に、上記で設定した「設定名」が表示されているので、ダブルクリックする事で、サーバにSSH接続出来る。

9.iptablesの設定

rootでログインし、ホームディレクトリに移動した後、iptables.shを作成する。

cd
vi iptables.sh

iptables.shに以下のシェルスクリプトを貼り付けて保存。

#!/bin/sh
iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
iptables -A INPUT -p tcp --dport 10022 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
一旦全てをDROPして、自分自身、確立した接続、特定のポートのみをACCEPTという設定なので、SSHのポート番号が10022では無い場合、

iptables -A INPUT -p tcp --dport 10022 -j ACCEPT

を自身で設定したSSHポートに変更する必要がある。
また許可するポートを増やす場合は

iptables -A INPUT -p tcp --dport 任意のポート番号 -j ACCEPT

という形で追記する。

シェルスクリプトを実行。

sh iptables.sh

iptablesの設定確認。

iptables -L

問題無ければ、設定を保存する。

iptables-save > /etc/sysconfig/iptables

iptablesを再起動する。

service iptables restart
10.Apache・MySQL・PHPのインストール、設定

標準リポジトリではバージョンが古いので、remiリポジトリの設定を行う。

cd /etc/yum.repos.d
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/remi-enterprise.repo

Apache・PHP・MySQLをインストールする。

yum --enablerepo=remi install httpd httpd-devel
yum --enablerepo=remi install mysql-server
yum --enablerepo=remi install php php-devel php-mbstring php-mysql php-pdo php-mcrypt php-pear php-xml  php-gd pcre-devel

Apacheを起動する。

service httpd start

MySQLを起動する。

service mysqld start

自動起動設定。

chkconfig mysqld on
chkconfig httpd on
11.Apache・MySQLの設定

何処から何処まで書けば良いのか非常に悩むので現在のところ、バーチャルホストの設定と、MySQLのrootパスワードの設定のみ解説しています。
思い出した時に追記していきますー。

Apacheの設定
バーチャルホストの設定

/etc/httpd/conf/httpd.conf に以下を追記する。

NameVirtualHost *:80

/etc/httpd/conf/ 以下に virtualhost.conf(hogehoge.conf という形であれば、ファイル名は何でも良いが、便宜上virtualhost.confとする) というファイルを作成する。

virtualhost.conf に追加したいホスト毎に以下の設定を追記する。

<virtualHost *:80>
ServerName example.com
DocumentRoot ドキュメントルート(例:/home/hogehoge/public_html/example_com)
ErrorLog エラーログのパス( 例:logs/example_com/error_log )
TransferLog アクセスログのパス( 例:logs/example_com/access_log )
</virtualHost>
MySQLの設定

インストール時点ではMySQLのrootパスワードが未設定なので、設定する。
MySQLに接続。

mysql -u root

MySQLのrootパスワードを更新する。

UPDATE mysql.user SET Password = PASSWORD('設定するパスワード')  WHERE User = 'root';

グラントテーブルを再読み込み。

FLUSH PRIVILEGES;

終了。

quit

MySQLの再起動。

service mysqld restart
12.WinSCPの設定

FTPサーバはインストールしていないので、ファイル転送はSCPとSFTPが利用可能なWinSCPを利用する。
WinSCPをダウンロードしてインストールして起動する。

「新規」をクリックして、ホスト設定画面を開く。

ホスト名にIPアドレス、ポート番号にSSHのポート番号、秘密鍵に秘密鍵の場所を選択し、「保存」した後、任意のユーザでログインする。

rootでのログインを許可しているので、rootでログインした場合、すべてのディレクトリにアクセス可能。
viに慣れてない人はWinSCPのファイル編集機能を使って設定ファイルなどを設定しても良いかもしれない。(賛否両論あるだろうけど。)

※実際に公開するサイトを設置する場合は一般ユーザのホームディレクトリ以下に設置して一般ユーザでファイル操作してください。

13.Webminのインストール

↓コントロールパネル、Webminをインストールする方法
CentOSにyumでWebminを入れる方法。 &laquo; Linuxサーバ設定メモ

Webminについての追記 7/29

「やっぱ公開サーバのSSHポートは変えないとね~」と思ってたら最後にWebminを入れやがったでござる/Webminはセキュリティ問題が発生したら簡単に死ねるので、アレの操作方法で悩むくらいならコンソールで悩んだ方が良い

というコメントをはてブにて頂いていたので、一応追記というか補足。
自分もコマンドラインでの操作で構わないとは思いますが、Plesk前提でPlesk付のVPSを借りる方も居ますし、一応書いています。
コマンドライン慣れしている方はこんな怪しげな記事を参考にはしないと考いますし、仮に参考にして頂いたとしても、Webminをインストールするかしないかは各自で判断出来ると思います。

さて、セキュリティやらマニュアルの話やらその他の話。
Webminを利用する場合は、デフォルトで10000ポートを利用しますが、インストール方法の解説ページ(バフの別ブログ)にも書いている通り、ポートを空けずにSSHポートフォワーディングした方が良いと思います。
方法は、
VPSにGNOMEを入れてリモート操作可能なLinuxデスクトップ環境を構築する方法。
の下部で触れているので、そちらを参照して頂ければ。

あと、webminついては、saasesが詳細なWebmin 日本語マニュアルを無償配布しているので、参考になるかもしれません。

ただ、自身では解決出来そうに無い問題が発生した場合などに、誰かに質問、またはQAサイト等で質問する際には、Webminだとか、Pleskだとか、その手の特定のコントロールパネルを前提に話をするよりも、コマンドラインでの操作を前提にした方が反応が期待できて、解決も早いかもしれません。
メッセージの内容とかをググる場合も、Webminが吐くメッセージよりも、コマンドラインでのメッセージでググった方が圧倒的に情報が多いと思います。
が、何にしても、慣れない内はそれなりに便利かもしれないので、それらを踏まえた上で利用を検討してみて下さい。
(とか言いながら、自分自身、あまり使った事が無いので「何が便利か」というのを挙げる事が出来なかったりしますが。)

最後に

脳内実行で書いているので間違ってたらごめんなさい。
あと、日本語おかしかったらごめんなさい。

2011年07月28日  タグ:, ,

Leave a Reply