استقرار پروژه‌های Laravel

پروژه‌ی شما باید دارای فایلcomposer.jsonباشد تا بتواند در لیارا مستقر شود.
در حال حاظر، لیارا از Laravel > 5.1 پشتیبانی می‌کند.

شروع عملیات استقرار

در ابتدا مطمئن شوید که@liara/cliرا روی کامپیوترتان نصب کرده‌اید. اطلاعات بیشتر
سپس دستور زیر را داخل پروژه‌ی‌تان اجرا کنید:

liara deploy

امنیت

لاراول داده‌های حساس شما را رمزنگاری می‌کند. برای رمزنگاری نیاز به یک کلید دارد که شما باید آن را ایجاد کرده و از طریق پنل تنظیمات آن را در اختیار پروژه‌یتان قرار دهید. برای ایجاد یک کلید رمزنگاری، دستور زیر را در کامیپوتر خودتان و یا در محیط کنسول لیارا وارد نمایید.

php artisan key:generate --show

این دستور خروجی‌ای مانند کد زیر خواهد داشت:

base64:XZdGUGUxUjN0WJwI8FpYDyQFyKnmB8n8rX0oEkYTIa0=

کلیدی که برای شما تولید شده‌است را کپی کرده و در پنل تنظیمات پروژه‌یتان با عنوانAPP_KEYوارد کنید:

APP_KEY=base64:XZdGUGUxUjN0WJwI8FpYDyQFyKnmB8n8rX0oEkYTIa0=

هر پروژه‌ای یک بخش تنظیمات دارد که از طریق آن می‌توانید متغیرهای لازم را برای پروژه تعریف کنید. (اطلاعات بیشتر)

پکیج‌ها به صورت خودکار نصب می‌شوند

لیارا به صورت خودکار پکیج‌هایی که در فایل‌هایcomposer.jsonوpackage.jsonلیست شده‌اند را برای شما نصب می‌کند. پس نیازی ندارید که به دنبال اجرای دستوراتcomposer installو یاnpm installباشید. از آن‌جایی که اجرای این دستورات زمان‌بر است، برای سرعت بیشتر، این دستورات را روی سرورهای قدرتمندمان اجرا می‌کنیم تا زمان زیادی را منتظر نمانید.

فایل‌های CSS و JS به صورت خودکار build می‌شوند

همان‌طور که اطلاع دارید، در پروژه‌های لاراولی با اجرای دستورnpm run productionفایل‌های SASS به CSS تبدیل می‌شوند و همین‌طور کدهای جاوا اسکریپت ES6 به بالا به ES5 تبدیل شده و یک‌پارچه می‌شوند.
هر زمان که پروژه‌ی‌تان را روی لیارا مستقر می‌کنید، ما این دستور را برای‌تان اجرا می‌کنیم تا مطمئن شویم که فایل‌های CSS و JS شما به صورت صحیح در اختیار کاربران‌تان قرار گیرند.

تنظیمات TrustedProxies

تمامی درخواست‌ها به سمت پروژه‌ی شما توسط Reverse proxy های لیارا هدایت می‌شوند. برای این که در پروژه‌ی‌تان بتوانید به آی‌پی واقعی کاربر دسترسی داشته باشید و یا این که از قابلیت Signed URL های Laravel استفاده کنید، لازم است که تغییراتی را در فایلapp/Http/Middleware/TrustProxies.phpاعمال کنید.

در این فایل، یک متغیر با نام$proxiesوجود دارد. فقط کافیست که مقدار آن را به*تغییر دهید.

<?php

namespace AppHttpMiddleware;

use IlluminateHttpRequest;
use FideloperProxyTrustProxies as Middleware;

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array|string
     */
    protected $proxies = '*';

    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}

اتصال به دیتابیس

شما می‌توانید از بخش «دیتابیس‌ها»، یک دیتابیس MySQL یا MongoDB ایجاد کنید. بعد از ایجاد دیتابیس، در لیست دیتابیس‌ها، روی دیتابیس موردنظرتان کلیک کنید تا اطلاعات اتصال به آن برای‌تان نمایش داده شود.
هر پروژه‌ای یک بخش تنظیمات دارد که از طریق آن می‌توانید متغیرهای لازم را برای پروژه تعریف کنید. (اطلاعات بیشتر)
برای این‌که پروژه‌ی‌ شما بتواند به دیتابیسی که ساختید متصل شود، باید متغیرهای زیر را ایجاد کرده و مقدار دهی کنید:

DB_CONNECTION=mysql
DB_HOST=s1.liara.ir
DB_PORT=12345
DB_DATABASE=my_database
DB_USERNAME=root
DB_PASSWORD=123456

توجه کنید که متغیرهای بالا، صرفا جهت نمونه آورده شده‌اند و شما باید مقادیر را با اطلاعات دیتابیسی که ساختید پر کنید.
نکته‌ی دیگری که باید به آن توجه کنید این است که در مثال بالا، فرض بر این بوده است که شما به سرور دیتابیس‌تان متصل شده و یک دیتابیس با نامmy_databaseساخته‌اید.

اجرای Migration ها

از آن‌جایی که کنترل تغییرات دیتابیس باید در اختیار خود شما باشد، ما migration ها را اجرا نمی‌کنیم و شما باید هر زمان که نیاز داشتید آن‌ها را اجرا کنید.
برای اجرا migration ها، کافیست به کنسول پروژه‌ی‌تان متصل شوید (اطلاعات بیشتر درمورد کنسول) و دستور مربوطه را اجرا کنید:

php artisan migrate

ذخیره‌ی فایل‌ها

لیارا یک فضای ابری نامحدود برای ذخیره‌ی فایل‌هایتان در اختیار شما قرار می‌دهد.
فقط کافیست که SDK لیارا را در پروژه‌یتان نصب کرده و شروع به استفاده کنید. اطلاعات بیشتر

شخصی‌سازی تنظیمات php.ini

از طریق ایجاد یک فایل با نامliara_php.iniداخل ریشه‌ی پروژه‌ی‌تان می‌توانید تنظیمات PHP را شخصی‌سازی کنید. برای مثال، ممکن است بخواهید که حداکثر حجم مجاز برای آپلود فایل در سایت لاراولی‌تان را شخصی‌سازی کنید. پس لازم است که فایلliara_php.iniرا به پروژه‌ی‌تان اضافه کرده و محتویات آن را برابر تکه‌کد قرار دهید:

file_uploads = On
memory_limit = 128M
upload_max_filesize = 64M
post_max_size = 128M
max_execution_time = 600

و حالا با اجرای دستورliara deployتنظیمات شما روی سرور قرار می‌گیرد.

ایجاد CronJob

گاهی اوقات نیاز است کار خاصی در زمان خاصی و به صورت دوره‌ای انجام شود، مثلا تهیه‌ی فایل پشتیبان از پایگاه داده، ارسال ایمیل و خبرنامه و کارهایی نظیر این. برای تعریف کران‌جاب‌هایتان، می‌توانید فیدی به نامcronرا به فایل liara.json پروژه‌ی‌تان اضافه کنید.

{
  "cron": [
    "* * * * * cd $ROOT && php artisan schedule:run >> /dev/null 2>&1"
  ]
}

همان‌طور که مشاهده می‌کنید، فیلدcronیک آرایه است و این یعنی می‌توانید یک یا چند کران‌جاب تعریف کنید.

کار با Queue ها

یکی از امکانات مهم Laravel، قابلیت تعریف صف (Queue) است. از امروز از این قابلیت لاراول هم پشتیبانی می‌کنیم. در پتلفرم لاراول، Supervisor نصب شده و شما با ایجاد یک فایل به نام supervisor.conf در ریشه‌ی پروژه‌تان، می‌توانید تنظیمات صف‌های مختلف‌تان را در آن وارد کنید. و در نهایت با یک‌بار دیپلوی‌کردن، صف‌های شما شروع به کار خواهند کرد.

Supervisor برنامه‌ی بسیار مفیدی است که سعی می‌کند صف‌های شما را همیشه در حال اجرا نگه‌دارد. اگر به هر دلیلی صف‌های‌تان به خطا بخورند و خاموش شوند، Supervisor آن‌ها را دوباره ایجاد و فعال می‌کند.

از بخش خط فرمان (کنسول) پروژه‌ی‌تان هم می‌توانید با supervisorctl کار کنید و وضعیت صف‌های‌تان را مشاهده کنید.

$ supervisorctl status

یک نمونه کانفیگ ساده برای یک صف با نام sms که وظیفه‌ی ارسال پیامک به کاربران را به عهده دارد:

[program:scheduler]
process_name=%(program_name)s_%(process_num)02d
command=php $ROOT/artisan queue:work --queue=sms --tries=3
autostart=true
autorestart=true
numprocs=1
user=www-data
redirect_stderr=true
stdout_logfile=/tmp/sms-queue.log

برای اطلاعات بیشتر می‌توانید به لینک‌های زیر مراجعه کنید:

لیست اکستنشن‌های نصب شده

در پلتفرم لاراول، اکستنشن‌های PHP زیر نصب شده‌اند:

[PHP Modules]
amqp
apcu
bcmath
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
gmp
gnupg
hash
iconv
igbinary
imagick
imap
intl
json
ldap
libxml
mbstring
mcrypt
memcached
mongodb
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_dblib
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
posix
readline
redis
Reflection
session
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache