RaspberryPiでWEBサーバを作るには?

いつもお世話になっております。
文月しのぶです。

先日「しのぶアクション」のサーバが壊れましたので
手元にあったらRaspberryPiを急遽Webサーバとして
稼働させることにしました。今回はその備忘録です。
……Linuxに興味のない方にとっては
「なんのこっちゃ」な内容となっておりますので悪しからず。

Redhat系しか触ったことのない私が
Debian系Raspbianでウェブサーバを作ったまとめでございます。



<文月名人のRaspberry Piでウェブサーバ>

【1】まずRaspberry Piにログインしてください。
(動画にしてあるので省略しますよ)

[⇒ ※動画がうまく見られない方はコチラをクリック]

【2】下ごしらえとしていろいろインストールしておきましょ。
(A)インストールパッケージを更新しておいたり、

# sudo apt-get update
# sudo apt-get upgrade
(B)ていうか、aptよりyumのほうが好きなのよね……
# sudo apt-get install yum
(C)nslookupやlocateコマンドとか入ってないと不便だわね。
# sudo apt-get install dnsutils
# apt-get install mlocate
# updatedb
(D)ubuntuファイアウォールも入れちゃいましょう。
(※SSHで192.168.5.5から接続したい場合の設定)
# sudo apt-get install ufw
# ufw disable (※停止させて)
# ufw default DENY (※一旦全部を拒否して)
# ufw allow 20 (※FTPデータ転送ポートを開けて)
# ufw allow 21 (※FTPコントロールポートを開けて)
# ufw allow from 192.168.5.5 to any port ssh
# ufw limit ssh (※ブルートフォース対策して)
# ufw allow 80 (※HTTPポートを開けて)
# ufw enable (※動かす)

【3】nanoを使ってネットワークを設定します。
(※Ctrl+OからのENTERで保存、Ctrl+Xで終了)

# sudo nano /etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
# iface default inet dhcp
iface eth0 inet static
address 192.168.5.6 (※WEBサーバはこれにしてみます)
network 192.168.5.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.5.1 (※ご家庭の設定による)
dns-nameservers 192.168.5.1 (※ご家庭の設定による)

# sudo /etc/init.d/networking reload

【4】ubuntu系のapacheをインストールします。
(A)aptでインストールして自動起動するようにしておきます。

# sudo apt-get -y install apache2
# sudo update-rc.d apache2 defaults
(B)しのぶアクションではトップページの形式をPHPにします。
# nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
DirectoryIndex index.php
</IfModule>
(C)サーバネームはとりあえずlocalhostかな。
# nano /etc/apache2/conf.d/name
ServerName localhost
(D)ドキュメントルートの設定を変えておきましょう。
# nano /etc/apache2/sites-enabled/000-default
DocumentRoot "/var/www/html"
(E)変なディレクトリリスト表示を回避。
<Directory "/var/www/html">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
(F)再起動しときましょう。
# service apache2 restart

【5】ホストの設定もします。私はfumitsuki-webにしますかね。

# nano /etc/hostname
fumitsuki-web
# nano /etc/hosts
192.168.5.6 fumitsuki-web

【6】続いてPHPMySQLもインストールします。
いわゆるLAMP環境ってやつ。(Linux+Apache+MySQL+PHP)

# sudo apt-get install php5
# sudo /etc/init.d/apache2 restart
# sudo apt-get install php5-mysql
# sudo apt-get install mysql-server
(※MySQLに初回ログインできないことがある???)
そんなときは、
(1)mysqlもしくはmysqldを一旦ストップします。
# server mysql stop
(2)セーフモードで起動してみます。
# mysqld_safe --skip-grant-tables &
(3)mysqlをrootでログインすることができるかも
# mysql -u root
(4)ログインできたなら新しい権限を書き込んでみましょう
fumitsukiというユーザーで192.168.5.5からアクセスの場合。
> use mysql
> truncate table user;(※一旦全消し)
> flush privileges;
> grant all privileges on *.* to root@localhost identified by 'password' with grant option;
> flush privileges;
> GRANT ALL ON *.* TO fumitsuki@"192.168.5.5" IDENTIFIED BY "password";
> quit(※終了)
(5)mysqlのプロセスを調べてkillする
# ps aux | grep mysql
# kill -9 (プロセスID)

(※Mysqlは起動できたがwebから繋がらない?)
そんなときは、
(1)Mysqlの設定ファイルのbind-addressをコメントアウト

# nano /etc/my.cnf
# bind-address 127.0.0.1
(2)mysqlもしくはmysqldを再起動。
うまくいかない場合はkillして起動
# service mysql restart

【7】じゃぁ、DNS設定をしましょう。
(A)ubuntu用bindをインストールします。

# sudo apt-get -y install bind9
# cd /etc/bind

(B)設定ファイルを編集して権限を変えておきます。

# nano /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
allow-transfer { none; };
};

logging {
channel default-log {
file "/var/log/named/named.log" versions 5 size 1m;
severity info;
print-time yes;
print-category yes;
};
category lame-servers { default-log; };
category default { default-log; };
};

# mkdir -p /var/log/named
# chown -c bind:bind /var/log/named

(C)正引き、逆引きそれぞれの設定を最下部に書き加えます。

# nano /etc/bind/named.conf.local
zone "shinobu-action.com"{
type master;
file "/etc/bind/seibiki.zone";
allow-transfer{none;};
};
zone "5.168.192.in-addr.arpa"{
type master;
file "/etc/bind/gyakubiki.zone";
allow-transfer{none;};
};


(D)正引きの詳細設定。

# nano /etc/bind/seibiki.zone
$TTL 86400
shinobu-action.com. IN SOA fumitsuki.shinobu-action.com. root.shinobu-action.com. (
2015103100 ;Serial
7200 ;Refresh
3600 ;Retry
604800 ;Expire
3600 ;Minimum TTL
)
IN NS shinobu.action.com.
IN A 192.168.5.6

(E)逆引きの詳細設定。

# nano /etc/bind/gyakubiki.zone
$TTL 86400
0.168.192.in-addr.arpa. IN SOA fumitsuki.shinobu-action.com. root.shinobu-action.com. (
2015103100 ;Serial
7200 ;Refresh
3600 ;Retry
604800 ;Expire
3600 ;Minimum TTL
)
IN NS shinobu-action.com.
6 IN PTR shinobu-action.com.

(F)権限を変えましょう

# named-checkzone shinobu-action.com /etc/bind/seibiki.zone
# named-checkzone shinobu-action.com /etc/bind/gyakubiki.zone

(G)エラーチェック

# named-checkconf /etc/bind/named.conf

(H)再起動

# sudo service bind9 restart

(I)正引きチェック

# dig -x 192.168.5.5

(J)逆引きチェック

# dig 5.168.192.in-addr.arpa


【8】ここまできたらサイトにアクセス!
[しのぶアクション]
……どうですか?開けましたか?




さぁ、
これであなたも「しのぶアクション」が開設できちゃうはず。
……PHPMySQLの使い方とか諸々ぜんぶ割愛!

以上にてよろしくお願いいたします。