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

ممکن است گاهی بنا به دلایلی از جمله خواست مشتری یا پرداخت هزینه کمتر مجبور به استفاده از هاست های اشتراکی باشید ؛ کسانی که برای اولین بار قصد دارند پروژه لاراولی خود را در هاست اشتراکی نصب و اجرا کنند به احتمال زیاد دچار مشکلاتی خواهند شد که ممکن است آنها را به شدت کلافه و عصبی کند . در این آموزش قصد دارم به شما نحوه نصب پروژه لاراولی خود در هاست های اشتراکی را به صورت گام به گام آموزش دهم و همچنین شما را با مشکلاتی که ممکن است با آن مواجه شوید و راه حل آنها آشنا کنم . هر نسخه از لاراول برای اجرا به حداقل نسخه ای از PHP­­­­­ و همچنین­ extention های Tokenizer ، ­ Mbstring­ ، PDO ، OpenSSL­ و XML­ نیاز دارد پس در هنگام خرید هاست به این موارد­ دقت کنید .به پنل مدیریتی هاست خود رفته و سپس File Manager هاست خود را باز کنید ؛ اگر شما در حال مشاهده Root هاست خود باشید پس باید پوشه ها و فایل هایی همانند زیر در آن ببینید :/.php /backups /domains /imap /Maildir /public_html .bash_logout .bash_profile . . .توجه : ممکن است ساختار پوشه بندی هاست شما کمی متفاوت باشد . درصورتی که از طریق FTP به هاست خود متصل شده اید ، به Root هاست خود رفته و گام به گام همه مراحل را طی کنید .حال یک پوشه با نام دلخواه به طور مثال LaravelApp در مسیر domain/YourDomain.ir/. همانند زیر بسازید :/.php /backups /domains /YourDomain.ir /.htpasswd /logs /private_html /public_html /stats /LaravelApp /imap . . .حال در پوشه LaravelApp که تازه آن را ایجاد کرده اید پروژه لاراول خود را به طور کامل آپلود کنید : /.php /backups /domains /YourDomain.ir /.htpasswd /logs /private_html /public_html /stats /LaravelApp /app /bootstrap /config /database . . . /imap . . .بعد از آپلود پروژه ، باید تمام محتویات پوشه public پروژه خود را به پوشه public_html هاست انتقال دهید :/.php /backups /domains /YourDomain.ir /.htpasswd /logs /private_html /public_html /css /js .htaccess index.php . . . /stats /LaravelApp /app /bootstrap /config /database . . . /imap . . .بعد از انجام این مراحل ما باید آدرس های موجود در فایل index.php را با توجه به ساختار و پوشه بندی جدید تغییر دهیم ؛ برای اینکار به پوشه public_html هاست خود رفته و فایل index.php را باز کنید و سپس دو خط زیر را در آن بیابید : require __DIR__.'/../bootstrap/autoload.php'; $app = require_once __DIR__.'/../bootstrap/app.php';حال این آدرس ها را با توجه به نام پوشه ای که ایجاد کردید یعنی LaravelApp به صورت زیر تغییر دهید :require __DIR__.'/../LaravelApp/bootstrap/autoload.php'; $app = require_once __DIR__.'/../LaravelApp/bootstrap/app.php';حال باید پروژه لاراولی شما بدون خطا و به درستی اجرا شود . توجه : اکثر هاست های اشتراکی اجازه ی استفاده از فایل env. را به شما نمیدهند و با وجود بودن آن هم شاهد اجرای آن نخواهید بود و پروژه لاراولی شما اجرا نخواهد شد و به مشکل برخواهید خورد . برای حل عدم اجازه استفاده از فایل env. در هاست های اشتراکی میتوانید به راحتی تمام مقادیر درون این فایل را مستقیما در فایل های config پروژه خود وارد کنید . فایل های مربوط به config­­ پروژه خود را میتوانید در مسیر domain/YourDomain.ir/LaravelApp/config/. در هاست خود بیابید .به طور مثال برای وارد کردن تنظیمات مربوط به دیتابیس پروژه خود کافی است به پوشه config پروژه خود که در بالا آدرس آن گفته شد مراجعه کنید و فایل database.php باز کنید : <?phpreturn [ 'default' => env('DB_CONNECTION', 'mysql'), 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', ], ], 'migrations' => 'migrations', 'redis' => [ 'client' => 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ];حال با توجه به نوع دیتابیسی که استفاده میکنید اطلاعات مربوط به آن را به صورت دستی وارد کنید ؛ یعنی به طور مثال اگر از دیتابیس mysql استفاده میکنید باید فایل فوق را همانند زیر با توجه به اطلاعات دیتابیس خود تغییر دهید : <?phpreturn [ 'default' => 'mysql', 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database.sqlite')), 'prefix' => '', ], 'mysql' => [ 'driver' => 'mysql', 'host' => 'Database_Address', 'port' => '3306', 'database' => 'Database_Name', 'username' => 'Database_UserName', 'password' => 'Database_Password', 'unix_socket' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], 'pgsql' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '5432'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', ], 'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '1433'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', ], ], 'migrations' => 'migrations', 'redis' => [ 'client' => 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ];توجه : باید به جای مقادیر Database_Address و Database_Name و Database_UserName و Database_Password اطلاعات مربوط به دیتابیس mysql خود را وارد کنید . حال همانند فوق تمامی مقادیر درون فایل env. پروژه خود را درون فایل مربوط به خود در پوشه config پروژه وارد نمایید ؛ بعد از اتمام اینکار درصورت انجام درست تمامی مراحل فوق باید پروژه لاراولی شما بدون هیچ مشکلی اجرا شود . اگر با مشکل ذخیره فایل و یا session ها مواجه شدید مسیر های زیر را در فایل bootstrap/config/cache.php اصلاح کنید : Project Path : /domains/domain_name.com/{project_name} Storage Path:array ( 'default' => 'local', 'cloud' => 's3', 'disks' => array ( 'local' => array ( 'driver' => 'local', 'root' => './../../public_html/api', 'visibility' => 'public', ), 'public' => array ( 'driver' => 'local', 'root' => '/../../{project_name}/storage/app/public', 'visibility' => 'public', ), 's3' => array ( 'driver' => 's3', 'key' => 'your-key', 'secret' => 'your-secret', 'region' => 'your-region', 'bucket' => 'your-bucket', ), ), ),