首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这个Laravel应用程序的部署有什么问题?需要有效的域而不是本地环境中使用的vhost吗?

这个Laravel应用程序的部署有什么问题?需要有效的域而不是本地环境中使用的vhost吗?
EN

Stack Overflow用户
提问于 2017-04-22 07:56:58
回答 2查看 199关注 0票数 0

我在PHP中非常新,而且在Laravel中,我非常绝望地试图部署一个Laravel 5.4应用程序,该应用程序在我的Linux服务器上的本地环境中运行良好。

因此,我认为它与虚拟主机配置或类似的东西有关(也可能与.htaccess文件有关)。

在我的本地环境中(我在Windows上使用XAMPP ),我将这个虚拟主机设置为文件:

代码语言:javascript
运行
复制
<VirtualHost *:80>
    DocumentRoot "C:/xampp/htdocs/HotelRegistration/public"
    ServerName laravel.dev
</VirtualHost>

因此,打开laravel.dev URL,我获得了标准的Laravel主页(我还没有用登陆页面替换它)。

如果我打开这个网址:http://laravel.dev/registration

我获得了我开发的用户注册页面,这是因为我已经将这个路由放到了我的项目中的web.php文件中:

代码语言:javascript
运行
复制
Route::resource('/registration', 'RegistrationController');

然后,在我的RegistrationController.php中,有一个显示resources/views/registration/index.blade.php视图的方法

代码语言:javascript
运行
复制
public function index(){

    return view('/registration/index');

}

一切正常。

现在,我已经将这个Laravel网站上传到我的远程Linux服务器中,放到这个文件夹中:/var/www/html/HotelRegistration。

但现在我的问题是,在这个远程环境中,我没有虚拟主机(如果我做了错误的断言,请纠正我:据我所知,在本地环境中使用虚拟主机来模拟Laravel需要指向公共文件夹的域,这个推理正确吗?)

无论如何,这是我在远程服务器上部署的网站的公共文件夹的URL:

http://89.36.211.48/HotelRegistration/public/

正如您可以看到打开它-- Laravel登陆页面正确显示的那样,问题是我可以访问以前的注册页面,我找到的唯一方法是打开这个URL:

http://89.36.211.48/HotelRegistration/public/index.php/registration

但是这是相当可怕的,而且最重要的是,当提交注册表单时,会向这个URLhttp://89.36.211.48/registration生成一个POST请求,该请求的结尾是一个404,没有找到错误。

因此,我认为这取决于这样一个事实:在这个远程服务器中,我不能使用模拟域的虚拟主机(就像我在本地环境中所做的那样),但我不确定。

我能做些什么来解决这个问题?您认为使用指向远程服务器http://89.36.211.48/HotelRegistration/public/目录的有效域(比如:http://89.36.211.48/HotelRegistration/public/)可以解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2017-04-22 10:50:00

您需要在服务器中配置域,并重新配置apache。我认为您有apache2服务器,所以在这里您可以:

步骤1转到apache2文件夹cd /etc/apache2

步骤2您可以看到站点可用文件夹进入it cd站点可用的

laravel.dev.conf 步骤3创建一个新文件名为it

步骤4写下以下sudo nano laravel.dev.conf

步骤5写下以下选项:

代码语言:javascript
运行
复制
<VirtualHost *:80>
     ServerAdmin webmaster@laravel.dev
     ServerName laravel.dev
     ServerAlias www.laravel.dev
     DocumentRoot /var/www/html/laravel.dev/public/
     ErrorLog /var/www/html/laravel.dev/logs/error.log
     CustomLog /var/www/html/laravel.dev/logs/access.log combined
     <Directory /var/www/html/laravel.dev/public/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        Allow from all
        Require all granted
     </Directory>
</VirtualHost>

步骤6现在转到这个文件夹/创建一个新的cd /var/www/html/laravel.dev

步骤7复制/安装您的laravel应用程序。

步骤8现在您可以通过键入sudo a2ensite laravel.dev.conf来启用站点

步骤9现在重新启动apache2 sudo服务apache2 apache2

现在,您可以适当地访问您的域。希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2017-04-22 08:26:26

因为您使用的是XAMPP

在您的VirtualHost指令中添加以下内容:

代码语言:javascript
运行
复制
<Directory "LINUX PATH TO /HotelRegistration/public">
        AllowOverride All
</Directory>

您的最终VirtualHost指令应该如下所示:

代码语言:javascript
运行
复制
<VirtualHost *:80>
    DocumentRoot "LINUX PATH TO /HotelRegistration/public"
    ServerName 89.36.211.48

    <Directory "LINUX PATH TO /HotelRegistration/public">
        AllowOverride All
    </Directory>
</VirtualHost>

在配置更改之后,重新启动Apache,您就可以继续了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43556771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档