部署 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 到共享主机的主要内容,如果未能解决你的问题,请参考以下文章