Laravel 5 App在Linux服务器上的共享主机上

示例

默认情况下,Laravel项目的public文件夹公开了任何人都可以从任何地方请求的应用程序内容,其余的应用程序代码对于没有适当权限的任何人都是不可见的或不可访问的。

在开发机器上开发应用程序之后,需要将其推送到生产服务器,以便可以从任何地方通过Internet访问它-对吗?

对于大多数应用程序/网站,首选是使用托管服务提供商(如GoDaddy,HostGator等)提供的共享托管软件包,这主要是因为其成本较低。

注意:您可能会要求提供者手动更改document_root,因此您所要做的就是将您的Laravel应用程序上传到服务器(通过FTP),请求将root更改为{app} / public,您应该会很好。

但是,此类共享主机程序包确实在终端访问和文件权限方面有限制。默认情况下,必须将其应用程序/代码上传到public_html其共享主机帐户的文件夹中。

因此,如果您要将Laravel项目上载到共享托管帐户,您将如何处理?您是否应该将整个应用程序(文件夹)上传到public_html共享主机帐户上的文件夹?-当然没有

因为public_html文件夹中的所有内容都可以“公开地(即任何人)访问”,这将带来很大的安全风险。

将项目上传到共享托管帐户的步骤-Laravel方法

步骤1
在与该public_html文件夹相同的级别上创建一个名为laravel的文件夹(或您喜欢的任何文件)。

Eg:  
/
|--var  
    |---www
        |----laravel       //在您的共享主机帐户中创建此文件夹
        |----public_html  
        |----log

步骤2
将publiclaravel项目(在开发计算机上)中的laravel文件夹以外的所有内容复制到文件夹中(在服务器主机上-共享主机帐户中)。
您可以使用:

  • C-panel:这将是最慢的选择

  • FTP客户端:类似于FileZilla,可连接到您的共享主机帐户并通过FTP上传来传输文件和文件夹

  • 映射网络驱动器:您还可以在开发计算机上创建一个映射的网络驱动器,以使用“ ftp://您的域名”作为网络地址连接到共享主机帐户的根文件夹。

步骤3
打开publiclaravel项目的文件夹(在开发机器上),复制所有内容并粘贴到该public_html文件夹(在服务器主机上-共享主机帐户)。
步骤4
现在,在共享主机帐户index.php的public_html文件夹中打开文件(在cpanel编辑器或任何其他连接的编辑器中),然后:

更改:

require __DIR__.'/../bootstrap/autoload.php';

至:

require __DIR__.'/../laravel/bootstrap/autoload.php';

并更改:

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

至:

$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

保存并关闭。

步骤5
现在转到laravel文件夹(在共享主机帐户-server上)并打开server.php文件
Change

require_once __DIR__.'/public/index.php';

至:

require_once __DIR__.'../public_html/index.php';

保存并关闭。

步骤6
将laravel/storage共享主机帐户服务器上的文件夹及其所有文件,子文件夹和其中的文件的文件许可权(递归设置)设置为777。
注意:请谨慎使用linux中的文件权限,它们就像一把双刃剑,如果使用不正确,它们可能会使您的应用容易受到攻击。为了了解Linux文件权限,您可以阅读https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions

步骤7

由于.env本地/开发服务器的文件被git忽略,因此应将其忽略,因为它具有包括APP_KEY在内的所有环境变量,并且不应通过将其推送到存储库中而公开。您还可以看到该.gitignore文件已.env提及,因此不会将其上传到存储库。

完成上述所有步骤后.env,在laravel文件夹中创建一个文件,并将您从本地/开发服务器.env文件中使用的所有环境变量添加到.env生产服务器文件中。

甚至在laravel应用程序的config文件夹中也有配置文件,例如app.php,database.php默认情况下在的第二个参数中将该变量定义为,env()但不要对这些文件中的值进行硬编码,因为这会影响拉存储库的用户的配置文件。因此,建议.env手动创建文件!

laravel还提供.env-example了可以用作参考的文件。

而已。

现在,当您访问在服务器上配置为域的url时,您的laravel应用程序应该像在本地主机-开发机上一样工作,而该应用程序代码仍然是安全的,没有适当文件权限的任何人都无法访问。