カテゴリー: ドメイン

WEBサーバー(NGINX)、メールサーバー(Courier-IMAP/EXIM4)、FTPサーバー( Pure FTPD)、DBサーバー(MySQL)をインストールする-その2

それでは、NGINXから見ていきます。

この時点で、NGINXは、ubuntu16.04サーバーにすでにインストールされているハズですので、確認してみましょう。(コマンドを打ち込んだら、Enterキーで確定してくださいね;もう逐一は書きません;)

nginx -v

nginx version: nginx/1.10.0 (Ubuntu)

確かに入っていました!
ただし、デフォルトのこのパッケージは、少し古いので、NGINXの公式ディポジトリから、最新版に更新しておきましょう。※rootユーザー作業している場合は、下記、”sudo”は不要です。

最初から入っているNGINXを残したままだと、エラーが出てその対応が面倒でしたので、一旦、上記のNGINXを全てアンインストールし、クリーンにしてから、新しいパッケージをインストールし直すことにします。

sudo apt-get purge nginx nginx-common

sudo apt-get autoremove

再び

nginx -v

-bash: /usr/sbin/nginx: No such file or directory

はい、綺麗に無くなりました。では、新しいパッケージをインストールしていきます。

  • NGINXサイトが配布するPGPキーを追加します。
wget -qO - https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
  • NGINXの公式リポジトリから、ubuntu16.04用の<安定番>をこちらのサーバーのソースリスト(新規作成)に追加します。
sudo vi /etc/apt/sources.list.d/nginx.list
  • 空白のファイルが開きますので、キードーボの[i]キーを押します。(挿入モードでファイルを編集できます)
    下記の2行をコピー&ペーストするかあるいは打ち込みます。
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx
  • [esc]キーを押す。=>編集モードを抜けます。
    [:wq]と3つのキーを順番に押す。=>ファイルを保存して閉じます。
  • リストを更新し、NGINXをインストールします。
sudo apt-get update
sudo apt-get install nginx

再度、NGINXを確認してみましょう。

nginx -v

nginx version: nginx/1.10.3

新しくなりました!

念のため、NGNIXをリスタートして、ブラウザで表示を確認しておきます。

sudo /etc/init.d/nginx restart

http://000.000.000.000 ←VPSのIPアドレスへブラウザでアクセス。

あるいは

http://example.com ←先にDNS設定したドメインへブラウザでアクセス。

ここまでで、NGINXの基本パッケージの更新は終わりました。

現在ubuntu16.04にデフォルトで入っているNGINXのバージョンは、10.0.0のため、安定板の最新バージョンとは、それほど差があるわけではなさそうです。新しいパッケージじゃなくてもいいよ!という場合は、NGINXのインストールは飛ばしても良いかもしれませんね。

ちなみに、NGNIXは、安定板(stable)と最新版(mainline)の2系統あり、最新版の方を入れたいのであれば、nginx.listへは下記のコードを書き込みます。

deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx

“xenial”とは、ubuntu OS ver.16.04の開発コード名です。
こんな感じ↓

OSバージョン コード名
10.04 lucid
12.04 precise
14.04 trusty
14.10 Utopic
15.04 vivid
15.10 wily
16.04 xenial
16.10 Yakkety
17.04 Zesty

参考1:http://qiita.com/hiroq/items/420424bc500d89fd1cc8(Ubuntuに最新のnginxをインストールする)
参考2:http://d.hatena.ne.jp/Kazuhira/20161103/1478182601(Ubuntu Linuxにnginxをインストールする)

参考3:http://qiita.com/white_aspara25/items/723ae4ebf0bfefe2115c([Ubuntu] apt-get まとめ)

参考4:https://nginx.org/en/download.html(NGINX公式リソース:ダウンロード)

参考5:https://www.nginx.com/resources/wiki/start/topics/tutorials/install/(NGINX公式リソース:インストール)

それでは、その他のサーバーパッケージも見ていきます。

それでは、NGINXとAjentiがインストールされた状態で、WEBサーバー(NGINX)、メールサーバー(Courier-IMAP/EXIM4)、FTPサーバー( Pure FTPD)、DBサーバー(MySQL)をインストールする-その3へ

<やること一覧>







WEBサーバー(NGINX)、メールサーバー(Courier-IMAP/EXIM4)、FTPサーバー( Pure FTPD)、DBサーバー(MySQL)をインストールする-その1

ここから、再びターミナルに戻って必要な各サーバーを確認、インストールしていきます。

今回、設定していくものは下記です。基本的には、ubuntuサーバーをインストールした時点か、あるいはAjentiをインストールした時点で、VPSにすでにインストールされているものがほとんどです。パッケージが古くて差し替えたいものやモジュールを足したいものなどを個別で見ていきつつ、環境を整えていきたいと思います。

  • WEBサーバー: NGINX
    • 何がなくともこれがなくては始まりません。
      これまでのWEBサーバーの主流は、APACHE2ですが、最近では、NGINX(エンジンエックスと読みます)がシェアを伸ばしてきています。
    • Nginxは、もともと大量のアクセスがあるWebサイトのHTTPサーバーとして開発されたため、大量のアクセスを高速に捌くのが得意な軽量サーバーです。1日に5億ものリクエストを処理することもできるほどのポテンシャルを持っています。Apacheでは1つのリクエストにスレッドを割り当てるため、大量のリクエストを捌くのは苦手です。
    • NGINXのキャッシュ機能は、静的なコンテンツを大量にキャッシュとして保存できるため、静的コンテンツへの高速なアクセスを可能にします。
    • NGINXは、基本は軽く小さく、モジュールを組み込むことで様々な機能を追加するタイプのアプリケーションです。モジュールの組み込みにより、それ単体でリバースプロキシーサーバーにもロードバランサーにもなるため、最初は小さく、将来的にWEBサーバー周りの拡張を考える際に、良い候補となるでしょう。
    • APACHEとの大きな違いその1は、PHPがFPM ( FastCGI Process Manager ) を通じてfastCGIのモジュール組み込みによる別プロセスとして動作します。(要は高速にするために実行プロセスもキャッシュ化できるということ)
    • APACHEとの大きな違いその2は、.htaccessが使えません。NGINXでは、APACHEの時に、.htaccessで設定していた内容は、nginx.confをはじめとした設定ファイルに書き込んでいく形となります。ここが少し面倒なところですね。nginxの設定ファイルの書式は、ディレクティブとしてきちんと構造化されているので、頭に入ってしまえば、扱いやすい構造になっています。ただ、APACHEから乗り換える際には、戸惑ってしまうことも多いかもしれません。
  • MAILサーバー:CourierIMAP(IMAP=受信サーバー)/EXIM(SMTP=送信サーバー)
    • MAILサーバーの現主流は、Dovecot(IMAP=受信サーバー)とPosftfix(SMTP=送信サーバー) なのかなと思います。Cent OSではそちらが標準ですね。対して、ubuntuやDebianでは、MTAは、EXIMが標準となってきました。今回は、Ajentiでホストの管理を行う都合上、ubuntuサーバーで、この2つを使います。
      ※MTA(Mail Transfer Agent)とは、電子メールを配信/転送するプログラムのことです。今の話の中では、SMTPサーバーとイコールと思って良いです。
    • 以前に、Cent OSでAjentiを使おうとしたところ、CourierIMAPがrpmになく、さらに依存関係が複雑でがっつりハマってしまい、もう2度と嫌だ!と思ったので(泣)、さっくりとインストールできるubuntu+Ajentiのコンビで働いてもらうことにしました。
    • ただし、CourierIMAP、EXIM共に、ネット上での情報が少ないです。インストールや設定でハマってしまうと、かなり難儀します。今回はクリーンインストールの前提ですので、気にせず行くことにしました。
  • FTPサーバー:pureFTPD
    • proFTPDなどいくつかの競合パッケージがありますが、こちらもAjentiさんの標準ということで、pureFTPDを使用します。Ajenti-vのモジュールを追加していますので、Ajentiの管理画面から、簡単に設定追加することができます。
  • DBサーバー:MySQL
    • 最近は、mariaSQLという、MySQLにほぼ完全互換のDBサーバーが出てきています。大きなDBになる時に、MySQLよりも優位性があったりするのですが、特にそこまでの必要もないため、MySQLでいきます。ここもAjenti-vのモジュールによって簡単にMySQLの設定が追加できるようになっています。DBは、postgreSQLやmangoDBなども候補になってくるかと思いますので、好みによって差し替えても良いかと思います。
  • NTPサーバー:openNTPD
    • 時刻調整のためNTPを設定します。サーバーの内部調整だけでなく、日本のNICTサーバーやプロバイダのNTPにも同期することで、サーバー時刻のズレを防ぐことができます。

長くなりそうなので、続きを分けます。

WEBサーバー(NGINX)、メールサーバー(Courier-IMAP/EXIM4)、FTPサーバー( Pure FTPD)、DBサーバー(MySQL)をインストールする-その2へ

<やること一覧>





サーバーコントロールパネルのAjentiをインストールする

Ajentiは、linuxサーバーの設定編集を簡単にするWEBベースのコントロールパネルです。

ベースのソフトウエアであるAjentiにAjenti-vと言う追加モジュールを組み込むことで、プラグイン的にlinuxサーバーのコントロール機能が追加される仕様になっています。

WEBベースのサーバーコントロールパネルは、cPanelやpleskが有名ですが、いずれも高価です。

また、オープンソースの無償のものでは、

  • WEBMIN / VIRTUALMIN / USERMIN
  • ISPConfig
  • Ajenti / Ajenti-V

などいくつかの選択肢があり、最も使われているものは、WEBMINです。(VIRTUALMIN/USERMINはそれぞれWEBMINをベースとしてバーチャルソフトやメールアカウントを管理するソフトウエア)
しかし、WEBMINは多機能でサーバーの設定を細かく触れる分、インターフェイスが複雑で、またその割にデザインが今ひとつなため、扱いにくい一面があります。ISPConfigは、再販サーバー向けの機能があり、これまた多機能ですが、インターフェイスも日本語で提供されていないため使いにくいと思います。
Ajentiは、デザインが使いやすく、細かな設定もしやすい工夫がされていますので、扱いやすいかと思います。欠点は、メールサーバーが、postfix/dovecotの主流の組み合わせではなく、 courierIMAP/EXIM、pureFTPDといったややマイナーな組み合わせの対応だったりするところです。
しかしながら、postfixなどが使えないと言うことではなく、ajenti-vのモジュールで簡単に設定できるのがこれらのソフトウエアサーバーというだけです。インターフェイスは大変優れていますので、今回は、Ajentiを使用して、ターミナルとAjentiを併用しながら、サーバー構築を進めていきます。

それでは、まずここでは、Ajentiをインストールしていきます。
※Ajentiは、2.x系統と1.x系統がありますが、メンテナンスがされて、より新しい機能が実装されているものは、1.x系統です。

AjentiのWEBサイトから、Ajenti1.x Server admin panelをインストールします。今回は、ubuntu 16.04サーバーですので、ubuntu用パッケージを利用します。

Ajenti1.xをインストールする

<簡単インストール>

wget -O- https://raw.github.com/ajenti/ajenti/1.x/scripts/install-ubuntu.sh | sudo sh

<マニュアルインストール>

  • リポジトリキーを登録する
wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -
  • リポジトリを/etc/apt/sources.listに追加する
echo "deb http://repo.ajenti.org/ng/debian main main ubuntu" | sudo tee -a /etc/apt/sources.list
  • パッケージをインストールする
sudo apt-get update && sudo apt-get install ajenti
  • 一旦サービスをスタートする(※下記まで一気に行う場合は、しなくても良い)
sudo service ajenti restart

http://support.ajenti.org/topics/1121-installing-on-ubuntu/

それでは、インストールしたAjentiに、IPアドレスで接続してみましょう。
先のfirewallの設定で、Ajentiで使用する8000番ポートを開けていますので、下記のURLでブラウザからアクセスできるはずです。

https://000.000.000.000:8000 ←000.000.000.000はVPSサーバーのIPアドレス。

Ajentiには、SSL接続を行いますが、この時点では、 Ajentiが自前で発行したSSL証明書を使用しているため、最初のアクセスの際、chromeなどでは、下記のように、プライバシー警告が出るはずです。SSL暗号化自体は設定されていますので、気にせず、左下の、「詳細」リンクをクリックし、さらに表示される最下部の「000.000.000.000にアクセスする(安全ではありません)」をクリックします。

インストールができているのに、アクセスができない場合は、8000番ポートが正しくオープンされているか、firewallの設定を確認してみてください。

インストールが無事完了していれば、このようなログイン画面になるはずです。

初期ログインアカウントは下記になっています。

Username: root

Password: admin

  • ログインしたらまずパスワードを変更し、下の「SAVE」ボタンをクリックして設定を保存。

  • つぎに言語を日本語にします。
    General->Language->「ja-JP」に変更したら、ページの一番下の「SAVE」ボタンをクリックし、その隣の「RESTART」ボタンをクリック。再度ログインし直すと、日本語に変わっています。

以上でAjentiがインストールできました。

次は、WEBサーバー(NGINX)、メールサーバー(Courier-IMAP/EXIM4)、FTPサーバー( Pure FTPD)、DBサーバー(MySQL)など必要なサービスをインストールしていきます。

<やること一覧>



SSHでサーバにアクセスし、アップデートやfirewallなどの初期設定をする

コンソールを使用してVPSサーバーにSSH接続し、初期の設定をしていきます。

ConoHaのVPSには、ブラウザ上からアクセスできるコンソールソフトがついているのですが、どうにも動きがもさっと重くて、良くないので、今回は、MACのターミナルを使用します。windowsなどからアクセスする場合も、コンソール画面を開いてしまえば後は同じ操作です。

VPSを作成した時に保存したSSHキーを、「書類」ー「server_key」の中に保存しておきます。※例としてこのようにしましたが、保存場所は任意の場所で大丈夫です。

それでは、ターミナルを起動し、下記を入力します。
/以降は、SSHキーまでのパスです。
※パスがわからない場合は、保存したキーファイルを選択し、Ctlキークリックで、「情報を見る」でファイルの情報ウインドウを開き、「一般情報」-「場所」の内容をドラッグしてコピーすることができます。

sudo ssh -i /Users/username/Documents/server_key/key_example.pem root@000.000.000.000

入力したら、Enterキーを押します。

The authenticity of host '000.000.000.000 (000.000.000.000)' can't be established.
 ECDSA key fingerprint is SHA256:555z0Ddrw73dbKz0Ddrw7P55555z0Ddrw7P3dbKz055555.
 Are you sure you want to continue connecting (yes/no)? yes

初回アクセス時には、このサーバーを信頼するサーバーリストに加えていいか、という確認メッセージが常時されますので、「yes」と打ち込みEnterキーを押します。VPSサーバーに接続できました。

root@ host-000-000-0000-000:~#

(rootユーザーでアクセスしています)

通常の SSHアクセスでは、素のままでのrootでのログインはセキュリティ上危険ということで、root権限を持った一般ユーザーを作成して、公開認証キーを発行して〜rootでのアクセスを禁止して、といった手順を踏むのですが、CONOHAの場合、VPSサーバーを作成した時点で、公開キーを発行することができ、そのキーを持たなければ、外部からのアクセスはできません。今回、そのキーの発行はすでにVPSサーバーの作成時点で済んでいますので、そのまま作成したSSHキーを使用したrootアクセスで進めています。

もしこの時にアクセスできない場合は、SSHキーのパーミションがゆるすぎる場合が考えられます。パスもあっているのにアクセスできない場合は、ぱーみしょんを600など厳しく変更して再チャレンジしてみてください。

sudo apt-get update

+Enterキー

sudo apt-get upgrade

+Enterキー

(パッケージのリストをサーバーから入手し、初期のサーバーモジュール等を最新のものにアップデートしています)

..........
 After this operation, 13.9 MB of additional disk space will be used.
 Do you want to continue? [Y/n] y

無事アップグレードできました。

次にufw(firewall)を設定します。
ufwは、ubuntu16.04には最初から入っています。もし、なかった場合は、apt-get install ufw でインストール可能です。

sudo ufw enable
sudo ufw default DENY
sudo ufw allow 22

firewall(ufw)を有効にし、初期設定として全てのアクセスをデフォルトで拒否とした後、22番ポートを開けました。
続けて、上記の22番ポートのopenと同様に、

  • 21 (FTP)
  • 22 (SSH)
  • 25 (SMTP)
  • 80 (HTTP)
  • 143 (IMAP)
  • 443 (HTTPS)
  • 465 (SMTPS)
  • 587 (submission)
  • 993 (IMAPS)
  • 8000 (Ajenti)

の各ポートを開きます。(後に不要なポートもありますが、一応一通り開きました。)

参考:割り当てポート一覧

sudo ufw reload

(設定した内容を読み込み反映します)

sudo ufw status

(設定内容をリストで確認します)

ここまでで、firewallの設定ができました。

ufwは、

ufw allow ssh/tcp (tcpでsshを許可)

ufw deny ssh/tcp (tcpでsshを拒否)

と言うように、サービスごとに許可や拒否の設定することもできます。新しいサービスを追加した時などに見直して、追加の必要が出ることがありますので、ポートの状況は適宜確認してみてください。

次は、サーバーコントロールパネルのAjenti/Ajenti-Vをインストールします。

<やること一覧>





CONOHAのVPSでメインドメイン、サブドメイン、メールサーバー、ネームサーバーにDNSを仕向ける

  • ConoHaのVPSでバーチャルホストで使用する各サブドメイン及びサーバーのDNSを仕向けます。

事前に、お名前.comなどのレジストラで、独自ドメインを取得しているものとします。(※例として、example.comお名前.comで取得したものとして、説明を続けます)

ConoHaのコントロールパネルで、左メニューから「DNS」をクリックします。
右上の「+ドメイン」ボタンをクリックし、example.com(実際には自分の取得したドメイン名)と入力しましょう。

右下の「保存」ボタンをクリックして保存します。

リストに追加されたドメイン名をクリックすると、 ConoHaの3つのネームサーバーがあらかじめ登録されているのがわかると思います。

NS
NS
NS

ここで登録した独自ドメインを利用するには、この3つのネームサーバーを使います。

ネームサーバーは、どこを使っても良いのですが、サーバーを運用しているホスティング会社のネームサーバーを使用するのが、もっとも浸透が早くトラブルが少ないですので、通常は、ホスティング会社のDNSを使います。

それでは、ドメインを取得したレジストラ(お名前.comなど)に、 ConoHaのDNSサーバーを登録し、WEBサイトやメールの送受信の際、ここで登録したexample.comドメインの仕分けには、 ConoHaのDNSサーバーに聞いてね、とお知らせてしておきましょう。

一旦、こちらの ConoHaのコントロールパネルは、お休みさせておきます。(後ほど戻りますので、そのままブラウザ画面を開いておいて構いません。)

ブラウザの別のウインドウでレジストラのWEBサイトを表示し、ドメイン管理画面などから、ドメインのDNSを”他社のDNSサーバーを使用する”といったメニューを探し、上記の3つのDNSサーバーを登録しておきます。
※この手順は、レジストラによって違うため、独自ドメインを登録したレジストラで手順を確認しましょう!

登録ができたら、再び ConoHaのコントロールパネルのDNSメニューに戻ります。先に作成しておいたVPSのIPアドレスを確認しておいてください。

ここでは、下記のDNSレコードを作成していきます。利用しないものは、読み飛ばしてください。

  • メインのドメイン(example.comwww.example.com)のAレコード
  • メールサーバー用のMXレコード、SPFレコード、Aレコード(メールサーバーを使用する場合)
  • rainloop用のサブドメインのAレコード(WEBMAILのクライアントソフトにデザインがオシャレなrainloopを使用する場合。他のwebmailの場合も同じ運用ができます。)
  • phpMyAdmin用サブドメインのAレコード(mysqlのデータベースを管理するソフトにphpMyAdminを使用したい場合)
  • その他のサブドメイン用のAレコード(作成するサブドメインサイトの数だけ作成します。subdomain1.example.comsubdomain2.example.comなどのサブドメインを必要なだけ設定できます。)

ドメイン名の右横にある、鉛筆マークのアイコンをクリックし、DNSレコードの編集画面を開きます。 ConoHaのネームサーバーがNSレコードとして固定で表示されています。
その下に、「」のアイコンがありますので、これを順にクリックして新しいレコードの登録フォームを開きます。

以下のように、「」で、次々にレコードを追加していってください。

  1. 左から、A(通常)| @ | 60 | 000.000.000.000 ←作成したVPSのIPアドレス(150.37.22.15など) =>example.comにアクセスした場合の設定
  2. 左から、A(通常)| www | 60 | 000.000.000.000 ←作成したVPSのIPアドレス(150.37.22.15など) =>www.example.comにアクセスした場合の設定
  3. 左から、MX | @ | 60 | example.com | 10 =>この例では、user@example.comといったメールアドレスが使用できるようになります。
  4. 左から、TXT | @ | 60 | v=spf1 a ip4:000.000.000.000 ~all ←作成したVPSのIPアドレス
  5. 左から、A(通常)| mail | 60 | 000.000.000.000 ←作成したVPSのIPアドレス ※mailはメールサーバーに使用するサブドメインですので、CNAMEでも良いのですが、後にメールの送受信にもSSLを掛けるため、Aレコードで設定しておきます。この設定によって、メールサーバーをmail.example.comとします。ms.example.comなどにしても構いません。
  6. 左から、A(通常)| webmail | 60 | 000.000.000.000 ←作成したVPSのIPアドレス
  7. 左から、A(通常)| phpmyadmin | 60 | 000.000.000.000 ←作成したVPSのIPアドレス
  8. 左から、A(通常)|subdomain1 | 60 | 000.000.000.000 ←作成したVPSのIPアドレス =>作成するサブドメインサイトの数だけAレコードを追加します。

全てのレコードを追加し終わったら、右下の「保存」ボタンをクリックして、設定を終わります。

ConoHaでは、SPFレコードはTXTで指定します。
SPFレコードは、ドメインの送信元アドレスが認証されているメールサーバーから届いたものであるということを示すために必要なレコードで、これによって偽装した迷惑メールが送信されるのを防ぐことができます。受信側は、このレコードを参照することで、相手のドメインからのメールがなりすましなどではない正式なものであるということを確認することができます。
このレコードがなくても基本的にメールは届きます。ただし、GMAILなどでは、メールの送信サーバーの認証が厳しいため、SPFレコードがない場合、スパム扱いをされてフィルタリングに引っかかってしまい、迷惑メールにいれられてしまうような可能性が高くなります。

もうひとつ。この設定の中で、TTLを全て共通で”60″に設定しています。これは、DNSサーバーに、ここで設定したレコードをどれだけの保存しても良いかを命令するものです。この場合は、60ですので60秒、すなわち1分です。

DNSの値が浸透するまで時間がかかります。最初は、サーバーの設定の中で、間違ったり変更したりが発生することが多いので、キャッシュは長時間持たせず、この後変更が必要になっても、比較的早く変更が反映されるように、短い時間で設定しています。
しかし、実際には、1800(30分)とか3600(1時間)で十分、もっと長い時間でも良いので、この後全てのサーバー設定が完了して、運用できる状態になったら、ここの値はまとめて、3600以上の値に変更します。

お疲れ様でした。

ここまでのDNS設定は、ホスティングしている ConoHaのネームサーバーを使用しているので、比較的早く、5分とか10分でも反映されます。長くとも1時間待って反映されないのは、何かの設定値が間違っている、ということになりますので、その場合は、値を見直しましょう。

次は、SSHでサーバにアクセスし、アップデートやfirewallなどの初期設定をします。
<やること一覧>