少し放置していたさくらのVPSですがOSを再インストールして一からLAMP環境構築したのでサーバーの初期設定の手順をメモがてらに残しておきます。ローカルPCはMacを使っています。
#Linuxのバージョン確認
とりあえず以下のコマンドでMacのターミナルからサーバーにssh接続
$ ssh root@xx.xx.xx.xx
xx.xx.xx.xxはサーバーのIPアドレスで、サーバー契約完了時にメールで送られてくると思います。パスワードを尋ねられますがこちらもメールに記載してあります。
以下のコマンドでLinuxのバージョンを確認。
# cat /etc/redhat-release
CentOS release 6.5 (Final)
ってことでバージョンはCentOS6.5
#rootのパスワード変更
まずは下記のコマンドで初期設定のrootパスワードを変更。
# passwd
#yum updateと日本語化
#yum update
でサーバーに入ってるアプリケーションをすべて最新版にします。
とくに更新がなければ下記のように表示されます。
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.tsukuba.wide.ad.jp
* epel: ftp.tsukuba.wide.ad.jp
* extras: ftp.tsukuba.wide.ad.jp
* updates: ftp.tsukuba.wide.ad.jp
Setting up Update Process
No Packages marked for Update
次にCentOSの日本語化。
# vim /etc/sysconfig/i18n
で言語の設定ファイルが開かれるので、
LANG="C"
となっているところを
LANG="ja_JP.UTF-8"
に変更。
#作業用ユーザーの作成と設定
作業用のユーザーを作成します。ここではadmin(好きな名前)に設定します。
# useradd admin
# passwd admin
で、adminユーザーの追加とパスワード設定。
#usermod -G wheel admin
でルート権限を得られるグループに追加。
# visudo
でvi(エディタ)が立ち上がるので
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
というところを探して、二行目の#を外して保存。これでwheelグループに属するユーザにsudoコマンドの実行を許可します。
これで作業用ユーザーの設定はおしまい。
一旦ログアウトして、
$ ssh admin@xx,xx,xx,xx
でパスワードが求められるのでユーザー追加に指定したものを入力して、サーバーに接続できればおっけー。
#鍵認証の設定
パスワード認証だとセキュリティ的にアレなので、鍵認証に変更。
とりあえず、公開鍵を入れるディレクトリをサーバーのホームディレクトリに作成しておく。
$ mkdir ~/.ssh
で作成して
$ chmod 700 ~/.ssh
でパーミッションの変更!
次にMac側でssh鍵ペアの作成。
Macのターミナルから
$ ssh-keygen
を実行。パスフレーズを求められるけど、なくてもいいのでリターンで押しておけばおっけー。
Macの ~/.ssh フォルダにid_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成されます。
$ chmod 600 ~/.ssh/id_rsa.pub
で公開鍵のパーミッションを変更。
次に公開鍵をサーバーに転送。
$ scp ~/.ssh/id_rsa.pub admin@xx.xx.xx.xx:~/.ssh/authorized_keys
で公開鍵をauthorized_keysという名前に変えて転送。
サーバーに戻って、.ssh内にauthorized_keysがあることを確認。
これで鍵認証でssh接続できるようになりました。
#ポート番号の変更、rootによるログイン禁止、パスワードでのログイン禁止
ポート番号はデフォルトで22になっているのでセキュリティを高めるために変更。
ポート番号は1024~65535ならなんでもおっけー。
今回は10022番にします。
また、rootによるログイン、パスワードでのログインも禁止にします。
下記コマンドをsudoで実行。
$ sudo vim /etc/ssh/sshd_config
設定ファイルを開いたら
#Port 22
↓
Port 10022
#PermitRootLogin yes
↓
PermitRootLogin no
#PasswordAuthentication yes
↓
PasswordAuthentication no
に変更。
変更したら、下記コマンドでsshの再起動。
$ sudo service sshd restart
#ファイアーウォールの設定
$ sudo vim /etc/sysconfig/iptables
でiptablesファイルを作成する。
デフォルトで10022番だけにオープンするように変更します。
下記をコピペして保存。
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH, HTTP, FTP1, FTP2, MySQL
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 61203 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-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 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
iptablesを再起動
$ sudo /etc/rc.d/init.d/iptables restart
設定の確認コマンドはこちら
$ sudo iptables -L
#WEBサーバーの設定
ここからLAMP環境の構築の設定をやっていきます。
とりあえず、root権限で作業することが多くなってきたので下記のコマンドでrootユーザーに切り替えておきます。パスワードが聞かれますがrootのパスワードを入力してください。
$ su
Webサーバーはいくつかありますが、Apacheをインストール
# yum -y install httpd
次にchkconfigの設定をしときます。
VPSが常に自動で起動するように設定します。
# chkconfig httpd on
設定ファイルをいじってセキュリテイを高めます。
一応設定ファイルのバックアップをとっておきます。
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
設定ファイルを開く
# vim /etc/httpd/conf/httpd.conf
下記を変更
ServerTokens OS
↓
ServerTokens Prod
ServerSignature On
↓
ServerSignature Off
Options Indexes FollowSymLinks
↓
Options -Indexes FollowSymLinks
保存したら、下記コマンドで構文チェック。
service httpd configtest
Syntax OK
と出れば問題なし。
service httpd start
でApacheを起動する。
IPアドレスをブラウザからたたいててテストページが表示されれば成功!
OS起動時にApacheも自動で起動されるように設定。
# chkconfig httpd on
# chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
のようになればおっけー。
次にPHPのインストール。
# yum -y install php php-mbstring php-mysql php-gd
完了したら以下のコマンドでバージョンを確認。
# php -v
設定ファイルをいじる前にバックアップ
cp /etc/php.ini /etc/php.ini.org
設定ファイルを開く
vim /etc/php.ini
以下を変更
;error_logs = php_erros.log
↓
error_logs = /var/log/php_errors.log
;mbstring.language = Japanese
↓
mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = UTF-8
;mbstring.http_input = auto
↓
mbstring.http_input = auto
;mbstring.detect_order = auto
↓
mbstring.detect_order = auto
expose_php = on
↓
expose_php = off
;date.timezone =
↓
date.timezone = Asia/Tokyo
保存したら、設定を反映。
# service httpd restart
次に、Mysqlの設定
# yum -y install mysql-server
インストールできたか確認します。
# rpm -qa mysql-server
設定ファイルのバックアップ
# cp /etc/my.cnf /etc/my.cnf.org
設定ファイルを開く
# vim /etc/my.cnf
以下を記述
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=utf8
skip-character-set-client-handshake
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
設定を反映
# service mysqld start