Linux Mint 17.2 Rafaela - MATEでサーバーを運営したい人向けの情報。
今回は、自宅サーバーをインターネット上に一般公開するまでを、ご説明します。
Windows XPがサポート終了となったために、多くの方々がLinux Mintへお引っ越しなさったかも知れませんね。
更には、Windows Server 2003からのお引っ越しの方もいらっしゃるのでしたら、嬉しいことですね。
数あるOSの中から、Linux Mintを選んで下さいまして、厚く御礼を申し上げます。
そして、今後ともご愛好を宜しくお願いします。
誰もが皆、最初は「LEVEL0からのスタート」です。経験値を上げないとね!
私は、皆さんを応援して行きますよ! 私のホームページも宜しくお願いします。
さて、
「Linux Mintはサーバーも動くと聞いたが、情報が載っておらんっ!」とお嘆きの方向けに、簡素な情報を載せておきます。
では、Linux Mint 17.2 RafaelaでCGI(Perl)を動かそうと思います。
Linux Mint 17.2 Rafaelaは、LTS(LTSとは、Long Term Support(長期間サポート)の意味)で、2019年4月までサポートされます。
これから、私が書く内容は、Linux Mint 17.2 RafaelaのCinnamonかMATEのエディションだと思って下さい。
そして、キーボードやマウスを使って操作する側をWindowsマシンとし、サーバー側をLinux Mint 17.2 Rafaelaとします。
ここで! というよりも、最初からなのですが、残念なお知らせをしなければならない人がいるのですがね(汗)。
プロバイダーの中には、自宅サーバーが許されていないプロバイダーがあります。
そういうプロバイダーと契約している人は、諦めて、VPS(バーチャル・プライベート・サーバ)にしましょう。
最近のVPSは、どこのサービスでもどっこいどっこいの、安くて良いサービスを行なっておりますので、
VPSでやっていくのも、問題なく、楽しくサーバーが構築でき、ホームページが運用できます。
まぁ、自宅サーバーも、VPSも知識がダブる所が沢山ありますので、取り敢えず、どんどん読み進んでくださいね!
Linux MintのUpdate&Upgrade。
Linuxを初めてお使いになった方々は、まず、Linuxをインストールしたら、必ずOSをUpdate&Upgradeする事を覚えておきましょう。
Linux MintもUpdate&Upgradeをしていかないと、中身がどんどん古くなっていきます。
Linux MintのUpdate&Upgradeの方法は、毎日自動で行なったほうがいいですよね?
その方法は、次を参考にして、インストール、設定してください。
cron-aptを使って、自動Update&Upgrade
初心者で解らない方は、こまめに、手動で次のコマンドをよく打っておくといいでしょう。
Linux Mintが最新の状態になります。
$ sudo apt-get update
$ sudo apt-get dist-upgrade
さて、話を進めます。
ルーターのIPアドレスを、"192.168.0.1"とし、
自宅サーバーのIPアドレスを、"192.168.0.100"とし、
一般公開するドメインは、"http://gedatsu.dip.jp/"とします。
途中で、上手く行かなくて、投げ出したくなるときもあるでしょう。しかし、解決方法は、Google先生に聞けば教えてもらえます。
Google先生からの授業料は、何回受けても「無料」です。
この事は、当たり前と思っているでしょうが、実際には、Google先生に聞くのは面倒だからなぁと思って、みんな検索を掛ける回数が少ないと思いますよ。
何回でもGoogle先生に聞いてみて下さい。
そして、これはお約束ですが、自宅サーバーを運営したことによって、如何なる損害を被っても、自己責任でお願いします。
Linux Mint 17.2 Rafaelaはサーバーもバリバリ動きます。
やり方は、ホームページを作りたければ、Web Serverなどの類、基本となる、apache2,mysql,php,perl周りを調べましょう。
Linux Mint 17.2 Rafaelaのサーバーの設定。
設定は、Ubuntuのサーバーの設定と全くと言っていいほど同じだと思います。違うところを余り知りません。
だから、Googleで、「apache mysql php perl ubuntu」などのキーワードでご自分でお調べ下さい。自ずと結果は出てきます。
ieServerで無料ドメインを取得します。
ieServerにアクセスし、無料ドメイン"gedatsu.dip.jp"と、 "thanks.dip.jp"を取得します。あくまでもこれは例に過ぎません。皆さんは、お好きなドメインを取得してみましょう。
この無料ドメインを取得するサイトの他にも、MyDNSなどの無料ドメイン取得ホームページがあります。
jp,com,org,biz,netなどの価値あるドメインを取得したければ、VALUEDOMAINがお勧めです。こちらは有料となっております。
PuTTYでWindowsからLinux Mintを遠隔操作する場合、openssh-serverをインストール。
Linux Mint 17.2 Rafaelaは、最初から、Linux MintをSSHで遠隔操作するためのソフトがインストールされてません。
ですから、次のコマンドを打ちまして、インストールします。
$ sudo apt-get install openssh-server
WindowsでLinux MintをSSHで遠隔操作する際に必要な"PuTTY"をインストール。
PuTTYはこちらから、ダウンロードしましょう。日本語化することも出来ます。
※セキュリティを高めたければ、sshのポート番号を変えたり、SSH秘密鍵を使ってアクセスしたり色々方法があります。
皆さんで研究したり、調べてみましょう。
CGI(Perl)を使いたいとき。
Linux Mintの場合、最初から、"/usr/bin/perl"にPerlがインストールされています。
Perlはプログラムの参照元が、"/usr/bin/perl"の場合と、"/usr/local/bin/perl"の場合があります。
だから、次のようにリンクを貼ります。最初に下記のようにしましょう。これは、お約束のような物ですよ。
$ sudo which perl
$ sudo ln -s /usr/bin/perl /usr/local/bin/perl
リンクを貼ったら、次の例のように、インストール、設定をしていきます。
$ sudo apt-get install apache2
$ sudo a2enmod cgi
$ sudo a2enmod userdir
$ sudo vi /etc/apache2/mods-enabled/userdir.conf
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride All(変える)
Options ExecCGI FollowSymLinks(変える)
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
$ sudo vi /etc/apache2/conf-available/httpd.conf
AddHandler cgi-script .cgi .pl
ServerName localhost
DirectoryIndex index.html index.htm index.cgi
### ここでは、例のために複数個のホームページを一つのapache2で運営できることを学ぶために、
### 「バーチャルホスト」という機能を使います。
### 下記の例では、"gedatsu.dip.jp"というホームページと、
### "thanks.dip.jp"というホームページを公開するために設定しています。
<VirtualHost *:80>
DocumentRoot /home/USERNAME/public_html/html/hogehoge1
ServerName gedatsu.dip.jp
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /home/USERNAME/public_html/html/hogehoge2
ServerName thanks.dip.jp
</VirtualHost>
$ sudo a2enconf httpd
$ sudo vi /etc/apache2/apache2.conf
ServerName localhost(末尾に追加する)
$ sudo /etc/init.d/apache2 restart
Hostsファイルを設定する。
そして、自宅サーバーの場合には、Hosts Fileを変更する。
Hosts Fileの置き場所は、Windows 8.1では、下記の通りです。
C:\Windows\System32\Drivers\etc\hosts
※このWindowsのhostsファイルはセキュリティで保護されているので、右クリック→プロパティで下記のように設定を変更してから、セキュリティの設定を書き換えて下さい。
Linux MintのHosts Fileの置き場所は、
です。
hostsファイルは、下記を例にして設定しましょう。
192.168.0.100 gedatsu.dip.jp thanks.dip.jp
上級者はより便利な、WinSCPをWindowsにインストールする。
WinSCPを参考にして、ダウンロードと設定を行なって下さい。
Linux MintのWebサーバーをインターネット上に公開する方法。
Linux版、DiCEをここからダウンロード
$ sudo apt-get install ia32-libs(これをインストールしないと、dicedは動きません。)
$ sudo tar -vzxf diced01914.tar.gz -C /usr/local/bin/
$ cd /usr/local/bin/DiCE
$ sudo ./diced
これでdicedがインストールされて、起動します。
ここで、PuTTYなどの、現在使っている物の文字コードの設定を、"EUC-JP"にします。"UTF-8"のままだと、文字化けします。
=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad
DiCEのヘルプを表示。
:?
*** 起動オプション ***
diced [-s|-d|-h|-e] [-b] [-l]
-s 起動と同時に開始します
-d 起動と同時にバックグラウンドで開始します
-h コマンドオプションを表示します
-b イベント実行時にビープ音を鳴らします
-l ログを作成します
-e 指定のイベントを実行して終了します
*** コマンド一覧 ***
exit DiCEを終了します
start DiCEを開始します
startd DiCEをバックグラウンドで開始します
setup DiCEの環境設定を行います
list 登録済のイベント一覧を表示します
add イベントを追加します
ed[it] <番号> イベントを編集します
del <番号> イベントを削除します
en[able] <番号> イベントを有効にします
dis[able] <番号> イベントを無効にします
ev[ent] <番号> イベントの情報を表示します
ex[ec] <番号> イベントを今すぐ実行します
logcr ログをクリアします
DiCEの環境設定。
:setup
IPアドレスの検出方法を指定してください
(0) 自動検出
(1) ローカルのネットワークアダプタから検出
(2) 外部のスクリプトから検出
<現在:0>
(N)変更しない (P)戻る
>2
-------------------------------------------------
スクリプトのURLを入力してください
<現在:>
(N)変更しない (P)戻る
>http://info.ddo.jp/remote_addr.php
-------------------------------------------------
プライベートIPアドレスも検出対象ですか? (Y/N)
<現在:いいえ>
(P)戻る
>n
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>y
検出IPアドレス>xxx.xxx.xxx.xxx
-------------------------------------------------
IPアドレスの検出をテストしますか? (Y/N)
(P)戻る
>n
-------------------------------------------------
IPアドレスをチェックする間隔を指定してください(分)
設定可能範囲は5分以上です
<現在:10>
(N)変更しない (P)戻る
>n
=================================================
DNSサーバーの負荷を軽減するために頻繁なDNS更新を防ぐ必要があります
前回の更新から一定時間DNS更新処理を行わないように保護時間を設定して
ください(分) 設定可能範囲は10分から1440分です
<現在:60>
(N)変更しない (P)戻る ← 30分に変更。
>30
=================================================
設定を保存しますか? (Y/N)
(P)戻る
>y
設定を保存しました
=================================================
:add
新しくイベントを追加します
DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>?
DynDSL IPDYN No-IP Earth JSPEED SelfHOsT USA @nifty MyServer cjb todd StaticCling ddo.jp dynDNS.it ieServer cheapnet DNS2Go Netservers ZiVE DynDNSdk dyndns did.expoze.com EveryDNS onamae.com DnsTokyo ddns.ca RegisterFly VALUEDOMAIN GetmyIP changeIP livedoor p2p dnsQ DDNS.nu unicc my-domain Dynup nicolas Now.nu eNom MyIP.US pcc.jp 3domain Microtech ZENNO.COM ODN Dynu DION BIGLOBE JPN.ch theBBS DtDNS dyns yi CyberGate Dyn.ee instat ysdn ODS miniDNS ZoneEdit HAMMERNODE ARTofDNS dhs dnip Dynamx WebReactor DHS MyDNS.JP
=================================================
新しくイベントを追加します
DynamicDNSサービス名を入力してください
"?"で対応しているサービスを一覧表示します
(P)戻る
>ieServer
-------------------------------------------------
<< ieServer Project >>
URL: http://www.ieserver.net/
*** 情報 ***
IPアドレスはサーバー側で自動検出します。
IPアドレスの指定は出来ません。
(入力しても無視されます)
=================================================
ドメイン名を入力してください
"?"でドメイン一覧を表示します
(P)戻る
>dip.jp
=================================================
ホスト名を入力してください
(P)戻る
>gedatsu
=================================================
ログインユーザ名を入力してください
(P)戻る
>
=================================================
ログインパスワードを入力してください
(P)戻る
>******
=================================================
登録するIPアドレスを入力してください
空白にすると現在のIPアドレスを自動検出します
(P)戻る
>
=================================================
このイベントに題名を付けてください
(P)戻る
>gedatsu.dip.jp
=================================================
このイベントを実行するスケジュールを設定します
-------------------------------------------------
実行する頻度を指定してください (番号入力)
(0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回
(4)その他の周期 (5)IPアドレス変化時 (6)起動時
(P)戻る
>5
-------------------------------------------------
IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると
アカウントを削除されてしまうことがあります
IPアドレスの変化が無い時に実行する間隔を指定してください
(0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎
(4)35日毎 (5)56日毎 (6)84日毎
(P)戻る
>0
=================================================
詳細オプションを設定します
-------------------------------------------------
[ オフライン ]
(0)No (1)Yes
番号>0
=================================================
このイベントを有効にしますか? (Y/N)
(イベントの有効/無効は"EN/DIS"コマンドで切替えられます)
>y
=================================================
イベントを保存しますか? (Y/N)
>y
イベント"gedatsu.dip.jp"を保存しました
=================================================
:list
(No.) (イベント名) (スケジュール) (次回予定)
0 * gedatsu.dip.jp IPアドレス変化時 (7日毎) 04/29 20:05
:ex 0
このイベントは 0 分前に実行されています
短時間に何度も実行するとDNSサイトに警告を受けることがあります
実行してもよろしいですか?(Y/N)
>y
+ 4/22 20:05 にgedatsu.dip.jpが実行されました
IPアドレスを更新しました
:exit
ieServerの場合には以上のようにします。他のDynamicDNSサービスの場合の例は、他サイトを参照して見て下さい。詳細は省略します。
さて、先ほど、PuTTYの文字コードを"EUC-JP"に変えたので、今度は元通りに、"UTF-8"にしておきましょう。
その後は、dicedをLinuxの起動時に自動的に読み込んでスタートするために、次のように書き記します。
$ sudo vi /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo /usr/local/bin/DiCE/diced -d -l
exit 0
これで、dicedがPC起動時に自動起動します。
Linux Mintのファイアウォールを設定する。
80番のポートとは、ホームページを公開する際に、開放する一般的なポートです。
このポートを開けなければ、自宅サーバーのホームページは、一般公開出来ません。
22番のポートとは、SSHの一般的なポート番号です。
このポートを開けなければ、SSHでPuTTYなどを使って、Linux Mintを遠隔操作できません。
21番のポートとは、FTPの一般的なポート番号です。
このポートを開けなければ、FTPでFFFTPやWinSCPなどを使って、Linux Mintに接続できません。
60000~60030番のポートとは、FTPのPassiveモードの時に使うポートです。この範囲は自由に変えられます。
下記の方法は、簡単に書きましたが、私自身あまり解説に自信がないので(特にiptables)、各自の宿題にしますヾ(゚Д゚ )ォィォィ。
※ヒントは、"ufw"か、もしくは"iptables"のどちらか一方を使います。
下記もヒントですから、参考までに。セキュリティに関わるところなので、慎重に行いましょう。
$ sudo apt-get install ufw
$ sudo ufw reset
$ sudo ufw default DENY
$ sudo ufw allow 80/tcp
$ sudo ufw allow proto tcp from 192.168.0.0/24 to any port ssh
$ sudo ufw allow proto tcp from 192.168.0.0/24 to any port ftp
$ sudo ufw allow proto tcp from 192.168.0.0/24 to any port 60000:60030
$ sudo ufw enable
$ sudo ufw reload
$ sudo ufw status
Google先生にufwを聞く。
ufwは一度設定してしまえば、Linux Mintを再起動させても、自動的にまた同じ設定のufwになる模様ですから安心ですね。
$ sudo vi set_iptables
#!/bin/sh
#サービスを許可したい範囲を設定(例: 192.168.10.0/24)
TRUSTSITE='192.168.0.0/24'
# 一旦初期化
iptables -F
# デフォルトルール
iptables -P INPUT DROP # 入ってくるのはダメ。DROP(=deny)はそのまま捨てる。rejectと違い返信しないのでよりセキュア
iptables -P OUTPUT ACCEPT # 出て行くのはOK
iptables -P FORWARD DROP # 通すのはダメ
# 自分からのアクセスはOK
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 内部から始まった外部からの応答はOK
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#(以下に、ルールを追加)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s $TRUSTSITE -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s $TRUSTSITE -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -s $TRUSTSITE -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -s $TRUSTSITE -p tcp --dport 60000:60030 -j ACCEPT
$ sudo vi set_ip6tables
#!/bin/sh
# 全てのルールを削除
/sbin/ip6tables -F
# 全てのユーザ定義チェインを削除
/sbin/ip6tables -X
# 基本的には外部からのパケットの通過を拒否
/sbin/ip6tables -P INPUT DROP
# 基本的には外部へのパケットの通過を拒否
/sbin/ip6tables -P OUTPUT DROP
# 基本的には他のインターフェイスへ再送信を拒否
/sbin/ip6tables -P FORWARD DROP
# lo( ループバック)からのINPUTを拒否
/sbin/ip6tables -A INPUT -i lo -j DROP
$ sudo chmod +x set_iptables
$ sudo chmod +x set_ip6tables
参照
Google先生に"iptables" "80"を聞く。
※設定ファイルが出来たら、"/etc/network/if-up.d/"に置くといいでしょう。起動時に、自動的に読み込まれます。
ルーターのポート80番を開放する。
Aterm BL190HWの場合の、説明をします。ブラウザで、次のようにURLの部分で打ちまして、ルーターにアクセスします。
http://192.168.0.1/
設定した、ID,PASSWORDを入力し、管理画面に入ります。
下記を参考に、設定をして下さい。
※ここでは、ポート番号22番(SSH)を絶対に開けてはなりません。大変危険ですので、開けないでくださいね!
本当に必要な物だけ、開けるのがコツです。
CMANで確認すること。
数分後、CMANにアクセスし、dicedの設定が反映されたか、確かめます。反映されるまで、数分から、数時間かかります。
また、80番ポートが開放されているか、このサイトで確認することも出来ます。慣れない内は、毎回確認すると良いでしょう。
長くなりましたが、疲れましたか?
慣れてしまえば、大丈夫です。何よりも、Google先生が強い味方だということも、皆さんは今回知ったかもしれませんね。
お疲れ様でした。
頼れるお兄様の、Ubuntuも宜しくね♪
Ubuntuは、とっても頼れる兄様だと思います。
重要事項は、Ubuntuの中で決められて、その派生で、Linux Mintやelementary OSが在ります。
頼れるお兄様、Ubuntuとも仲良くやっていきたいですね。
要するに、「お蔭様」を知らないと、後で痛い目に遭いますよね? 私も反省しております。
今後とも、Ubuntuユーザーさんも、どうぞ宜しくお願いします。
もしよろしかったら、私の"RSSのまとめ"の読者になりませんか?
