اگر یک پروژهٔ لاراول دارید که حالا توسعهٔ اون تموم شده و میخواید اون رو روی محیط پروداکشن ببرید، میتونید به جای خرید سرور، از روش آپلود پروژهٔ لاراول روی هاست سیپنل استفاده کنید. آپلود کردن و انجام یک سری تنظیمات امنیتی بعد از آپلود روی سیپنل آسونتر از چیزیه که فکرشو میکنید!
نکته: اگر قادر به پرداخت هزینهٔ سرور هستید یا پروژهتون بزرگ حساب میشه، پیشنهاد مهدیار، خرید سرور و استفاده از داکر هست.
نکته: این آموزش با لاراول ۸ امتحان شده.
۱. فشردهسازی پروژه
اولین قدم، زیپکردن پوشهٔ پروژه هستش. برای اینکار، نیازی به زیپ کردن فایلها/پوشههای زیر ندارید:
tests/
node_modules/
artisan
package.json
package-lock.json
webpack.mix.js
.env.example
.git/
.gitignore
همچنین حتماً حواستون باشه که فایل «env.» رو فراموش نکنید.
۲. خروجی گرفتن از دیتابیس (MySQL)
برای اینکار، با استفاده از دستور زیر میتونید از دیتابیستون خروجی بگیرید:
$ mysqldump -u DB_USERNAME -p DB_DATABASE > db.sql
بعد از وارد کردن دستور، از شما رمز یوزر پرسیده میشه و یک فایل .sql دریافت میکنید.
داخل سیپنل دیتابیس و یوزر MySQL رو بسازید و یوزر رو به دیتابیس با همهی دسترسیها (ALL PRIVILEGES) اضافه کنید.
حالا وارد phpmyadmin بشید و دیتابیستون رو از سایدبار سمت چپ انتخاب کنید، از منوی بالا «import» رو انتخاب کنید:

فایل .sql رو انتخاب کنید، بقیهٔ تنظیمات رو هم مثل عکس بالا اعمال کنید و دکمهٔ «Go» رو بزنید!
۳. آپلود پروژهٔ لاراول
وارد مسیری بشید که دوست دارید پروژهتون رو آپلود کنید، با این آموزش میتونید پروژه لاراولتون رو روی سابدامینتون هم بالا بیارید و پروژهتون رو آپلود کنید.
فایل زیپ رو اکسترکت کنید، محتوای پوشهٔ public رو move کنید به پوشهٔ والدش. مثلاً از:
/mahdyar.me/public
به:
/mahdyar.me
منتقل کنید.
همچنین مشخصات دیتابیس و یوزر MySQLتون رو هم داخل فایل .env وارد کنید.
۴. حل مشکل صفحهٔ سفید بعد از آپلود پروژهٔ لاراول
الآن اگر سایتتون رو چک کنید، یک صفحهٔ سفید میبینید، برای حلش باید مسیر فایلهامون رو اصلاح کنیم، فایل index.php رو باز کنید:
<?php
...
if (file_exists(__DIR__.'/../storage/framework/maintenance.php')) {
require __DIR__.'/../storage/framework/maintenance.php';
}
...
require __DIR__.'/../vendor/autoload.php';
...
$app = require_once __DIR__.'/../bootstrap/app.php';
...
و مثل فایل زیر تغییرش بدید:
<?php
...
if (file_exists(__DIR__.'/storage/framework/maintenance.php')) {
require __DIR__.'/storage/framework/maintenance.php';
}
...
require __DIR__.'/vendor/autoload.php';
...
$app = require_once __DIR__.'/bootstrap/app.php';
...
اگر مراحل رو تا الآن به درستی انجام داده باشید، پروژهتون باید به درستی نمایش داده بشه. 🙂
نکته: اگر قبل از اصلاح فایل index.php سایت رو لود کرده باشید، احتمالاً یک «error_log» هم تولید کردید، اون رو پاک کنید.
۵. تنظیمات امنیتی
برای اینکه پروژهمون رو امنتر کنیم، باید یک سری کار انجام بدیم. اولین کار اینه که داخل فایل .env حالت اشکالزدایی(دیباگ) رو غیرفعال کنیم:
APP_DEBUG=false
با غیر فعال کردن حالت اشکالزدایی، دیگه لاراول لاگهامون رو به همه نشون نمیده.
قدم بعدی، تنظیم سطحِ دسترسی برای فایل .env هستش، چون احتمال زیاد اگر الآن به آدرس زیر برید میتونید دانلودش کنید:
example.com/.env
برای جلوگیری از اینکار، سطحِ دسترسی فایل .env رو ۶۰۰ قرار بدید:

و تمام!
