Interim CTO / Back-End/API - Developer/ DevOps Engineer/ @full_stack_developer
راه اندازی پروژه لاراول روی هاست اشتراکی
ممکن است گاهی بنا به دلایلی از جمله خواست مشتری یا پرداخت هزینه کمتر مجبور به استفاده از هاست های اشتراکی باشید ؛ کسانی که برای اولین بار قصد دارند پروژه لاراولی خود را در هاست اشتراکی نصب و اجرا کنند به احتمال زیاد دچار مشکلاتی خواهند شد که ممکن است آنها را به شدت کلافه و عصبی کند . در این آموزش قصد دارم به شما نحوه نصب پروژه لاراولی خود در هاست های اشتراکی را به صورت گام به گام آموزش دهم و همچنین شما را با مشکلاتی که ممکن است با آن مواجه شوید و راه حل آنها آشنا کنم .
هر نسخه از لاراول برای اجرا به حداقل نسخه ای از 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',
),
),
),
مطلبی دیگر از این انتشارات
Laravel Mobile Verification
مطلبی دیگر از این انتشارات
ارسال نوتیفیکیشن با استفاده از وان سیگنال در لاراول - ۰
مطلبی دیگر از این انتشارات
ریفکتورینگ - بدهی فنی ( Refactoring - Technical debt) – بخش دوم