開発者ドキュメント

Debian8でCachetを使用してステータスページを作成する方法

序章

Cachet は、StatusPage.ioStatus.ioなどのホストされたサービスに代わる自己ホスト型のステータスページです。 これは、アプリケーションの稼働時間とダウンタイムを伝達し、停止に関する情報を共有するのに役立ちます。

PHPで記述されているため、LAMPまたはLEMPサーバーを既にお持ちの場合は、簡単にインストールできます。 クリーンなインターフェイスを備えており、すべてのデバイスで動作できるように応答するように設計されています。 このチュートリアルでは、DebianでCachetを使用してステータスページを設定します。 使用するソフトウェアスタックは次のとおりです。

CachetはWebサイトまたはサーバーのダウンタイムを監視しないことに注意してください。 Cachetはインシデントを記録します。これは、WebインターフェイスまたはCachetのAPIを使用して手動で更新できます。 監視ソリューションをお探しの場合は、 Building for Production:Webアプリケーション–Monitoringチュートリアルをご覧ください。

前提条件

このチュートリアルに従うには、次のものが必要です。

ステップ1—Cachetユーザーを作成する

最初に行うことは、Cachetを実行するための個別のユーザーアカウントを作成することです。 これには、セキュリティと分離という追加の利点があります。

  1. sudo useradd --create-home --shell /bin/bash cachet

このコマンドは、cachetという名前のユーザーを作成します。 /home/cachet、そのシェルはに設定されます /bin/bash. デフォルトは /bin/sh、ただし、プロンプトに十分な情報が表示されません。 Cachetが使用するコンポーネントに対して排他的に特権を持つのはパスワードなしのユーザーになります。

ユーザーが作成されたので、PHPの依存関係をインストールしましょう。

ステップ2—PHP依存関係のインストール

次に、Cachetの依存関係をインストールする必要があります。これはPHPパッケージの数であり、 wgetunzip、ComposerがPHPライブラリのダウンロードと解凍に使用します。

  1. sudo apt-get install \
  2. php5-fpm php5-curl php5-apcu php5-readline \
  3. php5-mcrypt php5-apcu php5-cli php5-gd php5-sqlite\
  4. wget unzip

個々のパッケージの詳細については、公式のPHP拡張機能リストを参照してください。

設定しましょう php-fpm、FastCGIプロセスマネージャー。 Nginxはこれを使用してリクエストをCachetにプロキシします。

まず、Cachetの情報をホストするファイルを作成します。 php-fpm ニーズ。 開ける /etc/php5/fpm/pool.d/cachet.confnano またはお気に入りのエディター。

  1. sudo nano /etc/php5/fpm/pool.d/cachet.conf

次のように貼り付けます。

/etc/php5/fpm/pool.d/cachet.conf
[cachet]
user = cachet
group = cachet
listen.owner = www-data
listen.group = www-data
listen = /var/run/php5-fpm-cachet.sock
php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = off
request_terminate_timeout = 120s
pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /

ファイルを保存して閉じます。

これらの設定の詳細については、NginxとPhp-fpmを使用して複数のWebサイトを安全にホストする方法を参照してください。ただし、このファイルの各行の目的は次のとおりです。

再起動 php-fpm 変更を有効にします。

  1. sudo systemctl restart php5-fpm

まだ行っていない場合は、 php-fpm サーバーの再起動時に自動的に起動するようにサービスを提供します。

  1. sudo systemctl enable php5-fpm

一般的なPHPパッケージがインストールされたので、Cachetをダウンロードしましょう。

ステップ3—Cachetをダウンロードする

CachetのソースコードはGitHubでホストされています。 これにより、Gitをダウンロード、インストール、およびアップグレードするために簡単に使用できるようになります。

次のいくつかの手順は、 cachet ユーザーとして実行する必要があるため、それに切り替えます。

  1. sudo su - cachet

Cachetのソースコードをという新しいディレクトリに複製します。 www.

  1. git clone https://github.com/cachethq/Cachet.git www

それが完了したら、Cachetのソースコードが存在する新しいディレクトリに移動します。

  1. cd www

この時点から、Gitブランチやタグを含む、Cachetの開発のすべての履歴があります。 Cachetのリリースページから最新の安定したリリースを確認できますが、このディレクトリでGitタグを表示することもできます。

公開時点で、Cachetの最新の安定バージョンはv2.3.11でした。 Gitを使用してそのバージョンをチェックアウトします。

  1. git checkout v2.3.11

次に、Cachetの構成ファイルについて理解しましょう。

ステップ4—Cachetを構成する

Cachetには、という構成ファイルが必要です .env、これはCachetを開始するために存在する必要があります。 その中で、Cachetがセットアップに使用する環境変数を構成できます。

Cachetに付属している構成例をバックアップ用にコピーしてみましょう。

  1. cp .env.example .env

ここで追加する構成には2つのビットがあります。1つはデータベースを構成するためのもので、もう1つはメールサーバーを構成するためのものです。

データベースにはSQLiteを使用します。 構成は簡単で、追加のサーバーコンポーネントをインストールする必要はありません。

まず、データベースをホストする空のファイルを作成します。

  1. touch ./database/database.sqlite

次に、開く .envnano または、データベース設定を構成するためのお気に入りのエディター。

  1. nano .env

SQLiteを使用するため、多くの設定を削除する必要があります。 で始まる設定のブロックを見つけます DB_:

元の.env
. . .
DB_DRIVER=mysql
DB_HOST=localhost
DB_DATABASE=cachet
DB_USERNAME=homestead
DB_PASSWORD=secret
DB_PORT=null
DB_PREFIX=null
. . .

を除くすべてを削除します DB_DRIVER 行、およびからそれを変更します mysqlsqlite.

更新された.env
. . .
DB_DRIVER=sqlite
. . .

注: MySQLやPostgreSQLなどの別のデータベースを使用している場合は、Cachetのデータベースオプションですべての可能なデータベースドライバー名を確認できます。

次に、SMTPサーバーの詳細を入力する必要があります MAIL_* 設定:

.env
. . .
MAIL_HOST=smtp.example.com
MAIL_PORT=25
MAIL_USERNAME=smtp_username
MAIL_PASSWORD=smtp_password
MAIL_ADDRESS=notifications@example.com
MAIL_NAME="Status Page"
. . .

どこ:

Cachetのメールドライバーの詳細については、mail.phpソースコードおよびLaravelの対応するメールドキュメントをご覧ください。

ファイルの編集が終了したら、保存して終了します。 次に、Cachetのデータベースを設定する必要があります。

ステップ5—データベースの移行

Cachetが依存するPHPライブラリは、Composerによって処理されます。 まず、正しいディレクトリにいることを確認してください。

  1. cd /home/cachet/www

次に、Composerを実行し、開発目的で使用されるものを除いて、依存関係をインストールします。 インターネット接続の速度によっては、これには少し時間がかかる場合があります。

  1. composer install --no-interaction --no-dev -o --no-scripts

データベーススキーマを作成し、移行を実行します。

  1. php artisan migrate

注:最新の安定バージョンでは(2.3.11)、 SQLiteを使用するときにバグがあり、実行する必要があります migrate 何よりも先にコマンド。

タイプ yes 尋ねられたとき。 次のような出力が表示されます。

Output
************************************** * Application In Production! * ************************************** Do you really wish to run this command? (yes/no) [no]: > yes Migration table created successfully. Migrated: 2015_01_05_201324_CreateComponentGroupsTable ... Migrated: 2016_06_02_075012_AlterTableMetricsAddOrderColumn Migrated: 2016_06_05_091615_create_cache_table

次のコマンド、 php artisan app:install、データベースのバックアップを取り、移行を実行し、アプリケーションキーを自動的に生成します(つまり、 the APP_KEY の値 .env)Cachetがすべての暗号化に使用します。

警告:決して変更しないでください APP_KEY にある値 .env 実稼働環境でCachetをインストールして使用を開始した後のファイル。 これにより、暗号化/ハッシュ化されたデータがすべて失われます。 使用 php artisan app:install コマンドは1回だけです。 このため、のバックアップを保持することをお勧めします .env.

インストールを完了します。

  1. php artisan app:install

出力は次のようになります。

Output
Clearing settings cache... Settings cache cleared! . . . Clearing cache... Application cache cleared! Cache cleared!

最後のプロアクティブな手順として、500エラーを回避するためにCachetのキャッシュを削除します。

  1. rm -rf bootstrap/cache/*

データベースの準備ができたので、Cachetのタスクキューを構成できます。

ステップ6—タスクキューの構成

Cachetはキューを使用して、電子メールの送信など、非同期で実行する必要のあるタスクをスケジュールします。 推奨される方法は、スーパーバイザーを使用することです。これは、プロセスを監視および制御できる一貫したインターフェイスを提供するプロセスマネージャーです。

まず、 cachet ユーザーのセッションからログアウトし、sudoの非rootユーザーに切り替えてください。

  1. exit

スーパーバイザーをインストールします。

  1. sudo apt-get install supervisor

次に、SupervisorがCachetから必要とする情報を含むファイルを作成します。 開ける /etc/supervisor/conf.d/cachet.conf.

  1. sudo nano /etc/supervisor/conf.d/cachet.conf

このファイルは、スーパーバイザーにそのプロセスを実行および管理する方法を指示します。 スーパーバイザーの詳細については、UbuntuおよびDebianVPSにスーパーバイザーをインストールして管理する方法を参照してください。

そして、以下の内容を追加します。 別の回数を使用したことがある場合は、必ずCachetのディレクトリとユーザー名を更新してください。

/etc/supervisor/conf.d/cachet.conf
[program:cachet-queue]
command=php artisan queue:work --daemon --delay=1 --sleep=1 --tries=3
directory=/home/cachet/www/
redirect_stderr=true
autostart=true
autorestart=true
user=cachet

ファイルを保存して閉じてから、Supervisorを再起動します。

  1. sudo systemctl restart supervisor

サーバーの再起動時に自動的に開始されるように、スーパーバイザーサービスを有効にします。

  1. sudo systemctl enable supervisor

データベースとタスクキューの準備ができました。 次に設定するコンポーネントはWebサーバーです。

ステップ7—Nginxの構成

と通信するWebサーバープロキシとしてNginxを使用します php-fpm. 前提条件のセクションには、Let’sEncryptによって発行されたTLS証明書を使用してNginxを設定する方法に関するチュートリアルがあります。

Cachetに必要なNginx設定ファイルを追加しましょう。 開ける /etc/nginx/sites-available/cachet.confnano またはお気に入りのエディター。

  1. sudo nano /etc/nginx/sites-available/cachet.conf

これはファイルの全文であり、コピーして貼り付ける必要があります。 必ず交換してください example.com あなたのドメイン名で。 各セクションの機能については、以下で詳しく説明します。

/etc/nginx/sites-available/cachet.conf
server {
    server_name  example.com;
    listen 80;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443;
    server_name  example.com;

    root /home/cachet/www/public;
    index index.php;

    ssl on;
    ## Location of the Let's Encrypt certificates
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ## From https://cipherli.st/
    ## and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    ## Disable preloading HSTS for now.  You can use the commented out header line that includes
    ## the "preload" directive if you understand the implications.
    #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    ssl_buffer_size 1400;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm-cachet.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_keep_conn on;
    }
}

このファイルの各セクションの機能は次のとおりです。

最初 server ブロックはすべてのHTTPトラフィックをHTTPSにリダイレクトします。

部分的なcachet.conf
server {
    server_name example.com;
    listen 80;
    return 301 https://$server_name$request_uri;
}

. . .

二番目 server ブロックには、SSLの詳細や php-fpm 構成。

The root ディレクティブは、CachetのルートディレクトリがどこにあるかをNginxに通知します。 を指す必要があります public ディレクトリと、Cachetのクローンを作成してから /home/cachet/www/、最終的には root /home/cachet/www/public;.

部分的なcachet.conf
. . .
server {
    listen 443;
    server_name  example.com;

    root /home/cachet/www/public;
    index index.php;
    . . .
}

SSL証明書は、Let’s Encryptディレクトリ内にあります。このディレクトリには、ドメイン名にちなんで名前を付ける必要があります。

部分的なcachet.conf
. . .
server {
    . . .
    ssl on;
    ## Location of the Let's Encrypt certificates
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    . . .
}

残りのSSLオプションは、NginxおよびLet’sEncryptチュートリアルから直接取得されます。

部分的なcachet.conf
. . .
server {
    . . .
    ## From https://cipherli.st/
    ## and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    ## Disable preloading HSTS for now.  You can use the commented out header line that includes
    ## the "preload" directive if you understand the implications.
    #add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    ssl_buffer_size 1400;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    . . .
}

The location ~ \.php$ セクションでは、PHPファイルを提供する方法をNginxに指示します。 最も重要な部分は、作成時に使用したUnixソケットファイルを指すことです。 /etc/php5/fpm/pool.d/cachet.conf. 具体的には、 /var/run/php5-fpm-cachet.sock.

部分的なcachet.conf
. . .
server {
    . . .
    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm-cachet.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_keep_conn on;
    }
}

まだ行っていない場合は、ファイルを保存して閉じます。

NginxのCachet構成が作成されたので、へのシンボリックリンクを作成します sites-enabled これは、Nginxが使用する構成ファイルを検索して選択する場所であるためです。

  1. sudo ln -s /etc/nginx/sites-available/cachet.conf /etc/nginx/sites-enabled/cachet.conf

変更を有効にするには、Nginxを再起動します。

  1. sudo systemctl restart nginx

また、Nginxサービスを有効にして、サーバーの再起動時に自動的に開始されるようにします。

  1. sudo systemctl enable nginx

それでおしまい! ブラウザでドメイン名に移動すると、Cachetの設定ページが表示されます。 それを見ていきましょう。

ステップ8—Cachetの初期設定を終了する

Cachetの残りのセットアップは、ブラウザのGUIを介して行われます。 これには、サイト名とタイムゾーンの設定、および管理者アカウントの作成が含まれます。 3つのステップ(環境、ステータスページ、および管理者アカウントのセットアップ)があり、後でCachetの設定ダッシュボードでいつでも構成を変更できます。

環境設定

最初の構成手順は、環境のセットアップです。

注:使用しているCachetバージョンにはバグがあり、メール設定がすでに設定されている場合でも、環境設定ページに表示されません。 .env. これはバージョン2.4で修正される予定です。

フィールドは次のように入力する必要があります。

次へをクリックして次のステップに進みます。

ステータスページの設定

このセクションでは、サイト名、サイトドメイン、タイムゾーン、および言語を設定します。

注: Cachetは多くの言語をサポートしていますが、これはコミュニティ主導のプロジェクトであるため、英語以外の言語で翻訳されていない文字列が存在する可能性があります。 サポートされている言語のリストを表示できます。これには、翻訳されたコンテンツの割合も含まれています。

フィールドは次のように入力する必要があります。

次へをクリックして次のステップに進みます。

管理者アカウントの設定

最後に、管理者アカウントを設定します。 ユーザー名を選択し、有効なメールアドレスと強力なパスワードを入力してください。

完全なセットアップをクリックして、すべての変更を保存します。

完全なセットアップ

[完全なセットアップ]ページで、Cachetが正常に構成されたことが通知されます。 これで、ダッシュボードに移動ボタンをクリックして、管理者の資格情報を使用してログインし、Cachetのダッシュボードページにアクセスできます。

これで、Cachetが完全にセットアップされ、機能するようになりました。 最後のステップでは、将来的にCachetをアップグレードする方法について説明します。

ステップ9—Cachetのアップグレード

Gitを使用すると、新しいバージョンのCachetがリリースされたときに非常に簡単にアップグレードできます。 あなたがする必要があるのは、その関連するタグをチェックアウトしてから、データベースの移行を実行することです。

注:新しいバージョンにアップグレードする前に、Cachetとそのデータベースをバックアップすることをお勧めします。 SQLiteの場合、コピーする必要があるのは database/database.sqlite ファイル。

まず、 cachet ユーザーに切り替えて、Cachetのインストールディレクトリに移動します。

  1. sudo su - cachet
  2. cd /home/cachet/www

オプションで、メンテナンスページをオンにすることができます。

  1. php artisan down

GitHubから最新のCachetコードを取得します。

  1. git fetch --all

そして、すべてのタグをリストします。

  1. git tag -l

文字で始まる現在のすべてのタグが表示されます v. ベータ版またはリリース候補(RC)ステータスの一部に気付く場合があります。 これは本番サーバーであるため、無視してかまいません。 Cachetリリースページにアクセスして、最新のタグを確認することもできます。

アップグレードに使用するタグを見つけたら、Gitを使用してそのタグをチェックアウトします。 たとえば、バージョン2.4.0にアップグレードする場合は、次を使用します。

  1. git checkout v2.4.0

続行する前に、Cachetのキャッシュを削除してください。

  1. rm -rf bootstrap/cache{,t}/*

次に、Composerの依存関係をアップグレードします。これには通常、バグ修正、パフォーマンスの強化、および新機能が含まれています。

  1. composer install --no-interaction --no-dev -o --no-scripts

最後に、移行を実行します。

  1. php artisan app:update

メンテナンスページをオンにすると、アクセスを再度有効にできるようになります。

  1. php artisan up

Cachetの新しいバージョンが稼働します。

結論

SQLiteに裏打ちされたSSLを使用してCachetをセットアップし、Gitで維持する方法を知っています。 MySQLやPostgreSQLなどの他のデータベースを選択できます。 Cachetのオプションの詳細については、公式のCachetドキュメントをご覧ください。

モバイルバージョンを終了