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

MySQLをインストールします。

さて、ここでAjentiの管理画面を確認すると、サービスにMySQLがあるにも関わらず、起動してくれないことにお気づきかと思いますw

そこで、左メニューから「プラグイン」を見てみると・・・

MY SQL-SERVERがないんじゃこらぁー!と怒られましたw

ということで、MySQLサーバーをインストールします。

現在のMySQLコミュニティサーバーの最新バージョンは、

MySQL Community Server 5.7.17 です。

参考:https://dev.mysql.com/downloads/mysql/

ついでなので、ちょっとubuntuのリポジトリで利用できるmysql関連のモジュールのリストを確認しておきましょう。

apt-cache search mysql

ずらずらずらずら〜っとリストが流れていきます。
mysql-serverとmysql-clientで、それぞれ最新パッケージが入手できる、と書いてありますので、それでは、お約束のアップデートから。

sudo apt-get update
sudo apt-get install mysql-server mysql-client

Do you want to continue? [Y/n]y ...... Checking databases. sys.sys_config                                     OK Upgrade process completed successfully. Checking if update is needed. Setting up mysql-client (5.7.17-0ubuntu0.16.04.1) ... Setting up mysql-server (5.7.17-0ubuntu0.16.04.1) ...

ということで、無事最新版がインストールされました。

ちなみに、Ajentiの「プラグイン」メニューからインストールすることもできますが、大きなモジュールのインストールはコマンドで、エラーが出ていないかなどを確認しながらやる方が安心。なので、今回は、ターミナルからインストールしました。

それでは、お約束で、Ajentiも再起動しておきましょう!

再起動したAjentiで確認すると、先ほどの「プラグイン」メニューのMySQLの項目はオレンジの▲警告が消えています。
さらに、「サービス」メニューの中のmysqlは起動した状態に変わっており、「ソフトウエア」メニューグループに「MySQL」というメニューが増えています。

これで、MySQLデータベースが使えるようになりました!!

左メニューの「MySQL」をクリックしますと、ホスト、ユーザー名、パスワードを設定する小さいウインドウが出てきます。

  • ホスト:localhost (そのまま)
  • ユーザー名:root (そのまま)
  • パスワード:password ※MySQLのrootユーザー用の任意のパスワードを入力します。

設定が終わったら、再びAjentiも再起動します。(ま、とりあえずはしなくても平気かなw)

すると、同じ「MySQL」メニューにデータベースの設定画面が現れます。
ここでは、SQLを直接実行できる他、データベースの作成・削除、DBユーザーの作成・削除が行えます。

 

MySQLのインストールは、一旦、以上です。

これで、一応一通り、必要なサーバーモジュールはインストールできました。
ここで、AjentiのプラグインパッケージであるAjenti-Vと各サーバー用のモジュールをインストールしておきます。

<やること一覧>





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

(参考)こちらが、ubuntu16.04(xenial)で使用できるパッケージの一覧です。

http://packages.ubuntu.com/xenial/

ここでは、すでにインストールされている、メールサーバー、DBサーバーが正常起動しているかどうかの確認と、FTPサーバー、NTPサーバーを設定していきたいと思います。

まずは、先ほどインストールしたAjentiの管理画面をざっくり見ていきましょう!
(特に説明が入らないと思う項目や今は使わない項目は飛ばします。)

  • ダッシュボード
    • サーバーの状況を一覧で確認できるトップページです。
    • ubuntuサーバー自体の再起動もここで「AC電源」ブロックから操作可能です。
    • 右上の「ウィジェットを追加します」ボタンからモジュール等の管理ウィジェットを追加することができます。
    • AjentiとNGINXは、再起動することが多いため、ここでウィジェットを追加しておきました。(サービスー>ajentiあるいはnginxを検索して追加すると、画面に停止と再起動ができるブロックが現れます。

  • 設定
    • プラグインやライセンスのタブは、触ることはないかも。
    • Ajentiのユーザーを追加するときは、ここで追加します。※サーバーシステムのユーザーではありません。サーバーのユーザーは、左メニューの下の方にある、システムー>ユーザーから管理を行います。
    • 一般設定の中にSSLの項目があります。Ajentiには安全のためSSL経由でアクセスしています。最初は、Ajentiがインストール時に発行した自己証明書がインストールされています。通信の暗号化自体は行われているので、自分で使用する分には全く問題ありません。※今回のサーバー設定の最後に、この証明書をLet’sEncryptで発行する無料の証明書に置き換えます。現状はこのまま放っておきましょう。
  • プラグイン
    • インストールされていたりよく使われるプラグイン類が一覧になっています。動作するためのモジュールが足りないものは、左側にオレンジの▲が付いています。例えば、GITやBIND9などが表示されています。
    • この中で、ざっくり、必要なのに足りていないモジュールの確認ができます。この後インストールするものとして、fail2ban、MySQL、NTPdに▲がついていると思いますが、インストール後、▲マークは消えますので、後ほど確認しみてください。
  • WEBサイト
    • 最も大事なパートの1つです。ここで、後ほど、NGINXにバーチャルホストを追加していきます。
    • 初期は、有効になっておらず、有効にするボタンが1つ表示されているだけですので、ボタンをクリックして有効にしておきましょう。
  • メール
    • こちらも大事なパートです。ここでメールアカウントの管理を行います。
    • WEBサイトと同じく初期は、有効になっておらず、有効にするボタンが1つ表示されているだけですので、ボタンをクリックして有効にしておきましょう。
  • Cron
    • Cron(クローンまたはクーロン)の設定をします。
    • Cronは、サーバーに、定期的にプロセスを予約動作させるためのモジュールです。例えば、1時間ごとにメールを自動確認させる、とか、1週間ごとにWEBサーバーのアクセスログを別の場所にコピーするとか、1日一回サーバーのバックアップを取る、といったことを行うために使います。
  • Data&Time
    • ここでは、NTPサーバーの管理を行います。
    • NTPサーバーは、日本の時刻表順を合わせているNICTサーバーなどと、ローカルサーバーの時刻を定期的に合わせています。
    • さて、ここで恐らくCRASHだー!という黒いエラー画面に出くわしたのではないでしょうか。これは、現在、ubuntuサーバーにNTPdのモジュールが入っていないことによるものですので、ここでNTPdをインストールします。
      1. Ajentiの画面の左メニューからAjentiに付属の「ターミナル」を開くか、あるいはMACのターミナルでVPSサーバーにアクセスします。
      2. 下記のコードを打ち込み、openNTPdをインストールします。

        sudo apt-get install openntpd

        Do you want to continue? [Y/n] y

      3. Ajentiの左メニューの
        ソフトウエアー>サービス
        から「openntpd」を探し、▶︎起動させます。
      4. 再びDate&Timeに戻ると、黒いエラー画面が消え、設定フォームが現れていると思います。
    • 現在の時刻に、Ajia/Tokyoが表示できているか確認してください。
    • サーバーの項目に、NICTサーバーと、NICTサーバーに同期しているNTPサーバーの2つを追加しておきましょう。もしプロバイダがNTPサーバーを提供しており、それを追加したい場合はその下に追加します。追加できたら、一番下の「保存」ボタンを忘れずにクリックしておいてください。
      • ntp.nict.jp
      • ntp.jst.mfeed.ad.jp
  • パッケージ
    • アップグレードできるパッケージが発生した時にここに表示されます。
    • 左上の「リストを取得します」が、つまりは、コマンドのapt-get updateの動作になります。
    • アップグレードできるパッケージが出たら、「全てアップグレードします」をクリックし、パッケージを選んでから、一番上の「適用」ボタンをクリックします。
  • ファイアウォール
    • ここで管理できるファイアウォールは、iptableです。ubuntuでは、ufwでfirewallを管理していますので、これは基本使いません。
    • iptableを使いたい場合は、ufwをオフにして、ここで管理をしても構いません。両方を使用するのは、思わぬ接続エラーを引き起こしたりして困ったことになるのがオチなのでどちらかに統一して管理しましょう♪
  • ユーザー
    • 前述したように、ここでシステムのユーザー管理が可能です。
  • ログ
    • 要するにログビューアーですので、エラーなどが出た時、見たいログがあれば、簡単に見ることができます。
    • ログの閲覧は、この他に、左メニューの一番下の「メモ帳」で開いたりターミナルからvimなどのコマンドで見ることもできます。
  • サービス
    • 各サーバーサービスの起動や停止が行えます。
    • 今回必要なサービスが起動しているかどうかを確認しておきましょう!
      • courier-authdaemon(courier-imapに必要)
      • courier-imap(IMAP:メールサーバー)
      • courier-imap-ssl(courier-imapに必要)
      • cron(一応;)
      • exim4(SMTP:メールサーバー)
      • inetd(スーパーサーバー:モジュールの初期起動を管理)
      • mysql(※まだインストールしてないので起動しません)
      • nginx(WEBサーバー)
      • openntpd(時刻管理サーバー)
      • php7.0-fpm(※まだインストールしてないので起動しません)
      • pure-ftpd(※まだインストールしてないので起動しません)
      • ssh
      • ufw
      • 後は、特にトラブルがない限り、初期から自動でオン/オフされていますので、ザクっと見ておくと良いでしょう。
  • ファイルマネージャー
    • サーバー内のファイルを確認したり、ファイルやフォルダの新規作成、名前変更、パーミションの変更、内容の編集(メモ帳を開きます)が可能です。また後で使いますw

ざくっと上記を確認したら、mysql、php7.0-fpm、pure-ftpdをインストールしていきましょう!

ターミナルを開きます。

MySQLは、管理ソフトであるphpMyAdminの設定までを続けてやってしまいたいので一旦後回しにして、他のモジュールを入れていきます。

  • php7.0-fpm
sudo apt-get install php7.0-fpm

Do you want to continue? [Y/n] y

  • pure-ftpd
sudo apt-get install pure-ftpd

 

Do you want to continue? [Y/n] y

Ajentiの管理画面のダッシュボードまたは設定からAjentiを再起動します。
再起動後、左メニューの「サービス」から、それぞれ、表示が起動中に変わっているのを確認しましょう。起動していなかった場合は、▶︎ボタンをクリックし、起動させます。

次は、MySQLをやっつけます

<やること一覧>





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)など必要なサービスをインストールしていきます。

<やること一覧>