دیپلای لاراول اپلیکیشن روی هاست اشتراکی

منبع
منبع

قبل از همه چیز باید بگم که تا جایی که ممکن هست برای پروژه های جدیتون این کار رو نکنید. ولی خوب بعضی وقتا لازم هست که سایت رو برای دمو یا چیزایی مثل این بندازید روی یه هاست ارزون و کارتون رو راه بندازین. خود چیزی هم که اینجا میخونید تقریبا ترجمه Deploying Laravel 5 applications on shared hosting without the use of SSH و بعضی تجربیات خودم هست.

خوب برای راه اندازی سایت روی هاست دو تا راهکار دارید. یکیش اینکه سایت رو بندازید توی پوشه www و فایل index.php رو از پوشه پابلیک بیارید توی روت پروژه. این کار مشکلی که داره اینه که وقتی فایل ایندکس رو میارید روت دسترسی به بقیه جاها راحت میشه و مشکل امنیتی داره. راه دیگه هم چیزیه که توی این نوشته قراره توضیح داده میشه.

آپلود سایت

فرض میکنیم ما پروژه ای رو با اسم laravel50 توسعه دادیم و الان میخوایم آپلودش کنیم روی هاست.

ساختار پروژه
ساختار پروژه

۱. پروژه رو با همه فایل هاش (حتی htaccess.) کامپرس کنید

۲. برید به سی پنل یا هر پنل دیگه ای دارید

۳. روی File manager و بعدا روی Upload کلیک کنید

۴. فایل کامپرس شده رو آپلود کنید

۵. فایل رو دی کامپرس کنید توی روت هاست ( نه توی www یا public_html)

پوشه laravel50 در روت هاست
پوشه laravel50 در روت هاست

۶. خوب حالا محتوای دایرکتوری public توی پروژه رو انتقال بدید به public_html خود هاست.

۷. حالا باید جای جدید پروژه رو به فایل ایندکس بگیم. فایل index.php رو باز کنید و خطوط:

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

رو به

require __DIR__.'/../laravel50/bootstrap/autoload.php';
 ...
 $app = require_once __DIR__.'/../laravel50/bootstrap/app.php';

نکته: به جای laravel50 باید اسم پروژتون رو بنویسید.

۸. حالا برای اینکه لینک ها درست کار کنن باید htaccess. رو تغییر بدیم.

<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>

۹. اگه همه چیز اوکی بود میتونید با رفتن به آدرس سایتتون باید به صورت موفقیت آمیزی ارور دیتابیس رو ببینید.

پایگاه داده

برای پایگاه داده اول باید یه اکسپورت از دیتابیس لوکال بگیریم. هر cpanel معمولا یک phpMyAdmin داره. بازش کنید و یه دیتابیس بسازید. اکسپورتی که گرفتید رو توی دیتابیسی که ساختید ایمپورت کنید.

حالا باید برید به config/database.php و مشخصات دیتابیس جدید رو بهش بدید.



به روز رسانی ۱: آپلود کردن و گرفتن فایل از هاست

برای اینکه دیگه شورت کاتی به استوریج وجود نداره بنابراین باید فایل ها مستقیم توی قسمت پابلیک آپلود و از اونجا هم خونده بشه. برای این کار توی دایرکتوری کانفیگ filesystems.php رو باز کنید و این تغییرات رو توش بدید:

 'disks' => [
       'local' => [
                   'driver' => 'local',
                   'root' => "/your/storage/in/public_html",
                   'url' => env('APP_URL').'/public/storage',
       ],
        'public' => [
                    'driver' => 'local',
                    'root' => storage_path('/app/public'),
                    'url' => env('APP_URL').'/public/storage',
                    'visibility' => 'public',
         ],
         's3' => [
                    'driver' => 's3',
                    'key' => env('AWS_ACCESS_KEY_ID'),
                    'secret' => env('AWS_SECRET_ACCESS_KEY'),
                    'region' => env('AWS_DEFAULT_REGION'),
                    'bucket' => env('AWS_BUCKET'),
                    'url' => env('AWS_URL'),
         ],
  ],