自宅WEBサーバーを構築した話
こんにちは!
今回は自宅のサーバー用PCに新たにWEBサーバーを設置したことについて書いていきたいと思います。WEBサーバーを立てるにあたって、例によって試行錯誤の連続だったので、その整理も意味もこめてまとめていく感じですね。
WEBサーバーと言っても自宅ネットワーク内だけからしか見られないようにしているので、インターネット上に公開しているものではありません。念の為。また、このサーバーを何に使うのかはおいおい書いていくつもりです。僕は読書会のホームページ用にさくらインターネットのレンタルサーバーを契約しているので、自宅にWEBサーバーを置く意味があるのかと問われると苦しいですがw、他人の迷惑を気にせず色々触って遊べるメリットはあるかなと。
ちなみに、この記事のサムネイルはイメージであり、実際のサーバーはこんな感じのちっさいものですw 詳しい経緯はこの記事とかこの記事あたりを参照いただければと!
Apacheの設定
ということで、サーバー用PCにWEBサーバー用ソフトウェア「Apache」をインストールして設定していきます。ちなみに、この「Apache」というのはWEBサーバー用のアプリとしては非常に一般的なオープンソース・ソフトウェアです。企業のWEBサーバーなどでもよく用いられているようですね。
まずはapacheと、ウェブコンテンツを動かすためのプログラミング言語phpとデータベースソフトMysqlをインストールしてきます。
$ sudo apt-get install apache2
$ sudo apt-get instal php
$ sudo apt install mysql-server
ここからはapacheの設定を変更していきますが、これがなかなか大変でした。特に「apache」は同じLinuxでもRedhat系(CentOS等)とUbuntu系で多少フォルダ名や構成が異なっていたり、バージョンによって設定が違ったりで情報収集の面でも割と苦戦。
Ubuntu系の場合、apacheの設定ファイルは「/etc/apache2/apache2.conf」であるらしいので、このファイルを編集して公開フォルダを設定します。
$ sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.confbk # 念の為バックアップ
$ sudo vim /etc/apache2/apache2.conf
テキストエディタでapache2.confを開いて、Directoryの< >の中に公開するフォルダを記述します。今回はサーバー用PCのデータ用ストレージである「/mnt/storage」の中に「www」というディレクトリを作って、ここを公開します。
<Directory "/mnt/storage/www">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
Deny from all
Allow from 192.168.179.0/24 # ローカルからのみアクセス可
</Directory>
更に、このフォルダをデフォルトページとして設定するために、「000-default.conf」を編集します。
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.confbk # 念の為バックアップ
$ sudo vim /etc/apache2/sites-available/000-default.conf
このファイルに下記を書き込めばOK。
DocumentRoot "/mnt/storage/www"
あとは公開用のフォルダを作成して、テスト用のファイルを入れておきます。
$ sudo mkdir /mnt/storage/www # フォルダ作成
$ sudo touch /mnt/storage/www/test.html # テスト用ファイル作成
$ sudo chmod 775 /mnt/storage/www/test.html # ファイル権限設定
$ sudo vim /mnt/storage/www/test.html # テスト用ファイル書き込み
"HELLO WORLD"
$ sudo service apache2 restart # apacheの再起動(設定有効化)
この状態で、ウェブブラウザ(今回はFirefox)に「{サーバー機のipアドレス}/test.html」を打ち込んで、きちんと反映されていればOK。
SSLとファイアーウォール
今回はローカルで使うだけなので特に問題はないですが、一応SSL通信用の設定も簡単にしておきます。
$ sudo a2enmod ssl
$ sudo a2ensite default-ssl
$ sudo service apache2 restart
ちなみにSSLとはインターネット上のやり取りを暗号化して、通信の盗聴を回避するためのプロトコルです。URLの冒頭に「https://...」となっているサイトにはこのSSLを経由してセキュアーな通信がなされます(正確には、ブラウザにアクセス先としてhttpsで指定すると、sslを使うようにブラウザ側で勝手に処理してくれる)。
名前や鍵交換による暗号化という面で似ているため、以前紹介したSSHと紛らわしいものですが、基本的には全然別物です。SSHはシェル間の通信の暗号化、SSLはインターネット通信の暗号化ですね。
ちなみにこのSSLは「なりすまし防止」のための認証スキームがあるのですが、今回はそこまではせずに運用しました。どうせ自分しか使わないし、アクセス先も自分のサーバーなので、なりすましもなにもあったものではないですからねw 上記のSSLパッケージに入っているデフォルトのSnake oil(「効果の怪しげなもの」の比喩らしいです)という証明書を使います。アクセスしようとするとブラウザからセキュリティ警告が出ますが、まあ無視してアクセスすればOKです。
そして最後にFirewallの設定。下記のコマンドを打ってhttpとhttpsのポートを開放します。
$ firewall-cmd —-add-service=http --zone=public —-permanent
$ firewall-cmd —-add-service=https --zone=public —-permanent
$ firewall-cmd --reload
とりあえず、ここまででローカルサーバーの設定は完了です。こうして作った自作サーバーをどう料理するか?それは今後の課題ですね。
まとめ
今回は、apacheを使ったwebサーバーの構築について書いてみました。冒頭に書いたとおり、レンタルサーバーを利用している状況下で自宅サーバーを入れる意義があるかは微妙ですw まあ、それでも今回の設定を通して、WEBサーバーの実質的な標準であるapacheに触れることができたのは良かったかなと。あまりきちんと理解出来ていなかったSSLの仕組みも多少は理解できましたしね。
次回はこのローカルWEBサーバーを使ってやったことを書いていくつもりです。
> 2020/8/1に続きを書きました!
それでは、また。
この記事が気に入ったらサポートをしてみませんか?