CentOS 7にGraylogサーバーをインストールする方法
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
Beanstalkは高速でシンプルな作業キューです。メールの送信、外部APIへの接続、画像の処理など、時間のかかるタスクを非同期で実行できます。そうすることで、Webアプリのレイテンシを削減できます。Laravelは、の標準サポートを提供しますbeanstalkd
。
このチュートリアルではbeanstalkd
、Laravelアプリケーションのインストールとセットアップを行い、Supervisorを介してキューワーカーを管理します。デモアプリケーションは、Vultr APIから利用可能なOSのリストを取得し、ランダムに選択します。
システムにスーパーバイザがすでにインストールされていることを前提としています。そうでない場合は、スーパーバイザのセットアップ方法に関する次のチュートリアルを読む必要があります。Ubuntu 16.04でのスーパーバイザのインストールと構成
また、VultrインスタンスへのSSHアクセス権があることも前提としています。
実行する最初のステップは、をインストールすることbeanstalkd
です。
sudo apt-get update
sudo apt-get install beanstalkd
サービスを開始します。
sudo systemctl start beanstalkd
システムの初期化時にサービスを開始できるようにすることもできます。
sudo systemctl enable beanstalkd
次のコマンドを発行して、サービスのステータスを確認します。
sudo systemctl status beanstalkd
デフォルトでbeanstalkd
は、ポートで待機します11300
。Beanstalkは、githubリポジトリで説明されているシンプルなテキストベースのプロトコルを使用しています。を実行して、プロトコルをテストできますtelnet
。
telnet localhost 11300
次のように記述してヒットしENTERます。
list-tubes
サーバーで使用可能なチューブのリストが表示されます。
OK 14
---
- default
接続を閉じるには、単にと入力quit
してを押しENTERます。
Beanstalkのチューブは作業キューを表します。Beanstalkは基本的にプロデューサー、コンシューマー、ジョブ、チューブで構成されています。プロデューサーは、任意の数のコンシューマーによって消費(処理)されるように、ジョブをチューブに入れます。プロデューサーとコンシューマーはどちらもBeanstalkサーバーの単なるクライアントであり、互いに完全に独立していることに注意してください。実際には、これはBeanstalkを使用することにより、PHPアプリケーションでジョブを生成し、たとえばNodeJSアプリで処理させることができることを意味します。幸いなことに、Laravelはこれらすべてを抽象化し、次に説明するように、ジョブをディスパッチして処理するための非常にシンプルなAPIを提供します。
サンプルプロジェクトをビルドするには、まずその依存関係をインストールする必要があります。PHPとComposerをインストールします。
sudo apt-get install php php-mbstring php-xml php-common php-zip composer
次に、Laravel 5.5に基づいてプロジェクトを作成します。
composer create-project --prefer-dist laravel/laravel vultr "5.5.*"
次にcd
、最近作成したフォルダーに移動します。今後はこのディレクトリで作業します。このフォルダは後でとして参照される場合がありますPROJECT_ROOT
。
cd vultr/
LaravelでBeanstalkを使用するには、もう1つの依存関係であるPHP Beanstalkクライアントをインストールする必要があります。
composer require pda/pheanstalk ~3.0
また、Job表現を作成する必要があります。Laravelでは、これはapp/Jobs
フォルダー内のクラスです。Laravelには、Jobクラスの作成に役立つコンソールコマンドがあります。サンプルジョブを作成しましょう。
php artisan make:job FindFavoriteOS
app/Jobs/FindFavoriteOS.php
ファイルを次のように更新します。
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;
class FindFavoriteOS implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
$rawData = file_get_contents('https://api.vultr.com/v1/os/list');
$list = json_decode($rawData, true);
shuffle($list);
$key = array_rand($list);
$favorite = $list[$key];
Log::info('My Favorite OS is: ' . $favorite['name']);
}
}
handleメソッドは、ジョブが消費されたときに効果的に実行されるものです。ここでは、Vultr APIからデータをフェッチし、OSをランダムに選択して、選択したOSをログファイルに書き込みます。ログファイルはにありますstorage/logs/laravel.log
。
Beanstalkはすでにインストールされており、それによって実行されるジョブが定義されています。次に、LaravelにBeanstalkをデフォルトの作業キューとして使用するように指示します。.env
Laravelインストールによって提供されるデフォルトファイルをコピーします。
cp .env.example .env
ここで.env
ファイルを開き、キュードライバーが指定されている行を更新します。
QUEUE_DRIVER=beanstalkd
最後に、アプリケーションキーを生成します。
php artisan key:generate
これで、Beanstalkワークキューにジョブをディスパッチする準備ができました。
Laravelでのジョブのディスパッチは非常に簡単です。routes/web.php
ファイルを更新します。
<?php
Route::get('/', function () {
for ($i = 0; $i < 50; $i++) {
\App\Jobs\FindFavoriteOS::dispatch();
}
return '50 Jobs dispatched!';
});
提供されている組み込みサーバーを本番環境で実行することは推奨されていませんが、ここでは簡潔にするためにここで使用します。
php artisan serve --host 0.0.0.0 --port 8000
次に、Webブラウザーでに移動しhttp://[vultr-instance-ip]:8000
ます。次のメッセージが表示されます。
50 Jobs dispatched!
サーバーへの新しいSSH接続を開き、プロジェクトルート内で次のコマンドを実行します。
php artisan queue:work --once
これは予想される出力です:
[2018-02-14 00:03:52] Processing: App\Jobs\FindFavoriteOS
[2018-02-14 00:03:53] Processed: App\Jobs\FindFavoriteOS
ログが生成されたことを確認します。
cat storage/logs/laravel.log
キューを手動で処理する必要を回避するために、を使用しますsupervisord
。で次のプログラム構成を作成します/etc/supervisor/conf.d/vultr.conf
。
[program:vultr]
process_name=%(program_name)s_%(process_num)02d
command=php [PROJECT_ROOT]/artisan queue:work
autostart=true
autorestart=true
numprocs=8
redirect_stderr=true
stdout_logfile=/var/log/worker.log
スーパーバイザ構成ファイルを配置する正しいパスは、セットアップによって異なることに注意してください。また、システムの[PROJECT_ROOT]
への絶対パスに置き換えることを忘れないPROJECT_ROOT
でください。
ここでは、キューの処理を自動的に開始し、スクリプトが壊れた場合は再起動するようにスーパーバイザを構成しています。また、1つのワーカーではなく8つのプロセスをインスタンス化していることにも注意してください。アプリケーションによっては、必要に応じて多くのプロセスをインスタンス化できます。
スーパーバイザがワーカーを管理できるようにするには、強制的にその構成を再度読み取らせます。
sudo supervisorctl reread
sudo supervisorctl update
スーパーバイザサービスが開始されていない場合、多くの場合、開始する必要があります。
sudo systemctl start supervisord
次に、ジョブが処理されているかどうかを確認します。
tail -f storage/logs/laravel.log
Webブラウザーで、に移動しhttp://[vultr-instance-ip]:8000
ます。コンソールで生成されているログが表示されます。
Beanstalkをワークキューとして使用するようにLaravelアプリケーションを設定しました。また、スーパーバイザーを使用してワーカーを管理する方法も示しました。
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。
サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。
CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。
Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。
FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。
Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。
ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。