docker 部署 blog

一、安装配置 git

1、安装依赖工具包

1
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel

2、安装编译工具

1
yum install -y gcc perl-ExtUtils-MakeMaker package

3、删除旧版本 git

1
yum remove git -y

4、进入家目录

1
cd xxx

5、下载 git 到家目录

鉴于下载地址的时效性,附上

,后续 git 更新请去官网下载安装包。

1
wget https://www.kernel.org/pub/software/scm/git/git-2.34.0.tar.gz --no-check-certificate

如果提示没有 wget 命令,先安装:

1
yum install wget -y

6、解压文件

1
tar -zxf git-2.34.0.tar.gz

7、安装 git

进入到 git 目录下

1
cd git-2.34.0

编译

1
make all prefix=/usr/local/git

安装 git 到/usr/local/git

1
make install prefix=/usr/local/git

8、配置 git 环境变量

将 git 加入PATH目录中

1
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

使配置生效

1
source /etc/bashrc

查看 git 版本

1
git --version

如果能查看到 git 的版本号,说明安装成功。

二、创建用户并配置 SSH 免密登录

1、创建用户并设置密码

这里的username改成你自己的用户名,并且为用户设置一个密码

1
2
adduser [username]
passwd [username]

2、为用户分配权限

把用户添加到 wheel 组

1
usermod [username] -G wheel

3、本地创建密钥

在本机电脑终端输入:

1
ssh-keygen -t rsa

然后一直回车,新建一个密钥。

一般来说在你创建的时候命令行会提示你密钥文件的路径,windows 电脑一般是C:\Users\Administrator\.ssh

复制id_rsa.pub文件中的内容备用。

4、配置公钥

回到服务器终端,切换用户

1
su - [username]

创建.ssh文件夹

1
mkdir .ssh

新建authorized_keys

1
vim .ssh/authorized_keys

如果提示没有 vim,则先安装:

1
sudo yum install -y vim

将刚刚id_rsa.pub公钥中的内容,复制粘贴到文件里,保存退出。

三、git 仓库配置

退出用户登录

1
exit

此时应该是 root 用户,创建 git 目录,并修改目录的所有权和用户权限

1
2
3
mkdir /home/git/
chown -R [username]:[username] /home/git/
chmod -R 755 /home/git/

进入目录,建立 git 仓库,修改权限

1
2
3
cd /home/git/
git init --bare blog.git
chown [username]:[username] -R blog.git

新建钩子文件 post-receive

1
vim /home/git/blog.git/hooks/post-receive

进入文本编辑器,粘贴下面两行。

1
2
#!/bin/bash
git --work-tree=/home/blog --git-dir=/home/git/blog.git checkout -f

保存退出。然后修改文件权限

1
chmod +x /home/git/blog.git/hooks/post-receive

四、docker 中 nginx 配置

1、docker 安装拉去 nginx

1
docker pull nginx

2、部署 nginx

1
docker run --name=blog -v /home/blog:/home/blog -d -p 4000:4000 nginx

3、进入 nginx

1
docker exec -it blog /bin/bash

4、安装 vim

1
2
apt-get update
apt-get install vim

5、配置 nginx 环境变量,并使环境变量生效

1
2
echo 'export PATH=$PATH:/usr/local/nginx/sbin' >> /etc/bashrc
source /etc/bashrc

6、配置 Systemd 服务

1
vim /lib/systemd/system/nginx.service

在文本编辑器中粘贴以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp= true

[Install]
WantedBy=multi-user.target

内容说明:

1
2
3
4
5
6
7
8
9
10
11
[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

7、 修改 nginx 转发配置

查看 nginx 的默认配置文件的安装位置

1
nginx -t

修改 nginx 的默认配置,其中 cd 后边就是刚刚查到的安装位置,每个人可能都不一样,我这里是/etc/nginx/nginx.conf

1
vim /etc/nginx/nginx.conf

在文本编辑器中找到如下位置

(注意:下列配置放在 http{}里面)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 4000;
listen [::]:4000;
server_name 121.40.101.237;# 需要修改为你的域名(或者公网ip)
root /home/blog; # 修改为创建的blog目录地址

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
}

8、退出 nginx 容器,并重启 nginx 容器

1
2
exit #退出nginx容器
docker restart blog #重启nginx容器