1. 简介
接下来,我们将代码从 Git 仓库手动部署到服务器上。步骤如下:
- 创建用于部署的 deployer 用户;
- 设置用户及目录权限;
- 添加 SSH 公钥到 Git 仓库,以实现免密拉取代码;
- 部署代码,调整细节。
2. 操作
2.1 新建用户
出于安全考虑,一般情况下我们不会直接使用 root 用户执行操作,而是用其他用户。
首先,我们创建一个 deployer 用户来完成代码部署相关的任务。
useradd deployer
然后为 deployer 开启密钥登录(这里直接使用 root 用户的密钥,也可以另外生成):
mkdir -p /home/deployer/.ssh
cp /root/.ssh/authorized_keys /home/deployer/.ssh/authorized_keys
chown -R deployer:deployer /home/deployer
这样就可以使用密钥登录了。
2.2 设置用户及目录权限
用户权限
修改 shell:
chsh -s /bin/bash deployer
将 deployer 添加到 Nginx 所在的 www 组:
usermod -aG www deployer
将 deployer 添加到 sudoers 中:
vim /etc/sudoers
在最后加入:
deployer ALL=(ALL) NOPASSWD: ALL
保存并退出。
目录权限
接下来配置 web 目录权限。
设置根目录 /home/wwwroot
的用户为 deployer,用户组为 www:
chown deployer:www /home/wwwroot # 最后这里不要加斜线
使 deployer 在 /home/wwwroot
下创建的文件与目录权限继承根目录设定(用户 deployer,用户组 www):
chmod g+s /home/wwwroot
2.3 免密访问 Git 仓库
我们使用 deployer 用户来完成代码部署相关的任务,因此这里要为 deployer 用户生成密钥。
切换到 deployer 用户:
su - deployer
生成密钥对:
ssh-keygen -C deployer
获取公钥:
cat /home/deployer/.ssh/id_rsa.pub
然后在 Gitee 添加部署公钥(即只有读权限):
2.4 部署代码
拉取代码:
git clone git@gitee.com:ilaoniu/example example.ilaoniu.cn
最后,调整下细节,例如修改 .env
文件,配置数据库等环境变量。
传输文件可以使用 scp
命令:
# 复制文件
scp local_file remote_username@remote_ip:remote_folder
scp local_file remote_username@remote_ip:remote_file
# 复制目录
scp -r local_folder remote_username@remote_ip:remote_folder
# 从远处复制到本地只需要交换 local 和 remote 两部分