简体   繁体   English

将Laravel 5.2项目部署到服务器

[英]Deploying Laravel 5.2 Project to Server

I have two servers - local (laravel homestead in ubuntu desktop) and public (ubuntu server with php7) for my websites. 我的网站有两个服务器-本地服务器(ubuntu桌面上的laravel homestead)和公共服务器(php7的ubuntu服务器)。 I already have a few simple websites that works fine on my public server and they are visible to the net. 我已经有一些简单的网站可以在我的公共服务器上正常运行,并且可以在网上看到。 I create laravel 5.2 project on my laravel Homestead local server and now I want to move it - deploy it to my public server. 我在laravel Homestead本地服务器上创建了laravel 5.2项目,现在我想移动它-将其部署到我的公共服务器上。 I compress complete project folder (tar.gz) and move it to server using filezilla and unpack and navigate domain DocumentRoot to the project index.php page in public folder but it's opening a blank page. 我压缩了完整的项目文件夹(tar.gz),并使用filezilla将其移动到服务器,并解压缩域DocumentRoot并将其导航到公用文件夹中的项目index.php页面,但它正在打开一个空白页面。 If I make a change in index.php and echo some string, it's work and string is displayed but laravel bootstrap doesn't load application. 如果我在index.php中进行了更改并回显了一些字符串,则可以正常工作并显示字符串,但是laravel bootstrap不会加载应用程序。 My index.php is located in: 我的index.php位于:

/var/www/html/mydomain.com/public/index.php

with this two line: 这两行:

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

and this: 和这个:

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

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

$response->send();

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

I try also with absolute path: 我也尝试使用绝对路径:

require '/var/www/html/mydomain.com/bootstrap/autoload.php';
$app = require_once '/var/www/html/mydomain.com/bootstrap/app.php';

But browser still opening blank page. 但是浏览器仍然打开空白页。 Apache configuration file (/etc/apache2/sites-available/mydomain.com.conf) for this domain is created with this data: 使用以下数据创建该域的Apache配置文件(/etc/apache2/sites-available/mydomain.com.conf):

<VirtualHost *:80>
    ServerAdmin admin@mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/public
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

This is my first laravel project and I don't have experience with deploying it on server. 这是我的第一个laravel项目,我没有在服务器上部署它的经验。 Please, what setup and changes I need to do to make it works? 请进行什么设置和更改才能使其正常运行? Domain is navigated to the index.php page in public folder but browser doesn't loading aplication. 域导航到公用文件夹中的index.php页面,但浏览器未加载应用程序。 Please some help. 请一些帮助。

Edit: Error log from apache: 编辑:来自Apache的错误日志:

[Sun Jul 10 21:38:26.082328 2016] [:error] [pid 18269] [client 192.168.1.7:41368] PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/html/mydomain.com/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87\\nStack trace:\\n#0 /var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37): Monolog\\Handler\\StreamHandler->write(Array)\\n#1 /var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Logger.php(336): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)\\n#2 /var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Logger.php(615): Monolog\\Logger->addRecord(400, Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)\\n#3 /var/www/html/mydomain.com/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202): Monolog\\Logger->error(Object(Symfony\\Component\\Debug\\E [2016年7月10日21:38:26.082328,星期日] [:错误] [pid 18269] [客户端192.168.1.7:41368] PHP致命错误:未捕获UnexpectedValueException:流或文件“ /var/www/html/mydomain.com/ storage / logs / laravel.log”无法打开:无法打开流:/var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:87 \\中的权限被拒绝nStack跟踪:\\ n#0 /var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(37):Monolog \\ Handler \\ StreamHandler-> write(Array)\\ n #1 /var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Logger.php(336):Monolog \\ Handler \\ AbstractProcessingHandler-> handle(Array)\\ n#2 / var / www / html / mydomain.com / vendor / monolog / monolog / src / Monolog / Logger.php(615):Monolog \\ Logger-> addRecord(400,Object(Symfony \\ Component \\ Debug \\ Exception \\ FatalErrorException),Array)\\ n# 3 /var/www/html/mydomain.com/vendor/laravel/framework/src/Illuminate/Log/Writer.php(202):Monolog \\ Logger-> error(Object(Symfony \\ Component \\ Debug \\ E xception\\FatalErrorException), Array)\\n#4 /var/www/html/mydomain.com/vendor/laravel/framework/ in /var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 87 xception \\ FatalErrorException),数组)\\ n#4 /var/www/html/mydomain.com/vendor/laravel/framework/在/var/www/html/mydomain.com/vendor/monolog/monolog/src/Monolog/第87行的Handler / StreamHandler.php

You have to setup the permissions of your folders and files correctly. 您必须正确设置文件夹和文件的权限。 You can find a lot of info in this question. 您可以在此问题中找到很多信息。 File permissions for Laravel 5 (and others) Laravel 5(及其他)的文件权限

Also why don't you use git to deploy your project? 另外,为什么不使用git部署项目呢? Make a repo and then you can clone your project on your server and when you update your site all you have to do is a git pull :) And if you realy want to do it the right way you can use a deploybot with Envoy . 进行回购,然后您可以在服务器上克隆项目,并且在更新站点时,只需要做一个git pull :)。如果您确实想以正确的方式进行操作,则可以在Envoy中使用deploybot。 This way you can directly deploy from your local machine. 这样,您可以直接从本地计算机进行部署。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM