在Plesk部署Laravel+Vite项目时npm运行命令遇权限及配置加载问题
解决Laravel Vite部署到Plesk(Ionos)的"vite manifest not found"及构建错误问题
一、先搞定权限问题(核心诱因)
Plesk的Node.js模块执行命令时用的是网站专属系统用户,不是root,权限不对直接卡壳:
- 找到Plesk「网站与域名」→「托管设置」里的网站系统用户名,把项目目录及所有子目录的所有者改成这个用户:
chown -R 你的系统用户名:你的系统用户名 /var/www/vhosts/你的域名/httpdocs - 目录权限设为
755,文件设为644,避免权限拒绝:find /var/www/vhosts/你的域名/httpdocs -type d -exec chmod 755 {} \; find /var/www/vhosts/你的域名/httpdocs -type f -exec chmod 644 {} \; - 别让
node_modules或storage目录被root锁定,执行上述命令后再操作依赖安装。
二、修正Vite配置的路径问题
Plesk找不到vite.config.js或构建失败,大概率是路径配置不对:
- 打开项目根目录的
vite.config.js,确保用相对路径,别写服务器绝对路径:
import { defineConfig } from 'vite'; import laravel from 'laravel-vite-plugin'; export default defineConfig({ plugins: [ laravel({ input: ['resources/css/app.css', 'resources/js/app.js'], publicDirectory: 'public', buildDirectory: 'build', }), ], // 如果网站在子目录,比如https://yourdomain.com/blog,就改成base: '/blog/' base: '/', });
- 检查Plesk Node.js模块的「应用根目录」,必须指向有
vite.config.js的项目根目录,不能选子文件夹。
三、绕开Plesk Node模块,用SSH手动构建
Plesk的Node模块偶尔会有环境变量或权限bug,SSH终端操作更靠谱:
- 用SSH登录服务器,切换到项目根目录(Ionos Plesk的默认路径一般是
/var/www/vhosts/你的域名/httpdocs):cd /var/www/vhosts/你的域名/httpdocs - 清理旧依赖和构建文件:
rm -rf node_modules package-lock.json public/build - 重新安装依赖(生产环境加
--production):npm install - 执行构建:
npm run build - 检查
public/build/manifest.json是否生成,有这个文件就说明构建成功了。
四、验证Laravel端的Vite配置
- 确保
.env里的APP_URL和服务器域名完全一致,比如APP_URL=https://yourdomain.com,子目录要加上路径 - 模板里必须用
@vite指令,别用旧的mix:@vite(['resources/css/app.css', 'resources/js/app.js']) - 如果静态资源加载有问题,在
.env里加ASSET_URL=https://yourdomain.com(子目录同理加路径)
五、Ionos Plesk专属注意事项
- Ionos默认会开静态文件缓存,构建完成后去Plesk「网站与域名」→「缓存管理」清一下缓存,避免旧资源干扰
- 如果用了Ionos的CDN,也要同步清CDN缓存
内容的提问来源于stack exchange,提问作者Sergio Fernández
相关产品推荐
相关产品推荐

