月別アーカイブ: 2014年1月

サーバのデータ移行

サーバを自宅サーバからさくらVPSに変更します.

基本的なサーバの設定は,「サーバの設定」で説明しています.

ここでは,サーバの移行(データの移行)に焦点に当てて記述します.

基本的には,下記2つです.

  1. ファイルコンテンツの移行
  2. DBの移行

(1)については難しくなく,単純にディレクトリ単位でファイルを移行すればよいので,問題ないと思います.

ただし,忘れ易いのが,htaccessなどの設定ファイルです.これらの不可視ファイルは移行もれがありえるので注意してください.

次に,(2)について説明します.DBはMySQLで,既にインストールされていることを前提にしています.

まず,移行元での作業です.

存在するデータベースを確認します.

#mysql> show databases;
+--------------------------+
| Database                 |
+--------------------------+
| information_schema       |
| test                     |
| hoge_db                  |
+--------------------------+

移行するDBを保存します.

保存するDB名をhoge_db,パスワードをhoge_password

# mysqldump -u root -phoge_password hoge_db > hoge_db.sql

hoge_db.sqlが保存されます.

-pとパスワードの間には空白はありませんので注意してください.

次に移行すべきユーザの確認します.

# mysql -u root mysql
mysql> use mysql;
mysql> SELECT user,host FROM mysql.user;
+------------+-----------+
| user       | host      |
+------------+-----------+
hoge_user    | localhost |

以上で,移行元の作業は完了です.

次に,移行先での作業です.

DBを作成します.

# mysql -u root mysql
mysql> CREATE DATABASE hoge_db CHARACTER SET utf8;

移行元で保存したhoge_db.sqlを使用します.

mysql -phoge_password hoge_db < hoge_db.sql

以上で,移行完了です.

ダイナミックDNSの設定

ダイナミックDNSの設定を行ないます.

DNSの仕組みなどは割とたくさん情報があるので,

ここでは,忘れがちなIPの通知設定をCronを使って行なう方法を記載します.

cronに登録するスクリプトの作成

# vi /usr/local/bin/mydns-update.sh

下記のように編集する

#!/bin/sh
USER="hoge_user"
PASS="your_password"
telnet mail.mydns.jp 110 > /dev/null 2>&1 <<EOF
USER $USER
PASS $PASS
QUIT
EOF

cronの登録は次のコマンド行なう.

# crontab -e

5分毎に通知するように,次のように修正する.

*/5 * * * * /usr/local/bin/mydns-update.sh

cronの登録されているスクリプトの確認は次のコマンドで行なう.

# crontab -l

サーバ設定(各種インストールから設定まで)

まずはhttpdのインストール

# yum -y install httpd

常にサーバが自動で起動するように設定する.

# chkconfig httpd on

いくつか設定を行ないます.

# vi /etc/httpd/conf/httpd.conf

//下記で管理者のアドレスを設定します.
ServerAdmin you@example.com

//レスポンスヘッダにあまり情報を出力しないように修正
ServerTokens Prod

phpのインストールを行ないます.

# yum -y install php php-mbstring php-mysql php-gd

//下記でインストールを確認
# php -version
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

つづいて,phpの設定をいじります.

# vi /etc/php.ini

//言語設定など,次のように修正する.
//コメントアウトされているものは,コメントアウトをはずす
//タグの短縮を可能にする
short_open_tag = On

//ヘッダーにphpのバージョンなどを含めない
expose_php = Off

//最大実行時間の変更
max_execution_time = 600
//文字コード 
default_charset = "UTF-8"

//最大POSTサイズ
post_max_size = 25M
//アップロードサイズ
upload_max_filesize = 25M

//時間設定
date.timezone = Asia/Tokyo

//エンコード文字コードなど
mbstring.internal_encoding = UTF-8
mbstring.detect_order = auto
mbstring.substitute_character = none;

restartして反映させます.

# /etc/rc.d/init.d/httpd restart

phpinfoなどを表示して確認が行なえます.

次に,apacheサーバのセキュリティ対策を行ないます.

まず,公開ディレクトリがデフォルトだとroot権限のディレクトリになっており,あまりよくないため変更します,

公開用ディレクトリを作成します.

# mkdir -p /home/apache

CentOSではデフォルトでapacheユーザがhttpdで設定されています.それにあわせてディレクトリの所有者をapacheにします.

# chown -R apache:apache /home/apache

公開ディレクトリを編集するユーザはapacheグループに所属するようにします.

# usemod -G apache hoge_user

同じグループのユーザが公開ディレクトリを編集できるようにパーミッションを変更します.

#chmod 770 /home/apache -R

次に,MySQLをインストールします.

# yum -y install mysql-server

設定を変更します.文字コードをutf-8に変更します

# vi /etc/my.cnf
character-set-server = utf8

MYSQLを起動します

# /etc/rc.d/init.d/mysqld start

自動起動するように修正する.

# chkconfig mysqld on

確認を下記で行ないます.

# chkconfig --list mysqld
mysqld         0:off 1:off 2:on 3:on 4:on 5:on 6:off

MySQLにrootユーザのパスワードを設定する

# sudo mysqladmin -u root password 'hoge_password'

下記でログインできるか確認できます

# mysql -u root -p

WordPressのスパムコメント整理

WordPressのコメントを承認式にしていてほっておいたら,

対象の承認待ちが溜っていました.

大量のコメントを削除する方法は,下記のようです.

  1. 表示させる件数をふやして(最大999)手動で削除
  2. 一括操作するためのプラグインをいれて行う
  3. terminalからデータベースを直接操作する

今回は,(2)を選択して行ないました.

使用したプラグインは下記になります.

上記サイトは英語です.日本語での説明は,下記サイトなどが参考になります.

SELinux設定

SELinuxが初期状態でOFFになっているので,設定する.

なおSELinuxとは,要はセキュリティ対策として悪意のあるユーザに侵入された場合に被害を最小に抑えるための仕組み.

下記サイトなどが参考になる.

http://itpro.nikkeibp.co.jp/article/COLUMN/20070827/280414/

下記コマンドで編集を行なう.

vi /etc/selinux/config

次のように修正する

SELINUX=enforcing

rebootで変更反映する

Linux バージョンの確認方法

Linuxでは,大半のOSでは,etc以下のディレクトリにVersionやreleaseファイルが存在する.

例えば,

/etc/XXX_release

または

/etc/XXX_version

というファイルをみればよい.

CentOSの場合次のようになる.

cat /etc/redhat-release

また,あまり確認することはすくないと思うが,

カーネルのバージョンは次のコマンドで確認することができる.

uname -a

 

iptableの設定

iptableはファイアーウォールの設定を行なう.

下記サイト等を参考にiptableの設定を行なう.

http://qiita.com/shimohiko/items/ec672655edb84578a82e

上記での設定に加えて,MySQLやFTPのポートも使用するのであけた.

# FTP

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 20 yy-j ACCEPT

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 yy-j ACCEPT

# MySQL

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3306 yy-j ACCEPT

 

編集後は,下記で反映

$ sudo /etc/rc.d/init.d/iptables restart

 

ログイン接続のセキュリティ対策

ポート番号の変更
セキュリティ対策でポート番号を変更する.
sudo vi /etc/ssh/sshd_config

下記を編集
コメントアウトをはずしてポート編集
#Port 22
port 10020

再起動して変更を反映させます.
$ /etc/init.d/sshd restart

次に,公開鍵でログイン可能にする

ローカルで公開鍵を作成する.
ssh-keygen

下記に公開鍵が生成される.
~/.ssh/id_rsa.pub

公開鍵をサーバに送る
scp -P ポート番号 ~/.ssh/id_rsa.pub ユーザー名@IPアドレス:~/.ssh/authorized_keys

バーミッションを変更します.
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

以上で,公開鍵でログイン可能になりました.

次に,公開鍵以外でのログインを禁止します.
$vi /etc/ssh/sshd_config

以下の項目を修正して,リスタート
PasswordAuthentication no

さくらVPSサーバの初期設定

現在の自宅サーバをさくらのVPSサーバに移行をおこないました.
電気料金などを計算するとやっぱりVPSの方が安いようです.

下記から適当にプランを選択して,申し込み手続きをおこないました.
http://vps.sakura.ad.jp/

申し込み完了から,実際に使えるようになるまでわずか数十分でした.
手軽です.

最初のログインはさくらVPSコントロールパネル内のコンソールから行なう必要があるようです.
いきなりターミナルからログインしようとしたら出来なくて少し戸惑いました.

また,さくらVPSコントロールパネル内のコンソール画面に移動すると,
最初,下記メッセージが表示されました.

  • subprocess terminated

これは,サーバを起動していないことが原因でした.
この場合,VPSホームからサーバの起動を選択すれば大丈夫です.

[rotユーザのパスワード変更と新規ユーザの作成]
rootユーザのパスワード変更と,通常ログインするユーザを新規に作成する.
下記サイトを参考に行なった.
http://blog.orangemittoo.net/post/sakuravps_init/

rootでログイン状態で下記コマンドでパスワード変更

  • passwd

新規ユーザの作成

  • useradd hoge
  • passwd hoge

作成したユーザにもsudo権限を付与しておきます.

  • su
  • パスワード入力
  • visudo


  • 「root ALL=(ALL) ALL」の下に,次を追加する.

  • testuser ALL=(ALL) ALL
  • 以上で,作成したユーザでターミナルからログインできるようになります.
    続いて,ログインの制限などのセキュリティ対策を行なっていきます.