远程连接服务器
在搭建环境的整个过程中,有很多步骤是需要连接到服务器进行的,然而在每次访问的时候都需要输入用户名和密码,就像逢年过节回家聚会都会被亲戚朋友询问「什么时候结婚呀」「何时抱小孩啊」。这就是为什么要把这步放到前面——在自己脑门上写上计划的结婚生子时间,省得他们总问!
生成 SSH 密钥
密钥是免登录连接服务器的通行证,有种刷脸通行的感觉。如果本地已经存在并且不想另外生成的话,可以跳过此步。
cd ~/.ssh 切换目录后用 ssh-keygen -t rsa -C “用于区分密钥的标识” 生成一对具有相同名字的密钥(默认为 id_rsa 和 id_rsa.pub):用于本地的私钥和用于服务器的公钥(有 .pub 扩展名)。
如果私钥名字不是默认的话,需要手动加入到被「认证」的私钥列表中,否则每次连接服务器都会提示输入服务器的密码。在遇到了一些坑(文后有说明)后,我觉得设置 SSH config 最为靠谱!
编辑 ~/.ssh/config 文件(如果不存在则 touch ~/.ssh/config 创建一下),添加以下内容:
1 | Host HOST_ALIAS # 用于 SSH 连接的别名,最好与 HostName 保持一致 |
服务器端认证
先用 pbcopy < ~/.ssh/PRIVATE_KEY.pub 将公钥复制到剪贴板;通过 ssh USER@SERVER 访问服务器,这时会提示输入密码(它也许只有这么一次「询问」的机会);成功登录后 vim ~/.ssh/authorized_keys,在合适的位置 cmd + V 并保存退出(同时 exit 退出 SSH 连接)。
配置 Git 仓库
创建服务器端仓库
服务器上需要配置两个仓库,一个用于代码中转的远程仓库,一个用于用户访问的本地仓库。这里的「远程仓库」并不等同于托管代码的「中央仓库」,这两个仓库都是为了自动同步代码并部署网站而存在。
在存放远程仓库的目录中(假设是 /home/USER/repos)执行 git init –bare BRIDGE_REPO.git 会创建一个包含 Git 各种配置文件的「裸仓库」。
切换到存放用户所访问文件的目录(假设为 /home/USER/www,如果不存在则在 /home/USER 中执行 mkdir www):1
2
3
4git init
git remote add origin ~/repos/BRIDGE_REPO.git
git fetch
git checkout master
配置 Git Hook
将目录切换至 /home/USER/repos/BRIDGE_REPO.git/hooks,用 cp post-receive.sample post-receive 复制并重命名文件后用 vim post-receive 修改。其内容大致如下:
1 | #!/bin/sh |
使用 chmod +x post-receive 改变一下权限后,服务器端的配置就基本完成了。
更新本机的仓库源
在原有的(托管代码的)仓库上加入刚才所配置的服务器上的远程仓库的地址为源,以后往那个源推送代码后就会自动部署了。
总结
在搭建环境时并没有一帆风顺,磕磕绊绊遇到不少问题,虽然很多不值得一提,但有的点还是有记录并分享的价值的!
原文地址:https://segmentfault.com/a/1190000003836345?_ea=386770