在我的生产服务器上,托管在数字海洋上,如果有帮助,Ubuntu 12.04,我有RoR 4和耙10.1.1.
当我部署时,我运行rake资产:预编译,我注意到一个奇怪的问题,如果我有一个rails控制台会话打开,当我这样做,我得到以下输出
~# rake assets:precompile ~# Killed
这主要是烦人的,但是我想要解决的原因是招聘新的开发人员时会出现部署/控制台冲突的噩梦.
谢谢,
布赖恩
解决方法
您的预编译过程可能因为内存不足而被杀死.您可以通过在另一个ssh会话中运行顶部来确认.要解决此问题,请创建一个交换文件,当RAM已满时将使用该交换文件.
在Ubuntu上创建SWAP空间
如果您计划在数字海洋上使用Rails 512MB RAM液滴,则可能需要一些交换空间.具体来说,在编译资产时,您的内存将用尽,导致进程被安静地杀死并阻止成功的部署.
看看你是否有交换文件:
sudo swapon -s
df
创建交换文件:
步骤1:分配文件进行交换
sudo fallocate -l 2048m /mnt/swap_file.swap
步骤2:更改权限
sudo chmod 600 /mnt/swap_file.swap
步骤3:格式化交换设备的文件
sudo mkswap /mnt/swap_file.swap
步骤4:启用交换
sudo swapon /mnt/swap_file.swap
步骤5:重新启动时,确保交换已安装.首先,打开fstab
sudo nano /etc/fstab
# /etc/fstab /mnt/swap_file.swap none swap sw 0 0
保存并退出.你完成了交换.现在你的耙子资产:预编译应该完成而不会被杀死.