将Laravel 5.6项目部署到共享主机

时间:2018-09-09 13:35:38

标签: php laravel web-deployment laravel-5.6

在共享主机上部署laravel 5.6项目时,我遇到了一个主要问题,看来我的刀片无法正常工作。我已将所有项目文件复制到根目录中的新文件夹“ muxproject”,然后将laravel项目的公共文件夹中的所有文件复制到public_html,并按如下所示更改了index.php文件

<?php
define('LARAVEL_START', microtime(true));

require __DIR__.'/../muxproject/vendor/autoload.php'; //changed

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

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

当我导航到链接http://example.com/时,根据我在web.php中的逻辑,将出现一个登录页面,并要求登录成功后将用户重定向到链接http://example.com/home,这里没有问题但是当我导航到http://example.com/register时,除了页眉,页脚和侧边栏之外,什么都没有加载,我的注册页面没有出现。 http://example.com/branchhttp://example.com/userbranch的情况相同 以下是我的web.php文件的代码

<?php

Route::middleware(['auth'])->group(function (){
    Route::get('/home', 'HomeController@index')->name('home');
    Route::get('/branch','Branch\BranchController@index')->name('index');
    Route::get('/userbranch','Branch\UserBranchController@index')->name('index');
    Route::get('/course', 'Course\CourseMasterController@index')->name('index');
    Route::get('/coursedetail','Course\CourseDetailController@index')->name('idex');
    Route::get('/studentenquiry','Enquiry\StudentEnquiryController@index')->name('index');
});

Route::get('/', function () {
    if(\Illuminate\Support\Facades\Auth::check())
        return view('home');
    return view('welcome');
});

Auth::routes();
Route::get('delete/{id}','Auth\RegisterController@destroy');
Route::patch('update','Auth\RegisterController@update')->name('update');

Route::patch('/update/branch','Branch\BranchController@update')->name('update');
Route::post('/storebranch','Branch\BranchController@store')->name('store');
Route::post('/storebranchuser', 'Branch\UserBranchController@store')->name('store');
Route::get('/delete/branch/{id}','Branch\BranchController@destroy');
Route::get('/userbranch/delete/{id}', 'Branch\UserBranchController@destroy');
Route::patch('/update/userbranch','Branch\UserBranchController@update')->name('update');
Route::post('/storecourse','Course\CourseMasterController@store')->name('store');
Route::get('delete/course/{id}','Course\CourseMasterController@destroy');
Route::patch('update/course', 'Course\CourseMasterController@update')->name('update');

以下是RegisterUsersController显示注册表格的代码

public function showRegistrationForm()
    {
        $userData = \App\User::all();
        return view('auth.register',compact('userData'));
    }

@section('content')
 //
@endsection

我刀片中的内容之间的内容register.blade.php,branch.blade.php和 userbranch.blade.php无法正常工作,我只有一个空页面,但共享主机上的页眉,页脚和侧边栏除外。

下面是.htaccess文件的代码

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

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

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

在这方面请帮我,我已经看了很多教程,我只是发现由于某些原因,@ section('content')之间的代码没有加载;

1 个答案:

答案 0 :(得分:0)

为什么要复制文件并粘贴到共享主机中并更改laravel的默认文件?

我认为您应该阅读此答案并理解然后部署您的项目

您可以通过两种方式完成此操作

第一种方式(推荐,但花点时间学习):

1-您应该学习如何使用 git (version control system) 。当您了解它之后,就可以将laravel项目保存在git服务器上。在学习git时,您将了解有关克隆的知识,它将使您可以将项目从git下载到任何服务器,任何计算机上。一开始可能很难理解,但请相信我,它非常有用,您应该使用它。访问github.comgitlab.combitbucket.com

2-当您学习了如何使用git之后,将代码保存到git中。然后使用 git bash(对于Windows)或对Mac / Linux使用终端,这些是命令行工具。使用它可以连接到您要托管站点的服务器。使用 ssh 登录到共享托管服务器,然后转到public_html并在此处克隆您的laravel产品。克隆后,转到项目目录,创建 .env 文件并根据您的设置进行更改,然后运行composer install(它将安装项目所需的所有软件包)。然后使用 cpanel 将laravel项目的根目录设置为您的域,然后点击域。您应该能够看到您的幼虫工作正常

第二种方式:(不推荐,但快速)

  1. 将供应商文件夹以外的项目文件夹复制到共享托管服务器
  2. 打开您的PC终端,连接到服务器,转到laravel项目目录,安装laravel。
  3. 将域设置为您的laravel项目根目录并点击域