Mahdyar's Blog

My Thoughts

آپلود پروژهٔ لاراول و امن‌کردن آن روی هاست سی‌پنل

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

نکته: اگر قادر به پرداخت هزینهٔ سرور هستید یا پروژه‌تون بزرگ حساب می‌شه، پیشنهاد مهدیار، خرید سرور و استفاده از داکر هست.

نکته: این آموزش با لاراول ۸ امتحان شده.

۱. فشرده‌سازی پروژه

اولین قدم، زیپ‌کردن پوشهٔ پروژه هست‌ش. برای این‌کار، نیازی به زیپ کردن فایل‌ها/پوشه‌های زیر ندارید:

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 در phpmyadmin

فایل .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 رو ۶۰۰ قرار بدید:

تنظیم سطح دسترسی در آپلود پروژهٔ لاراول

و تمام!

ما انجام‌ش دادیم!