اذهب إلى المحتوى

كيفية إنشاء صفحة حالة باستخدام Cachet على ديبيان 8


عبدالهادي الديوري

Cachet عبارة عن صفحة حالة (Status Page) ذاتية الاستضافة كبديل للخدمات المستضافة مثل StatusPage.io و Status.io. تُساعد على توفير معلومات حول وقت تشغيل (uptime) ووقت توقف (downtime) التطبيق الخاص بك ومشاركة المعلومات حول أي انقطاع. خير مثال عن ذلك هو صفحة حالة خدمات ومنتجات حسوب التي توضح ببساطة حالة جميع المواقع التابعة لها.

وقد تمت برمجتُها بلغة PHP، لذا إن سبق لك تثبيت حزمة LAMP أو LEMP، فإنها سهلة التثبيت. تتميّز بواجهة نظيفة ومستجيبة ما يمكّن من تشغيلها على جميع اﻷجهزة. في هذا الدرس، سنقوم بضبط صفحة حالة بواسطة Cachet على Debian.

مجموعة البرامج التي سنستعملها هي كالتالي: -Cachet من أجل صفحة الحالة نفسها. -Composer لإدارة اعتماديات PHP الخاصة بـCachet -SQLite كقاعدة بيانات لتخزين بيانات Cachet -Nginx لتقديم صفحة الحالة

لاحظ أن Cachet لا تراقب المواقع والخوادم لوقت التوقف (downtime)، إذ تسجل اﻷحداث فقط، والتي يمكن تحديثها يدويا أو عن طريق الواجهة البرمجية الخاصة بـ Cachet. إذا كنت تبحث عن حلول لمراقبة تطبيقات الويب، تفقد هذا الدرس.

المتطلبات

تحتاج إلى ما يلي لمُتابعة هذا الدرس:

  • خادوم Debian 8 معد عن طريق اتباع هذا الدّرس، مع مستخدم إداري بامتيازات sudo غير المستخدم الجذر. تعمل Cachet بـ 512MB من الذاكرة العشوائية، ويفضل 1GB أو اكثر من أجل أداء أفضل.
  • اسم نطاق مؤهل بشكل كامل (FQDN) مع سجل A يوجه نطاقك نحو عنوان IPv4 خادومك. يمكن شراؤه على Namecheap أو الحصول عليه مجانا على Freenom، يمكنك اتباع درس اسم الاستضافة hostname هذا لتفاصيل إعداد سجلات DNS.
  • Nginx مُنصّب ومُعدّ بواسطة Let's Encrypt. يمكن تثبيته عن طريق اتباع هذا الدرس بعدها أعدَّ Let's Encrypt باتباع الخطوتين اﻷوليين من هذا الدرس الخطوات المتبقية يمكن تجاوزها ﻷننا سنقوم بإنشاء ملف إعدادات Cachet خاص بنا.
  • Composer مثبت باتباع الخطوات 1 و 2 من هذا الدرس.
  • Git منصّب باتباع الخطوة الأولى من هذا الدّرس لسحب الشيفرة المصدرية الخاصة بـCachet من موقع GitHub.
  • خادوم SMTP، لتتمكن Cachet من إرسال رسائل بريد إلكتروني حول الوقائع إلى المشتركين ومذكِّرات كلمة المرور إلى المستخدمين المنشئين في واجهة Cachet. يمكن استخدام Postfix كخادوم SMTP للإرسال فقط (Send-Only) بُمساعدة درس كيفية تثبيت وتهيئة Postfix كخادوم SMTP للإرسال فقط باستخدام أوبونتو 14.04. أو يمكن استخدام مزود طرف ثالث مثل Mailgun.

الخطوة اﻷولى: إنشاء مستخدم Cachet

أول ما يجب القيام به هو إنشاء حساب مستخدم مستقل لتشغيل Cachet. سيحمل هذا الإجراء حماية وعزلا إضافيين.

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

سينشئ الأمر مستخدمًا باسم cachet مع مجلد المنزل في ‎/home/cachet، والذي ستُضبَط صدفته إلى ‎/bin/bash. الخيار الافتراضي هو ‎/bin/sh، إﻻ أنه لا يوفر ما يكفي من المعلومات في المحث (prompt) الخاص به. سيكون المُستخدم بلا كلمة مرور مع امتيازات حصرية للمكونات التي ستستعملها Cachet.

بعد إنشاء المستخدم لنقم بتثبيت اعتماديات PHP.

الخطوة الثانية: تثبيت اعتماديات PHP

نحتاج إلى تثبيت اعتماديات Cachet، والتي هي عبارة عن عدد من حزم PHP إضافة إلى wget و unzip، والتي يستعملها Composer لتنزيل وفك ضغط مكتبات PHP:

sudo apt-get install \
  php5-fpm php5-curl php5-apcu php5-readline \
  php5-mcrypt php5-apcu php5-cli php5-gd php5-sqlite\
  wget unzip

يمكنك معرفة المزيد حول أي من الحزم من خلال قائمة إضافات PHP الرّسميّة.

لنقم اﻵن بضبط php-fpm، مسيّر عمليات FastCGI. والذي سيستعمله Nginx للتوسّط بين الطّلبات نحو Cachet.

قم أولا بإنشاء الملف الذي سيستضيف المعلومات من أجل Cachet والتي يحتاجها php-fpm. افتح /etc/php5/fpm/pool.d/cachet.conf بالمحرّر nano أو أي محرر آخر:

sudo nano /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 على أوبنتو 14.04 . ولكن إليك ما يقوم به كل سطر في هذا الملف:

  • [cachet] هو اسم المُجمِّع (pool). إذ يجب على كل مُجمِّع أن يمتلك اسمًا فريدًا.
  • user وgroup هما مستخدم لينكس والمجموعة التي سيشتغل الحوض الجديد تحتها. وهي نفسها ما أعددناه مع المستخدم الذي أنشأناه في الخطوة اﻷولى.
  • listen.owner و listen.group تُعرِّف ملكِيّة المُنصت، أي مقبس المُجمِّع php-fpm الجديد. يجب على Nginx من أن يتمكن من قراءة هذا المقبس، ولذلك نستخدم مُستخدم ومجموعة www-data.
  • listen يخصّص مسار ملف مقبس فريد لكل مُجمِّع.
  • php_admin_value يسمح بضبط قيم إعدادات PHP مخصّصة. نستعمله هنا لتعطيل الدّوال التي يمكنها تشغيل أوامر لينكس (exec,passthru,shell_exec,system).
  • php_admin_flag يشبه php_admin_value، إﻻ أنه مجرد مستبدل للقيم المنطقية (boolean switch) أي on و off. سنقوم بتعطيل الدّالة allow_url_fopen التي تمكّن برمجيات PHP من فتح ملفات بعيدة والتي قد تستعمل من طرف مهاجم.

  • خيار pm يسمح بضبط أداء الحوض. نقوم بضبطه على ondemand والذي يوفر توازنا لإبقاء مُستويات استعمال الذاكرة منخفضة. إذا كنت تمتلك ذاكرة كبيرة، عندها يمكن ضبطه على القيمة static. إن كنت تمتلك معالجا قويا ذا سلاسل (threads) عديدة، فعندها قد يكون dynamic خيارا أفضل.

  • يجب أن تكون قيمة الخيار chdir جذر نظام الملفّات /. ولا يجب تغيير قيمة هذا الخيار إلا إذا كنت تستخدم خيارا مهما آخر (مثل chroot).

أعِد تشغيل php-fpm لتطبيق التغييرات:

sudo systemctl restart php5-fpm

مكّن خدمة php-fpm لكي تشتغل تلقائيا عند إعادة تشغيل الخادوم إن لم تفعل ذلك بعد:

sudo systemctl enable php5-fpm

بعد تثبيت حزم PHP العامة، لنقم بتنزيل Cachet.

الخطوة الثالثة: تنزيل Cachet

الشفرة المصدرية لـCachet مستضافة على GitHub ما يجعلها سهلة التنزيل، والتثبيت، وأيضا -كما سنرى لاحقا- ترقيتها باستخدام Git.

يجب اتباع الخطوات المتبقية بصفة المستخدم cachet، لذلك قم بالانتقال له:

sudo su - cachet

انسخ شفرة Cachet المصدرية إلى مجلد جديد باسم www:

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

بعد ذلك، انتقل إلى المجلد الجديد الذي تتواجد به الشفرة المصدرية لـ Cachet:

cd www

ابتداءً من هذه المرحلة، لديك سجل تطور Cachet بأكمله، بما في ذلك فروع و وسوم Git. يمكنك تفقد آخر إصدار مستقر في صفحة إصدارات Cachet، ولكن يمكنك كذلك رؤية وسوم Git في هذا المجلد.

في فترة نشر هذا الدرس، آخر إصدار مستقر ل Cachet هو v2.3.11. استعمل Git للانتقال إلى وسم هذا اﻹصدار:

git checkout v2.3.11

بعد ذلك سنمر إلى التعرف على ملف إعدادات Cachet.

الخطوة الرابعة: إعداد Cachet

تتطلب Cachet ملف إعدادات يسمى env.، والذي يعتبر ضروريا لتشغيل Cachet. يمكنك بداخله ضبط متغيرات البيئة التي تستعملها Cachet لضبطها. لِنقُم بنسخ مثال اﻹعدادات الذي يأتي مع Cachet ونُبْقِ على الأصلي احتياطا:

cp .env.example .env

سنضيف إعدادين هنا، أحدهما لضبط قاعدة البيانات واﻵخر لضبط خادوم بريد إلكتروني.

بالنسبة لقاعدة البيانات، سنستعمل SQLite. باعتبارها سهلة الاستخدام ولا تتطلب تثبيت أي مكونات إضافية على خادوم.

لننشئ أولا الملف الفارغ الذي سيستضيف قاعدة البيانات:

touch ./database/database.sqlite

بعد ذلك، افتح الملف env. باستعمال nano أو محرر النصوص المُفضل لديك لضبط إعدادات قاعدة البيانات:

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، وغيّر قيمته من mysql إلى sqlite. بعد تعديل ملف‎.env:

. . .
DB_DRIVER=sqlite
. . .

ملاحظة: يمكنك تفقد خيارات قاعدة بيانات Cachet للحصول على جميع أسماء مُشغّلات قواعد البيانات الممكنة إذا كنت تستعمل قاعدة بيانات أخرى مثل MySQL أو PostgreSQL.

بعدها، تحتاج إلى ملء تفاصيل خادوم SMTP الخاصّ بك في إعدادات MAIL_*‎ المُتعلّقة بضبط البريد الإلكتروني:

. . .
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"
. . .

ما يعني:

  • MAIL_HOST عنوان URL خادوم البريد اﻹلكتروني الخاصّ بك.
  • MAIL_PORT المنفذ الذي ينصت عليه خادوم البريد اﻹلكتروني (عادة 25 ).
  • MAIL_USERNAME اسم مستخدم حساب SMTP (عادة ما يكون البريد اﻹلكتروني بأكمله).
  • MAIL_PASSWORD كلمة مرور حساب SMTP.
  • MAIL_ADDRESS عنوان البريد الإلكتروني الذي سترسل منه التنبيهات للمشتركين.
  • MAIL_NAME هو الاسم الذي سيظهر في الرسائل المرسلة إلى المشتركين. انتبه إلى أن أي قيمة بها مسافة يجب أن توضع بين علامتي تنصيص مزدوجتين.

يمكنك الاطلاع على المزيد حول برامج تشغيل بريد Cachet على شيفرة mail.php المصدرية وتوثيق البريد الإلكتروني من Laravel.

بعد الانتهاء من تحرير الملف، احفظه وأغلقه؛ بعد ذلك، تحتاج إلى ضبط قاعدة بيانات Cachet.

الخطوة الخامسة: تهجير قاعدة البيانات

تتم إدارة مكتبات PHP التي تعتمد عليها Cachet باستخدام Composer. أولا، كن متيقنا أنك في المجلد الصحيح:

cd /home/cachet/www

ثم قم بتشغيل Composer وثبّتب جميع المتطلبات باستثناء تلك التي تستعمل لأغراض التطوير. اعتمادا على سرعة الإنترنت لديك، قد يتطلب اﻷمر بعض الوقت:

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

أنشئ مخطط قاعدة البيانات وشغل التهجير:

php artisan migrate

تنبيه: في الإصدار المستقر اﻷخير (2.3.11)، هناك علة عند استخدام SQLite والتي تلزمك بتشغيل أمر التهجير migrate قبل أي شيء آخر.

اكتب yes عندما تُسأل عمّا إذا أردت تنفيذ الأمر بالفعل. سيكون المُخرج مُشابها لما يلي:

**************************************
*     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، يأخذ نسخة احتياطية لقاعدة البيانات، يشغل التهجير، ويولد تلقائيا مفتاح التطبيق (أي قيمة APP_KEY في الملفّ .env) والذي تستعمله Cachet لجميع تشفيراتها.

تحذير: لا تغّير أبدا قيمة APP_KEY التي توجد في الملف ‎.env بعد تثبيت وتشغيل Cachet في بيئة الإنتاج، إذ سيؤدي ذلك إلى فقدان كل بياناتك المشفرة. استعمل اﻷمر php artisan app:install مرة واحدة فقط. ولهذا السّبب يُفضّل الإبقاء على نسخة احتياطية من الملفّ ‎.env.

أكمل التثبيت:

php artisan app:install

سيكون المُخرج مُشابها لما يلي:

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

كخطوة استباقية أخيرة، فرّغ مخزن Cachet المؤقت لتفادي أخطاء HTTP 500:

rm -rf bootstrap/cache/*

واﻵن بعد تهيئة قاعدة البيانات، يمكننا إعداد طابور مهام Cachet.

الخطوة السادسة: إعداد طابور المهام (Task Queue)

تستعمل Cachet طابورا لجدولة المهام التي تحتاج للعمل بشكل غير متزامن (asynchronously)، مثل إرسال رسائل البريد اﻹلكتروني. الطريقة المقترحة هي استعمال Supervisor، وهو مُسيّر عمليات يوفر واجهة ثابتة يُمكن من خلالها مُراقبة العمليات والتحكم بها.

تأكد أولا من تسجيلك الخروج من جلسة المستخدم cachet وتحوّل إلى مستخدمك ذو صلاحيات sudo غير المُستخدم الجذر:

exit

ثبّت Supervisor:

sudo apt-get install supervisor

ثم أنشئ الملف الذي يحتوي على المعلومات التي يحتاجها Supervisor من Cachet. للقيام بذلك، افتح الملفّ /etc/supervisor/conf.d/cachet.conf:

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

هذا الملف يخبر Supervisor عن كيفية تشغيل وتسيير عملياته. يمكنك قراءة المزيد حول Supervisor في مقال كيفية تثبيت وإدارة Supervisor على خواديم أوبنتو ودبيان .

أضف المحتوى التالي مع التّأكد من تعديل مجلد Cachet واسم المستخدم إذا استعملت أسماء أخرى (السّطران directory=/home/cachet/www/ و user=cachet):

[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:

sudo systemctl restart supervisor

مكن خدمة Supervisor لكي تشتغل تلقائيا عند إعادة تشغيل الخادوم:

sudo systemctl enable supervisor

قاعدة البيانات وطابور المهام جاهزان، المكون التالي الذي يجب ضبطه هو خادوم الويب.

الخطوة السابعة: ضبط Nginx

سنستعمل Nginx على شكل خادوم ويب وسيط سيتواصل مع php-fpm. قسم المتطلبات أعلاه به درس لكيفية إعداد Nginx بشهادة TLS من Let's Encrypt.

لنضف ملف إعدادات Nginx الذي يحتاج إليه Cachet. افتح ملفّ /etc/nginx/sites-available/cachet.conf بمُحرّر النصوص nano أو بأي محرر آخر:

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

هذا هو النص الكامل للملف، والذي يجب عليك نسخه ولصقه. مع إبدال example.com باسم النطاق الخاص بك. وظيفة كل قسم موصوفة بشكل مُفصّل أسفله.

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:

server {
    server_name example.com;
    listen 80;
    return 301 https://$server_name$request_uri;
}
. . .

كتلة server الثانية تحتوي على معلومات خاصة حول هذا الضّبط، مثل تفاصيل SSL وإعدادات php-fpm.

تعليمة root تُخبر Nginx عن مكان تواجد مجلد الجذر الخاصّ بـ Cachet. يجب أن تشير القيمة إلى مجلد public، وبما أننا نسخنا Cachet إلى /home/cachet/www/ فسيُصبح السّطر root /home/cachet/www/public;‎.

. . .
server {
    listen 443;
    server_name  example.com;

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

شهادات SSL تتواجد داخل مجلد Let's Encrypt، والتي يجب أن تُسمى انطلاقا من اسم نطاقك:

. . .
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's Encrypt:

. . .
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;
    . . .
}

قسم location ~ \.php$‎ يخبر Nginx عن كيفيّة تقديم ملفات PHP. الجزء اﻷهم هو اﻹشارة إلى ملف مقبس Unix الذي استعملناه عندما أنشأنا الملفّ ‎/etc/php5/fpm/pool.d/cachet.conf. أي الملفّ ‎/var/run/php5-fpm-cachet.sock بالتحديد.

. . .
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;
    }
}

احفظ وأغلق الملف إن لم تفعل ذلك مسبقا.

واﻵن بعد إنشاء إعدادات Cachet لـNginx، أنشئ وصلة رمزية (symlink) يُشير إلى المُجلد sites-enabled، إذ هنا يبحث Nginx عن ملفات اﻹعدادات لاستعملها:

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

أعد تشغيل Nginx لتطبَّق التّغييرات:

sudo systemctl restart nginx

ومكّن خدمة Nginx لكي تشتغل تلقائيا عند إعادة تشغيل الخادوم:

sudo systemctl enable nginx

هذا كلّ ما في اﻷمر، إذا كتبت الآن اسم نطاقك في المتصفح، سوف تظهر لك صفحة ضبط Cachet.

لنُلقِ نظرة على هذه الصّفحة.

الخطوة الثامنة: إنهاء الضّبط المبدئي لـCachet

يتمّ إنهاء ما تبقى من خطواتِِ لإعداد Cachet في الواجهة الرسوميّة (GUI) على مُتصفّحك، ما يشمل إعداد اسم الموقع و المنطقة الزمنية باﻹضافة إلى إنشاء حساب المدير. هناك ثلاث خطوات (إعداد البيئة، صفحة الحالة، وحساب المدير )، ويمكنك تغيير اﻹعدادات لاحقا في لوحة التحكم الخاصّة بـ Cachet.

ضبط البيئة

ضبط البيئة هي أول خطوة من إعدادات الضّبط.

تنبيه : إصدار Cachet الذي نستخدمه به علة تتمثل في عدم ظهور إعدادات البريد اﻹلكتروني على صفحة إعدادات البيئة، حتى لو قمت بضبطها مسبقا في env. سيتم حل هذا في اﻹصدار 2.4.

يجب ملء الحقول كما يلي :

  • Cache Driver يجب أن يكون (ACP(u.
  • Session Driver يجب أن يكون (ACP(u.
  • Mail Driver يجب أن يكون SMTP.
  • Mail Host يجب أن يكون عنوان بريد خادومك اﻹلكتروني. -Mail From Address يجب أن يكون عنوان البريد اﻹلكتروني الذي سترسل منه التنبيهات إلى المشتركين.
  • Mail Username يجب أن يكون مستخدم حساب SMTP (عادة بريدك اﻹلكتروني بأكمله). -Mail Password يجب أن يكون كلمة مرور حساب SMTP.

اضغط Next للذهاب إلى الخطوة التالية.

ضبط صفحة الحالة

في هذا القسم، سنضبط اسم الموقع، نطاق الموقع، المنطقة الزمنية، واللغة. مُلاحظة : تدعم Cachet العديد من اللغات، لكنها مشروع مجتمعي، ما يعني أنه قد تكون هناك نصوصً غير مترجمة في اللغات المغايرة للإنجليزية. يمكنك إلقاء نظرة على لائحة اللغات المدعومة، والنسبة المئوية للمحتوى المُترجَم (للأسف، فقد تُرجم 34% فقط إلى اللغة العربية في وقت ترجمة هذا الدّرس).

يجب ملء الحقول كما يلي:

  • Site Name: الاسم الذي سيظهر على لوحة التحكم
  • Site Domain: اسم النطاق FQDN الذي اخترته لـ Cachet
  • Select your timezone: اختر منطقة زمنية بناء على جمهورك. UTC خيار افتراضي جيد.
  • Select your language: اختر لغة واجهة Cachet.
  • Show support for Cachet: إذا اخترت هذا الخيار، ستظهر عبارة "Powered by Cachet” على تذييل (footer) لوحة التحكم العامّة.

اضغط Next للذهاب إلى الخطوة التالية.

ضبط حساب المدير

أخيرا، أنشئ حساب المدير. اختر اسم المستخدم، وأدخل بريدا إلكترونيا صحيحا، وكلمة مرور قوية. اضغط Complete Setup لحفظ جميع التغييرات.

إنهاء الضبط

على صفحة إنهاء الضبط Complete Setup، سيتم إعلامك بأنه قد تمّ إعداد Cachet بنجاح. يمكنك اﻵن الضغط على "Go to the dashboard” لتسجيل الدخول بمعلومات المدير خاصتك وزيارة لوحة تحكم Cachet.

بعد إنهاء الخطوات السّابقة، فإنّCachet اﻵن مضبوطة وتعمل بشكل كامل. الخطوة اﻷخيرة توضِّح كيفية ترقيتها في المستقبل.

الخطوة التاسعة: ترقية Cachet.

استعمال Git يجعل أمر الترقية سهلا للغاية عند صدور إصدار جديد من ـ Cachet. إذ كل ما عليك فعله هو الانتقال إلى الوسم المناسب وتشغيل تهجير قاعدة البيانات.

مُلاحظة: من الجيد دائما أخذ نُسخة احتياطيّة لـ Cachet وقاعدة بياناتها قبل محاولة ترقية اﻹصدار. وفي SQLite كل ما عليك فعله هو نسخ الملف database/database.sqlite إلى مكان آخر.

أوﻻ، تحوَّل إلى المستخدم cachet وانتقل إلى المُجلد الذي نُصِّبتْ فيه Cachet:

sudo su - cachet
cd /home/cachet/www

يمكنك تشغيل صفحة الصيانة إن اخترت ذلك:

php artisan down

اجلب شفرة Cachet الحديثة من GitHub:

git fetch --all

استعرض لائحة بجميع الوسوم المُتاحة:

git tag -l

سوف تظهر لك جميع الوسوم الحديثة التي تبدأ بحرف v. قد تلاحظ أنّ بعضا منها عبارة عن نُسخ تجريبيّة بيتا (beta) أو في حالة ترشيح للإطلاق (Release Candidate) أو ما يُعرف اختصارا بإصدارات RC. وﻷننا نعمل مع خادوم إنتاج (production server)، فيمكنك تجاهل هذه النّسخ واستعمال النّسخ المُستقرّة. يمكنك أيضا زيارة صفحة إصدارات Cachet لمعرفة أحدث وسم.

إن رغبت في استعمال وسم للترقية، استعمل Git للانتقال إليه. على سبيل المثال، إذا رغبت في ترقيّة Cachet إلى اﻹصدار 2.4.0، فستسعمل الأمر التّالي:

git checkout v2.4.0

أزل خبيئة Cachet قبل الاستمرار:

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

تاليا، قم بترقية اعتماديات Composer، والتي تحتوي عادة على إصلاح للعلل، تحسينات في اﻷداء، وميزات جديدة:

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

أخيرا، شغّل التهجير:

php artisan app:update

إذا شغّلت صفحة الصيانة، فيمكنك اﻵن تمكين الوصول مجددا:

php artisan up

اﻹصدار الجديد من Cachet سيعمل كما يجب.

خاتمة

قمتَ اﻵن بإعداد Cachet مع SSL مدعومة بقاعدة بيانات SQLite وتعلمتَ كيفية صيانتها وترقيتها باستخدام Git. يمكنك كذلك اختيار قواعد بيانات أخرى مثل MySQL أو PostgreSQL. لتعلم المزيد حول خيارات Cachet، تفقّد التوثيق الرسمي.

ترجمة -بتصرّف- للمقال How To Create a Status Page with Cachet on Debian 8 لصاحبته Achilleas Pipinellis.


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...