03. 手动部署代码
/

03. 手动部署代码

目录老牛浏览 66讨论 0发表于 更新于

1. 简介

接下来,我们将代码从 Git 仓库手动部署到服务器上。步骤如下:

  1. 创建用于部署的 deployer 用户;

  2. 设置用户及目录权限;

  3. 添加 SSH 公钥到 Git 仓库,以实现免密拉取代码;

  4. 部署代码,调整细节。

2. 操作

2.1 新建用户

出于安全考虑,一般情况下我们不会直接使用 root 用户执行操作,而是用其他用户。

首先,我们创建一个 deployer 用户来完成代码部署相关的任务。

php
useradd deployer

然后为 deployer 开启密钥登录(这里直接使用 root 用户的密钥,也可以另外生成):

php
mkdir -p /home/deployer/.ssh
cp /root/.ssh/authorized_keys /home/deployer/.ssh/authorized_keys
chown -R deployer:deployer /home/deployer

这样就可以使用密钥登录了。

2.2 设置用户及目录权限

用户权限

修改 shell:

php
chsh -s /bin/bash deployer

将 deployer 添加到 Nginx 所在的 www 组:

php
usermod -aG www deployer

将 deployer 添加到 sudoers 中:

php
vim /etc/sudoers

在最后加入:

php
deployer ALL=(ALL) NOPASSWD: ALL

保存并退出。

目录权限

接下来配置 web 目录权限。

设置根目录 /home/wwwroot 的用户为 deployer,用户组为 www:

php
chown deployer:www /home/wwwroot # 最后这里不要加斜线

使 deployer 在 /home/wwwroot 下创建的文件与目录权限继承根目录设定(用户 deployer,用户组 www):

php
chmod g+s /home/wwwroot

2.3 免密访问 Git 仓库

我们使用 deployer 用户来完成代码部署相关的任务,因此这里要为 deployer 用户生成密钥。

切换到 deployer 用户:

php
su - deployer

生成密钥对:

php
ssh-keygen -C deployer

获取公钥:

php
cat /home/deployer/.ssh/id_rsa.pub

然后在 Gitee 添加部署公钥(即只有读权限):

3302d166-4f19-4d58-a53e-d4fbdf145bcb

2.4 部署代码

拉取代码:

php
git clone git@gitee.com:ilaoniu/example example.ilaoniu.cn

最后,调整下细节,例如修改 .env 文件,配置数据库等环境变量。

传输文件可以使用 scp 命令:

php
# 复制文件
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 两部分

如果要设置权限可以按如下操作:

bash
# 为指定目录下的所有目录设置权限
find /path/to/directory -type d -exec chmod 755 {} \;

# 为指定目录下的所有文件设置权限
find /path/to/directory -type f -exec chmod 644 {} \;
  • find /path/to/directory:在 /path/to/directory 目录下查找;

  • -type d:只查找目录,-type f:只查找文件;

  • -exec chmod 755 {} \;:对每个找到的目录执行 chmod 755 命令。

点赞
收藏
上一篇:02. 添加网站
暂无讨论,快来发起讨论吧~
私信
老牛@ilaoniu
老牛,俗称哞哞。单纯的九零后理工小青年。喜欢折腾,爱玩,爱音乐,爱游戏,爱电影,爱旅游...
最后活跃于