رضا
رضا
خواندن ۲ دقیقه·۴ سال پیش

روش صحیح آپلود لاراول در هاست اشتراکی

هاست اشتراکی ارزان ترین سرویس برای آپلود یک وبسایت است. در هاست اشتراکی شما هیچگونه دسترسی مستقیم به سرور نخواهید داشت و تنها راه ارتباطی شما با سرور استفاده از پروتکل FTP و یا سیستم مدیریت فایل (Direct Admin, Plesk و ...) نصب شده توسط شرکت هاستینگ است.

هاست مناسب برای لاراول یک هاست لینوکسی است که با توجه به ورژن لاراول, ورژن مناسب php و mysql بر روی آن نصب شده باشد.

لاراول باید به حالت انتشار (Production) آپلود شود. آپلود پروژه در حالت توسعه به شدت خطرناک است و راه نفوذ برای دیگران را باز میگذارد. در مستندات لاراول توضیحات کاملی در این باره داده شده که در این مقاله قدم به قدم و متناسب شده با هاست اشتراکی توضیح داده میشوند.

در هاست شتراکی هیچگونه دسترسی مستقیم به command line امکان پذیر نیست (پروتکل ssh بسته است) و به همین دلیل مجبوریم قسمتی از آماده سازی را بر روی سیستم خود و به صورت local انجام بدهیم.

در ابتدا پکیج های مورد نیاز را توسط composer نصب میکنیم. در اینجا باید دقت کرد که فقط باید پکیج هایی که در قسمت require فایل composer.json قرار دارند را نصب کنیم, برای این کار دستور زیر را در فولدر پروژه اجرا میکنیم

composer install --optimize-autoloader --no-dev

مرحله بعدی ایجاد جداول در دیتابیس است و همچنین با توجه به مستندات باید متغییر های env, کلیه فایل های view و route ها را برای پرفورمنس بهتر cache کنیم همچنین مقدار متغییر APP_DEBUG را false و APP_ENV را production قرار دهیم.

همه ی موارد بالا با استفاده از اجرای دستورات در command line اجرا می شوند و تنها راه برای اجرای آنها در هاست اشتراکی استفاده از یکی از Facade های جالب لاراول به نام Artisan است که با فراخوانی متد call آن می توانیم دستورات مختلف artisan را اجرا کنیم.

پیشنهاد من برای این کار افزودن یک route است که هنگام فراخوانی در صورتی که مقدار APP_DEBUG = true باشد دستورات لازم را اجرا میکند و در انتها مقدار APP_DEBUG را false میکند تا در صورت فراخوانی دوباره و ناخواسته خطای ۴۰۴ برگردانده شود.

این route را اضافه میکنیم

Route::get('/deploy', 'DeployController@deploy');

سپس DeployController را به صورت زیر پیاده سازی میکنیم

https://gist.github.com/thrashzone13/aaf951cc43c06867f098f213bc430ae0

حالا تمامی فایل های پروژه به همراه پوشه vendor را zip میکنیم در سیستم مدیریت فایل هاست فولدری با نام project (یا هر نام دلخواه دیگری) میسازیم و فایل zip را در آن آپلود و unzip میکنیم, سپس تمامی فایل های درون فولدر public را به فولدر public_html منتقل میکنیم.

حال باید مسیر فراخوانی فایل autoload.php را به صورت زیر

require __DIR__.'/../project/vendor/autoload.php';

همچنین فراخوانی فایل app.php را به این شکل

$app = require_once __DIR__.'/../project/bootstrap/app.php';

در داخل فایل index.php تغییر دهیم و بعد از آن به سراغ فایل server.php در فولدر project رفته و مسیر فراخوانی index.php را نیز به صورت زیر تغییر میدهیم

require_once __DIR__.'/../public_html/index.php';

وارد phpmyadmin هاست خود شوید و بعد از ساخت کاربر و دیتابیس مورد نظر اطلاعات دیتابیس را در فایل env. وارد کنید. توجه داشته باشید مقدار APP_DEBUG = true و APP_ENV = production باشد.

مسیر deploy که پیشتر ساختیم را در مرورگر فراخوانی کنید کار تمام است /m\

لاراولآپلود لاراولهاست اشتراکیآپلود لاراول در هاست اشتراکی
مشغول کُشتن زامبی‌ها
شاید از این پست‌ها خوشتان بیاید