昨今、VPSを借りることも増えてだんだんとサーバ構築することも多くなると感じています。
そして、セッティングする度に、手元にある書籍数冊とインターネット上の大海原をさまよいながら、グーグル先生にも何度もお世話になるのですが、そもそも、今までの作業の手順をちゃんとメモしておけば、記憶するほど使っていない&記憶の曖昧なLinuxコマンドもそれを元にコピペで実行すれば、素早く作業できるじゃん、ということで作業手順書をまとめることにしました。
といって、ゼロからつくるよりも、すでに先人のメモを参考にさせていただいて、自分なりにブレークダウンろしたものを作れば良いと思い、ここに書き留めておきます。正確性は低いかもしれませんが、参考になれば幸いです。
まず同じさくらのVPSを使った手順書として参考にさせていただいたのはさくらの格安VPSを借りたらいつもやっている設定いろいろ – IDEA*IDEA ~ 百式管理人のライフハックブログからです。
ここでは全体的なながれも俯瞰してわかり、そして合理的だなぁという感想を持ちました。
しかし、一方で、実際のコマンドを暗記していないので、その都度ググるのもあれなので、これをベースにさせていただいて、自分なりにやったことを記録しながらサーバ構築してみました。
(viはだいぶ操作できるけど、それでも未だに、あれってどうやるんだっけ?というぐらいまだ覚えていません・・・)
それでは、スタートです。
# コントロールパネルからサーバー起動(初期状態では起動していない)。
# rootでログイン
SAKURA Internet [Virtual Private Server SERVICE]
# rootパスワード変更(passwd)
[root@hostname~]# passwd
Changing password for user root.
New UNIX password: rootのパスワードを入れる
Retype new UNIX password: rootのパスワードを再度入れる
passwd: all authentication tokens updated successfully.
[root@hostname~]#
# 作業用アカウントをuseradd
ここではwackeyという作業用アカウントを追加することとします。
[root@hostname~]# useradd wackey
# 作業用アカウントのパスワード設定(passwd ….)。
[root@hostname~]# passwd wackey
Changing password for user wackey.
New UNIX password: wackeyのパスワードを入れる
Retype new UNIX password: wackeyのパスワードを再度入れる
passwd: all authentication tokens updated successfully.
[root@hostname~]#
# 作業用アカウントをwheelに追加(usermod -G wheel ….)
[root@hostname~]# usermod -G wheel wackey
[root@hostname~]# vi /etc/pam.d/su
#auth required pam_wheel.so use_uid←コメントアウト(#)を外す
# visudoの編集。
[root@hostname~]# visudo
## Allows people in group wheel to run all commands
#%wheel ALL=(ALL) ALL←コメントアウト(#)を外す
↓
%wheel ALL=(ALL) ALL
# 作業用アカウントで再度ログイン。OKならrootで開いていた方を閉じる。
wackey:~ macbookpro$ ssh wackey@xxx.xx.xx.xxx
wackey@xxx.xx.xx.xxx’s password:SAKURA Internet [Virtual Private Server SERVICE]
[wackey@hostname~]$
ログインが確認できた。
【追加】パスを通す
初期設定のユーザーはコマンドのパスが通っていないため、パスを通します。
[wackey@www14353u ~]$ vi .bash_profile
PATH=$PATH:$HOME
/binの下に
PATH=$PATH:
/sbin
PATH=$PATH:
/usr/sbin
PATH=$PATH:
/usr/local/sbin
以上を付け加えます。
[wackey@www14353u ~]$ source ~/.bash_profile
このコマンドで反映させます。
# 鍵認証をしたいので作業用アカウントのホームに.sshを作って鍵SCPしたり、Permission変えたり。
事前にssh-keygenで公開鍵を作成しておきます。
[wackey@hostname~]$ mkdir -p ~/.ssh
[wackey@hostname~]$ chmod 700 ~/.ssh
[wackey@hostname~]$ vi ~/.ssh/authorized_keys
ボクの場合は下記の方法で行いました。
MacのFinderで「.ssh」フォルダへ移動します。
作成した「id_rsa.pub(公開鍵ファイル)」をテキストエディタで開きコピー、
そして、viで新規ファイルとして開いたところに貼り付けて保存します。
もしくは
cat >> ~/.ssh/authorized_keys
でテキストを貼り付けて「ctrl+D」で閉じます。
[wackey@hostname~]$ chmod 600 ~/.ssh/authorized_keys
パーミッションを変更しておきます。
# 「vi /etc/ssh/sshd_config」でいろいろ編集(ポート番号の変更、パスワードログインの禁止、rootログインの禁止)。sshdの再起動。
#Port 22
↓
Port 10023
ポート番号を変更します。以後、デフォルトのポート番号でのログインは出来なくなるので、このポートでsshログインでアタックされることを防ぎます。
10022でサイトに紹介されている方が多いのでひねくれて10023にしてみました。
#PermitRootLogin yes
↓
PermitRootLogin no
コメントアウトを外し、noに書き換えrootでのログインを禁止します。
#PubkeyAuthentication yes
↓
PubkeyAuthentication yes
コメントアウトを外して公開鍵認証でログインできるようにします。
#PasswordAuthentication yes
↓
PasswordAuthentication no
パスワードログインを禁止します。
これによりroot以外のユーザにも公開鍵認証を必要とします。
最後にsshdを再起動します。
[root@hostname~]# /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@hostname~]#
# 鍵認証でログインできるか確認。
再起動したら一旦ログアウトして設定が正しく反映されているかを確認します。
rootでログインできなくなっているか、またデフォルトのポート番号でログインできないか確認します。
# なにはともあれ「yum -y install screen」。.screenrcの編集。
省略
# iptablesの設定。「iptables -L」で確認、再起動。
[wackey@hostname~]$ sudo vi /etc/sysconfig/iptables
*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
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
【削除】-A RH-Firewall-1-INPUT -s 210.224.160.0.0/19 -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
# システムを日本語に(ここらへん)。再度ログイン。
[wackey@hostname~]$ sudo vi /etc/sysconfig/i18n
LANG=”ja_JP.UTF-8” ←日本語用に書き換える
SYSFONT=”latarcyrheb-sun16″
# apache入れる。「yum -y install httpd」。
[wackey@hostname~]$ sudo yum -y install httpd
(中略・・・)
Complete!
[wackey@hostname~]$
# phpの最新版入れたいのでいろいろ設定。このあたりを参考に。
# 「yum -y install php php-devel php-pear php-mbstring php-gd php-mysql」でずんどこインストール。
[wackey@hostname~]$ sudo yum -y install php php-devel php-pear php-mbstring php-gd php-mysql
# mysql入れる。「yum -y install mysql-server」。
[wackey@hostname~]$ sudo yum -y install mysql-server
# mysqlの文字コードをUTF-8に統一して再起動(このあたり)。
[wackey@hostname~]$ sudo vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
↓↓↓追記[mysqld]
default-character-set=utf8
skip-character-set-client-handshake
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql[wackey@hostname~]$ sudo /etc/init.d/mysqld restart
MySQLを再起動して設定終了。
# mysqlのrootのパスワード設定。名前のないユーザーを削除。
あとでやる。
# chkconfig設定。「chkconfig mysqld on」「chkconfig sshd on」「chkconfig iptables on」「chkconfig httpd」ぐらいかな。
[root@hostname/]# chkconfig mysqld on
bash: chkconfig: command not found←suでrootになってもうまくいかない。。。
[root@hostname/]# whereis chkconfig←chkconfigがどこにあるか調べる
chkconfig: /sbin/chkconfig /usr/share/man/man8/chkconfig.8.gz
[root@hostname/]# /sbin/chkconfig mysqld on←フルパスでコマンドを実行
[root@hostname/]# /sbin/chkconfig sshd on
[root@hostname/]# /sbin/chkconfig iptables on
[root@hostname/]# /sbin/chkconfig httpd
# 不要サービスの停止(ここらへんを参考に)。
ざくっと下記コマンドを実行
/sbin/chkconfig acpid off
/sbin/chkconfig auditd off
/sbin/chkconfig autofs off
/sbin/chkconfig avahi-daemon off
/sbin/chkconfig bluetooth off
/sbin/chkconfig cups off
/sbin/chkconfig firstboot off
/sbin/chkconfig gpm off
/sbin/chkconfig haldaemon off
/sbin/chkconfig hidd off
/sbin/chkconfig isdn off
/sbin/chkconfig kudzu off
/sbin/chkconfig lvm2-monitor off
/sbin/chkconfig mcstrans off
/sbin/chkconfig mdmonitor off
/sbin/chkconfig messagebus off
/sbin/chkconfig netfs off
/sbin/chkconfig nfslock off
/sbin/chkconfig pcscd off
/sbin/chkconfig portmap off
/sbin/chkconfig rawdevices off
/sbin/chkconfig restorecond off
/sbin/chkconfig rpcgssd off
/sbin/chkconfig rpcidmapd off
/sbin/chkconfig smartd off
/sbin/chkconfig xfs off
「/sbin/chkconfig isdn off」に関してはエラーが出た。
# サーバー再起動して完了。
reboot
で、この一連の流れでうまくいかないことがありました。
それは以前できたのに今回できなかった公開鍵認証部分、またiptablesまわりがまだよくわかっておりません。なので、その部分を外して現在はカスタマイズをしようとしています。
判明次第、また追記したいと思います。
なお、ファイヤーウォールだとかログインまわりの設定でsshでログインできなくなった!とかハマってしたりするとどうしよいうもなくて困り果てることがありますが、さくらのVPSの場合はリモートコンソールが管理画面に用意されているので、こちらからログインすれば、まったく問題ありません。ここで設定をリカバリーしてsshで入れるように直したりできます。
(思ったようにコピペできない、viでの上下左右がカーソルキーでは無いなど少しだけ癖がありますが、慣れれば普段つかっているSSHクライアントと同じ感じで使えると思います。)
【参考】
さくらの格安VPSを借りたらいつもやっている設定いろいろ – IDEA*IDEA ~ 百式管理人のライフハックブログ
CentOSをサーバーとして活用するための基本的な設定 (さくらインターネット創業日記)
コメント