错误记录 | 部署项目时出现的错误
问题1
错误提示
今天在准备将新项目部署到阿里云上,在安装完成 Capistrano 后,执行部署操作cap production deploy
时出现了错误提示。
提示显示:建立migration时,无法建立索引index_topics_on_excellent
,原因是excellent栏位不存在。
但实际情况是model中excellent栏位是存在的。
解决办法
我看了我的migration
文件,我在建立excellent
栏位时,将建立索引写在了同一个migration
中,但是分成2行写了。因此我怀疑,系统在建立迁移文件时,在执行到这个migration
的时候,认为这个excellent
栏位尚未建立,因此也就无法建立索引。
由于目前这个索引确实没有必要建立,所以我将建立索引的语句删除了,重新部署后没有出现问题。
问题2
如果想远程登录aliyun管理网站,除了输入密码之外,SSH 还可以用非对称加密(Public Key Encryption)的方式来做登入。
在非对称加密算法中,会有两把钥匙(key),一把叫做公钥(public key)、一把叫做密钥(private key)。
- 透过公钥加密的密文,只有密钥能够解开
- 透过密钥加密的密文,只有公钥能够解开
于是我们就可以用这个机制来做登入:首先我们把自己的公钥先放在服务器上,那么之后登入时,服务器会送一个乱数字符串给用户,用户用密钥加密后返回服务器,如果服务器可以用公钥解回来,就表示认证成功。
以下是设定的步骤,:
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
回到本机电脑把公钥印出来,执行 cat ~/.ssh/id_rsa.pub
就会印在画面上
但是在执行到这一步时,我出现了错误
错误提示
错误显示,找不到相应的公钥文件。
这个原因我是知道的,因为我之前为了能在本地管理2个github账号,就建立了2套SSH登录。而且我还将相应的文件名改了,所以默认的~/.ssh/id_rsa.pub
就不存在了。
解决办法
解决办法也很简单,新建一对密钥即可。
执行 ssh-keygen -t rsa
就会产生公钥 ~/.ssh/id_rsa.pub 以及密钥 ~/.ssh/id_rsa 这两个档案。
在提示存放密钥的文件名称时:填写 ~/.ssh/id_rsa
,注意路径要加上,但是不要加上.pub
。
请一直按 Enter,不需要设定 passphrse 密码(不然你每次用key都要输入一次密码很麻烦)。
本机 cat 公钥如下:
|
|
公钥可以公开给别人没关系,密钥就千万要保管好喔。
然后回到远端服务器继续:
nano ~/.ssh/authorized_keys
把公钥贴上去
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
这样就好了,你可以试试看再次登入就不用打密码了,太棒了!
不过这里还有个小问题,我的Github相应的ssh也有更改,去Github里面删除原有的公钥,替换为新的公钥,然后保存即可。这里要保证阿里云上和Github的公钥是相同的!