Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
172
Help us understand the problem. What is going on with this article?
@junki0605

さくらVPSの初期設定とCentOSによるWEBサーバー環境構築まとめ

More than 5 years have passed since last update.

少し放置していたさくらの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
172
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
172
Help us understand the problem. What is going on with this article?