部署 laravel + vuejs 到共享主机

Posted

技术标签:

【中文标题】部署 laravel + vuejs 到共享主机【英文标题】:Deploy laravel + vuejs to shared hosting 【发布时间】:2019-09-25 04:17:13 【问题描述】:

我在将我的 laravel + vuejs 应用程序部署到共享主机帐户时遇到问题,我知道其他有效的方法,例如 cloudways,但我只想测试我的网站。

我尝试了一些免费托管但总是出错,我是否需要通过 ftp 上传我的所有 node_modules 才能使 vue 组件工作?它很大并且需要大量时间。

我查看了很多关于这方面的教程,但没有一个将 laravel 和 vuejs 部署到服务器上,任何关于这方面的指南都将不胜感激。

【问题讨论】:

您应该构建 vuejs 应用程序,通常使用命令 npm run build。这将在您的 vuejs 应用程序文件夹中创建一个文件夹 dist ,其中包含应用程序投入生产所需的所有文件。复制 laravel 应用程序公共目录中 dist 文件夹的内容,每个请求都应服务于 index.html其中引用了 vuejs 应用程序。生产环境中不需要整个 vuejs 应用程序文件夹。 非常感谢!所以我不用担心node_modules,只需要构建并上传到服务器 您需要同时构建 Laravel (composer) 和 Vue (webpack mix) 才能部署到生产环境。在你的 composer.json 中有这样的东西 - github.com/niiknow/anx-api-proxy/blob/master/composer.json#L65 - 然后运行 ​​composer app:package 来构建要上传的 dist.tar.gz。在共享主机上提取此文件并上传您的.env 文件。或者你可以使用laravel-installer 之类的:github.com/niiknow/anx-api-proxy#production-deployment 谢谢,我试试看 我要问@Noogen,运行 composer app:package 只会构建 laravel 对吗?如果按照 rob_ 的回答,我该如何处理 vue 构建 【参考方案1】:

    进入 laravel-vue 项目并构建应用的生产版本。

    确保隐藏文件可见,然后压缩除 node_modules 以外的所有内容

    转到您的 cpanel,在根目录中为您的新应用创建一个文件夹(不是 public_html

    将压缩文件上传并解压到您刚刚创建的新文件夹中

    public文件夹中除.htaccess以外的内容移动到刚才新建的文件夹的根目录中

    在同一文件夹的根目录中创建一个新的.htaccess 文件并添加以下内容:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

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

    # Handle Front Controller...
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_FILENAME !-f
    RewriteRule ^ index.php [L]

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


</IfModule>

    通过更改来编辑同一文件夹中的 index.php 文件:

    require __DIR__.'/../vendor/autoload.php';require __DIR__.'/vendor/autoload.php'; require_once __DIR__.'/../bootstrap/app.php';require_once __DIR__.'/bootstrap/app.php';

    为此应用创建一个子域,并将文档根目录设置为我们创建的文件夹,并将所有 laravel 文件放入其中

访问 subdomain.your-domain.your-tld,应用应该可以运行。

【讨论】:

异常 Mix 清单不存在。我发现了这个错误@willower【参考方案2】:

只需在您的根 (public_html) 或任何子目录(如果您使用子域)中创建一个新的 .htaccess 文件并粘贴以下行即可解决您的问题。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ public/ [L]
    RewriteRule (.*) public/$1 [L]
</IfModule>

【讨论】:

以上是关于部署 laravel + vuejs 到共享主机的主要内容,如果未能解决你的问题,请参考以下文章

如何将 laravel vue 站点部署到共享主机

sh 将laravel项目部署到共享主机提供商

将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误

sh 设置laravel5项目以部署到共享主机提供程序

Laravel 部署共享主机子域

在共享主机中部署后 Laravel 结构损坏