数字海洋部署 Laravel

Posted

技术标签:

【中文标题】数字海洋部署 Laravel【英文标题】:Digital Ocean Deployment Laravel 【发布时间】:2015-03-14 17:45:56 【问题描述】:

我在将新的 laravel 应用程序部署到我的数字海洋帐户时遇到了一些问题。我按照本教程中的步骤概述: http://davidmyers.name/post/laravel-on-digital-ocean

但我发现在尝试访问索引页面时,我得到:

Forbidden

You don't have permission to access / on this server.

Apache/2.4.7 (Ubuntu) Server at www.scheduleify.com Port 80

但是,我可以通过访问 www.scheduleify.com/phpmyadmin 来访问 PHPMyAdmin

我感觉这与将默认目录设置为公用文件夹有关。

在上面链接的文章中,作者在打开文件时提到: /etc/apache2/sites-enabled/000-default.conf

应该看到以下两行:

DocumentRoot /var/www
<Directory /var/www>

这是我的整个文件,似乎缺少其中一个(我已经相应地修改了那里的那个):

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /root/scheduleify/public

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog $APACHE_LOG_DIR/error.log
        CustomLog $APACHE_LOG_DIR/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host 

only   
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

我注意到的另一件事:如果我 ssh 进入我的根目录,并进入克隆的存储库/项目文件夹,并尝试运行 php artisan,我会收到错误:

Mcrypt PHP extension required.

但是,如果我从同一目录运行命令 mcrypt,我会得到:

mcrypt: Encrypted data will not be written to a terminal.
Redirect the output instead.
Use the --help parameter for more help.

这表明 mcrypt 正在工作。非常感谢任何输入/帮助。我非常接近放弃,我已经为此坚持了几个小时,却一无所获。


更新:第一个错误已解决。

403 错误仍然存​​在;检查apache2日志,发现这个错误:

[Fri Jan 16 09:38:31.855624 2015] [core:error] [pid 5641]   
(13)Permission denied: [client [removed]] AH00035: access to / denied 
(filesystem path '/root/scheduleify') because search permissions are 
missing on a component of the path

【问题讨论】:

也许在你的虚拟主机和 httpd.conf 文件中检查Require 指令。在我的情况下,在虚拟主机中它设置为Require all granted 什么是液滴操作系统? Droplet OS 是 Ubuntu 上的 LAMP。无论如何我解决了这个问题,我正在等待一天来选择我自己的评论作为答案。 【参考方案1】:

问题是我将应用程序放在根目录中......这是一个坏主意,需要额外的 apache 配置。

通过将项目从根文件夹 (root/project) 移到 var/www/html/project 目录中,并通过文章中概述的相同过程,我能够让应用程序运行!

【讨论】:

【参考方案2】:

对于第一个问题:

You don't have permission to access / on this server.

这通常是权限问题。例如,root 拥有 /root/scheduleify 并且 Web 服务器(通常是 ubuntu 和 debian 上的 www-data)无法读取该目录。

chown -R www-data: /root/scheduleify

如果这确实解决了问题,则每次以 root 身份上传新文件时都需要重新运行此命令。

对于第二个问题:

Mcrypt PHP extension required.

可以通过以下方式修复:

apt-get install php5-mcrypt

最后重启apache。

sudo service apache2 restart

【讨论】:

似乎这两个问题都没有解决:\。我运行了 chown 命令,但 403 仍然存在。更令人困惑的是 mcrypt 命令不起作用,即使它实际上缺少 php5-mcrypt。尝试运行 php artisan 时仍然遇到相同的错误。有什么想法吗? 更新 - 我发现这篇文章解决了我的 mcrypt 问题:digitalocean.com/community/questions/…。现在只剩下 403 错误 - 感谢您到目前为止的帮助!!! 啊,是的,php5enmod 命令。对于 403 错误,我会检查 apache 错误日志以查看它们是否有更多信息。更多帮助可以在this answer中找到

以上是关于数字海洋部署 Laravel的主要内容,如果未能解决你的问题,请参考以下文章

markdown Django部署 - 数字海洋

markdown Ubuntu部署数字海洋

Nginx 和乘客依赖问题(数字海洋部署)

如何在单个液滴上将不同的 MERN 应用程序部署到数字海洋?

在数字海洋上部署 Django、Gunicorn、Nginx、Virtualenv 给我 502 Bad Gateway & Gunicorn can't read Secret Key

我的 microsoft bot 框架在数字海洋中不起作用