OpenProject安装卡在RAILS_ENV="production" ./bin/rake assets:precompile命令
解决OpenProject Assets预编译卡在Angular构建阶段的方案
先排查系统资源(优先级最高)
- 用
top或htop实时监控内存/CPU占用:Angular生产环境构建对内存需求极高,服务器内存低于2GB时极易出现假死,甚至无法响应ctrl+c。- 临时救急方案:添加swap分区
sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile - 长期解决方案:升级服务器内存至2GB以上(符合OpenProject官方生产环境最低要求)
- 临时救急方案:添加swap分区
- 检查磁盘剩余空间:执行
df -h,构建过程会生成大量临时文件,磁盘满额会直接导致进程卡住。
单独验证Angular构建环节(OpenProject前端基于Angular开发)
OpenProject内嵌完整的Angular项目,修改angular.json完全合理,先脱离Rails流程单独测试:
- 定位前端目录:执行
find . -name angular.json,通常位于项目根目录下的frontend/文件夹 - 进入目录执行生产环境构建:
如果此步骤也卡住,针对性处理:cd frontend npm run build:prod- 调整
angular.json的构建配置降低资源负载:- 临时关闭代码优化:
"optimization": false - 禁用sourceMap生成:
"sourceMap": false - 关闭并行构建:
"parallel": false(多核服务器可能出现资源竞争问题)
- 临时关闭代码优化:
- 清理npm缓存并重装依赖:
npm cache clean --force rm -rf node_modules package-lock.json npm install - 核对Node.js版本:OpenProject对Node版本有明确要求(如部分版本需16.x/18.x),用
node -v确认,版本不符可通过nvm切换。
- 调整
调整Rails预编译参数
- 启用
VERBOSE=true没问题,先在单独的Angular构建中添加--verbose确认可正常运行,再应用到Rails命令:
详细日志能直接定位卡滞环节,避免盲目排查。RAILS_ENV="production" ./bin/rake assets:precompile VERBOSE=true - 先清理旧资产再执行预编译:
RAILS_ENV="production" ./bin/rake assets:clean RAILS_ENV="production" ./bin/rake assets:precompile
强制终止卡住的进程
如果ctrl+c无法终止进程,直接通过进程ID强制杀死:
ps aux | grep rake kill -9 <进程ID>
内容的提问来源于stack exchange,提问作者Prateek Shetty
相关产品推荐
相关产品推荐

