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',
),
),
),
مطلبی دیگر از این انتشارات
چرا فالکون یکی از محبوب ترین فریم ورک های php است؟
مطلبی دیگر از این انتشارات
راهنمای سریع کتابخانهی mPDF (ساختن PDF در php)
مطلبی دیگر از این انتشارات
چگونه از branch برای مدیریت کدها در گیت استفاده کنیم؟