サイト構築

サイト構築の手順を以下にメモ。

参考文献 Server World Debian 7

OS

今までは、Ubuntuを使っていたが、今回からは、なんとなくDebian。

https://www.debian.org/distrib/netinst からネットワークインストール用のメディアをダウンロード。母艦のMacでCDを作成して、サーバを起動。最初、64Bit版で起動しようとしたら、このサーバ、32ビットしか起動しないやんの。

ロケールは日本語でセットアップ。rootのパスワードを空で設定すると、rootアカウントがdisableとなり、最初のユーザーがsudoを使えるようになるので、そのように。

今までのパーティションは、bootパーティションが分かれてて、アップデートを繰り返していくうちにbootパーティションがあふれるということがあったので、今回からは、ひとつのパーティションで。

LVMを使うと、bootパーティションが分かれてしまうので、LVMじゃないやつで。

ネットワークは、ドライバがNon-Gnuのドライバを必要とするので、ぐぐってダウンロード。

パッケージは全部チェックを外して最小構成から。あとで、ちまちまインストールする。

起動したらすぐに、

# apt-get update
# apt-get upgrade

なんもアップデートされないのを確認。

lessとemacs

# apt-get less
# apt-get emacs

最小構成でセットアップすると、lessってインストールされないのね。僕は、emacsないと生きていけない派なので、なにはともあれインストール。

エディタが使えるようになったところで、.bash_aliasを追加。

Network

/etc/network/interfaces にIPアドレスの設定

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp

# for external interface

auto eth0 # 外向きインターフェースの定義
iface eth0 inet static # 外向きインターフェースは固定IP

address XXX.XXX.XXX.217 # 外向きIPアドレス
network XXX.XXX.XXX.216 # 外向きネットワークアドレス
netmask 255.255.255.248 # 外向きネットマスク
broadcast XXX.XXX.XXX.223 # 外向きブロードキャスト
gateway XXX.XXX.XXX.222 # 外向きデフォルトゲートウェイ

# for internal interface

auto eth0:0 # 内向きインターフェースの定義
iface eth0:0 inet static # 内向きインターフェースは固定IP

address 192.168.XXX.201 # 内向きIPアドレス
network 192.168.XXX.0 # 内向きネットワークアドレス
netmask 255.255.255.0 # 内向きネットマスク
broadcast 192.168.XXX.255 # 内向きブロードキャスト
gateway 192.168.XXX.254 # 内向きデフォルトゲートウェイ

eth0は外向き、eth0:0は内向き

/etc/sysctl.conf の最後に

net.ipv6.conf.all.disable_ipv6=1

を足して、IPv6を無効にする。

リブートするなり、ifdown eth0, ifup eth0でネットワークを再起動

IPアドレスをXXXで伏せ字にする意味あんのかな。

DNS

# apt-get install bind9

で、インストール。

外向きのDNSは外に出しちゃっているので、内向きだけの設定。serverとかprinterとかbackupサーバとかね。ルーターでもできそうなもんだけど、わざわざDNSで。

sshd

# apt-get install ssh

で、sshをインストール。

/etc/ssh/sshd_configで

PermitRootLogin no

にして、

/etc/init.d/ssh restart

これで、sshdが使えるようになった。ここから先は、サーバの前から離れて、机の上から、sshでログイン。離れる前に、DHCPで取得されているip addressをifconfigで調べておく。デフォルトロケールを日本語にしているが日本語ターミナルを入れていないので、ifconfigの文字がボケる。sshでログインすれば、日本語がちゃんと表示されて幸せ。

web server

毎度のapache2

# apt-get install apache2

でインストール

/etc/apache2/conf.d/security から

ServerTokens Prod

で、HTTPヘッダに添付する情報を最小に。

ServerSignature Off

でサーババージョンも内緒。

今まで、/etc/apache2/sites-available/defaultで全部設定してたのだが、今後ドメインを増やすことも考慮に入れて、バーチャルホストの設定をする。

参考文献 妄想コバンザメ Debian(Wheezy)でのApacheバーチャルホスト設定 サブドメインの作り方

# a2dissite 000-default

で、デフォルトを停止

# a2ensite ファイル名

でバーチャルホストをenableする。設定ファイルは、ServerNameでドメインをちゃんと設定すればそのドメインになる。ErrorLogとCustomLogを設定しておくとドメインごとにログが取れる。ディレクトリは勝手には作成されないので、作成して、chmodかchownしておく。

WordPress では、rewriteモジュールを使うので、

# a2enmod rewrite

でrewriteモジュールを有効化

# /etc/init.d/apache2 restart

で設定を反映

PHP

WordPressをインストールするので

# apt-get install php5

でphpのインストール。

ついでに、

# apt-get install libapache2-mod-php5 php5-musql php5-gd php5-curl

でwordpressで使うライブラリもインストール。

php5-curlはWordpressのGoogleAnalyticatorプラグインで必要。

mysql

WordPressをインストールするので

# apt-get install mysql-server

でmysqlのサーバーのインストール。

インストール中にmysqlサーバーのrootのパスワードを聞かれるのでちゃんと覚えておく

# mysql -u root -p

でmysqlのコンソールの起動。mysqlサーバーのrootのパスワードで接続

mysql> create database データベース名;
mysql> grant all on データベース名.* to ‘ユーザー名’@’localhost’ identified by ‘パスワード’;

でデータベースを作成し、ユーザーとパスワードをそのデータベースに割り当てる。これらの情報はWordpressのセットアップでwp-config.phpに書き込むやつ

WordPress

# wget http://ja.wordpress.org/wordpress-3.9-ja.tar.gz

でファイルを取得

# tar zxvf wordpress-3.9-ja.tar.gz

で、ファイルを展開。

# chown -R www-data:www-data *

でファイルの所有者をwww-data に変更。

あとは、webブラウザでアクセスしてセットアップを進める。

Git

今回の反省として、ファイルが更新されていたことに気が付かなかったこと。いや気がついたんだけど。。。

ということで、webのディレクトリに対してGitを導入してすぐに差分に気がつくようにしてみた

# apt-get install git

あとは、webのディレクトリをaddしてcommitしておく。

cifs

# apt-get install cifs-utils

バックアップ用にcifsのクライアントをインストール

# mkdir /mnt/backup

マウントポイントを作成

/etc/fstabに

//backup/Public/backup /mnt/backup cifs guest,iocharset=utf8 0 0

を記載

# mount -a

で、ちゃんとマウントされることを確認

/etc/cron.weekly/backupを作成して、バックアップのスクリプトを書く

WordPressの記事を戻す

DBのバックアップも取っているので、そいつを書き戻せば一発なんだけど、この際だから、ひとつひとつ確認しながらやろうってことで、インポート経由で戻してみた。

まず、メディアを戻す。Wordpressに投稿した画像関係は、wp-content/uploadsの中に展開されるのでそいつを書き戻す。インポートでメディアもxmlから一気に戻す方法もあって、それだと、WordpressのDBとも連携が取れて都合がいいんだけど、一方で、いらんサムネイルを大量に作成されてしまうので、それが嫌。ということで、ディレクトリに一気にコピー。

今までは、過去のMovableTypeのときの画像や、昔のWordpressにWindows Live Writerで投稿した画像などは、urlのリンクをいじるのが面倒だったので、別ディレクトリに置いていたけど、この際だから、全部、uploadsの中に入れるとする。といってもwp-content/uploads/MovableType.oldとかwp-content/uploads/WindowsLiveWriter.oldとかになってるんだけどね。

# chmod -R www-data:www-data *
# find . -type f -print | xargs chmod a-x

書き戻したファイルの所有者をwww-dataにする。また、FATから書き戻したjpgに実行権がついちゃうので、そいつをはずす。

今まで、このファイルの実行権を外すのに、chmod -r a-x * とかやって、ディレクトリの実行権まで外れちゃって頭を抱えていたのだが、findとxargsをつかったらうまくいくということを、tec-q noteファイル又はディレクトリのみへのchmodコマンドという記事で教えてもらった。

WordPressに作成された、サムネイルは、ファイル名450×300.jpgみたいな感じになっているので、

# find . -regex .*[0-9][0-9][0-9]x[0-9][0-9][0-9] -print

なんてして、引っ掛けて確認した後、

# find . -regex .*[0-9][0-9][0-9]x[0-9][0-9][0-9] -print | xargs rm

って削除。xargs便利だぞ

次に、書き戻す記事のxmlの編集。画像のリンク先が変わってるからね。

適当なファイルに、

s/\http:\/\/www\.cagylogic\.com\/images\/old\.1\/\(*\)/http:\/\/www.cagylogic.com\/wordpress\/wp-content\/uploads\/MovableType\.old\/\1/g

みたいに書いておいて、

# sed -f ファイル名 インポートするxmlのファイル名.xml | less

みたいにして、ちゃんと置き換わってるのを確認

# sed -f ファイル名 インポートするxmlのファイル名.xml > 適当なファイル.xml

みたいにして、ファイルの更新、diffを取ってちゃんと出来てるか確認。

もちろんこの作業は一発ではうまくいかなくて、いろんな正規表現を何度もなんども繰り返して最終形にしていく。一発で全部変換する正規表現なんて考えてられない。。。

できあがったらインポート。もちろん、メディアファイルはインポートしないようにチェックを外しておく

以上で、大体のサーバーの復旧は終了。あとはWordpressの見てくれだけだな。実はこのWordpressのテーマがセキュリティホールになってたりして。。。

実は以上のことを、VMWare上で一度予行演習やってから、実機で実行してたんで、余計に時間がかかってたりして。。。

コメントを残す