نصب لاراول روی هاست (هاست اشتراکی)


سلاااام قبل از اینکه این مقاله رو بخونید باید یاداوری کنم که داخل ورژن جدید لاراول نیازی به ویرایش فایل .htaccess نداریم و اون بخش از مقاله رو میتونید نخونید
همچنین این آموزش رو به صورت ویدیو میتونید از لینک زیر داخل کانال یوتیوب من نیز مشاهده کنید
https://youtu.be/pquht_wBXWs

امکان داره گاهی اوقات به دلایلی برای میزبانی سایتی که با laravel توسعه دادید قصد استفاده از هاست به جای سرور رو داشته باشید!!!

  • اگر تازه با این فریم ورک اشنا شدید و در حال یادگیری هستید و دوست دارید دست رنجتون رو روی اینترنت مشاهده کنید .
  • یا اینکه پروژتون نیاز به منابع زیادی نداره .
  • یا حتی منابع مالی شما یا مشتریتون جوابگوی تهیه سرور مجازی (vps) نیست ?‍♂️

منم مثل تمامی کسایی که برای اولین بار سعی داشتن از لاراول روی یک هاست استفاده کنند حسابی خسته و کلافه شدم ? که با ویرایش فایل .htaccess تمام مشکلات بر طرف شد . توی این مقاله آموزش نصب و راه اندازی لاراول رو روی یک هاست ارائه میدم .


در وهله اول حتما دقت کنید هاست لاراول تهیه کنید تا دسترسی به ترمینال داشته باشید (اگر عادت دارید توی توسعه پروژتون از دستورات خط فرمان استفاده کند مثل دستورات artisan نبودش حتما اذیتتون میکنه! )

خب بدون شک اگر تا الان از هاست های اشتراکی استفاده کرده باشید میدونید که تمامی فایل های پروژتون رو باید داخل پوشه public_html داخل هاست آپلود کنید

برای نصب لاراول روی هاست داخل مسیر root هاست قبل از اینکه وارد پوشه public_html بشید یک پوشه بسازید . انتخاب اسم این پوشه اختیاری هستش ولی خب مناسب تره یک اسم مرتبط انتخاب کنید من اینجا اسم پوشه رو laravel گذاشتم .

سپس تمام فایل های پروژه تون رو از طریق ftp یا سی پنل داخل پوشه laravel آپلود کنید .

بعد از اینکه تمامی فایل ها آپلود شد تمام محتویات پوشه public پروژمون که داخل پوشه laravel هست رو باید به پوشه public_html هاست منتقل کنیم

حالا باید فایل index.php داخل پوشه public_html رو ویرایش کنیم

داخل این پوشه دوتا آدرس به شکل زیر وجود داره

require __DIR__.'/../bootstrap/autoload.php';

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


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

require __DIR__.'/../laravel/bootstrap/autoload.php';

$app = require_once __DIR__.'/../laravel/bootstrap/app.

حالا میتونید پروژه لاراولیتون رو مشاهده کنید !

امکان داره بعد از اینکه تمامی این مراحل رو اجرا کردید وقتی به ادرس سایتتون مراجعه میکنید به جز صفحه اولیه سایتتون تمامی صفحات خطای 404 رو به شما نمایش بده که میتونید بعد از خوشحالی باز شدن صفحه اول سایت حسابی حالتون رو بگیره ??‍♂️
برای اینکه با این خطا مواجه نشید کافیه به فایل .htaccess داخل پوشه public_html چند خط کد زیر رو اضافه کنید (فراموش نکنید که این فایل مخفی هست و برای مشاهده این فایل باید روی دکمه settings گوشه سمت راست فایل منیجر داخل سی پنل زده و گزینه Show Hidden Files (dotfiles) رو انتخاب کنید ) اگر این فایل داخل پوشه public_html وجود نداشت میتونید خودتون فایل رو بسازید و کد های زیر رو داخلش بنویسید .

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
     RewriteCond %{REQUEST_FILENAME} !-d
     RewriteCond %{REQUEST_FILENAME} !-f
     RewriteRule ^ index.php [L]
</IfModule>

خب مشکل خطای 404 هم برطرف شدش و حالا فقط لازمه که دیتابیستون هم ایجاد کنید .

برای این کار لازمه داخل سی پنل یک دیتابیس بسازید و اطلاعات دیتابیستون شامل اسم دیتابیس ، نام کاربری و رمز دیتابیستون رو داخل فایل .env که داخل پوشه laravel هست ویرایش یا اضافه کنید. اگر هاست لاراول تهیه کردید و دسترسی به ترمینال دارید که میتونید دستور php artisan migrate رو اجرا کنید تا جداول دیتابیستون همونطور که مایگریشن هاتون رو ایجاد کردید ساخته بشه در غیر این صورت کافیه از دیتابیستون داخل phpmyadmin لوکال هاستتون یک خروجی بگیرید و داخل هاستتون داخل سی پنل import کنید

حالا ارتباط سایتتون با دیتابیس و جداول آن برقراره و بدون مشکل میتونید از سایتتون بهره برداری کنید?

اگر در قسمتی از وبسایتتون تصویر و یا هر فایلی رو آپلود میکنید بدون شک مسیر آپلود فایل رو داخل پوشه public پروژتون مشخص کردید

برای اینکه موقع آپلود کردن فایل فایل داخل پوشه laravel>public آپلود نشه و در واقع داخل پوشه public_html آپلود بشه لازم هست زیر خط

$app = require_once __DIR__.'/../laravel/bootstrap/app.

داخل فایل index.php خط زیر را اضافه کنید

$app->bind('path.public', function() {
           return __DIR__;
});