前言

网站的部署或移植是一套固定流程,所以我们可以根据固定的步骤来部署。

我们知道网站就三样东西组成,nginx、wordpress和mysql,也就是说我们只要部署这三个东西就行。

有两样好东西可以非常方便管理以上三个东西,分别是git和docker。

git的好处在于方便管理网站源码和配置文件,当本地修改配置后可以方便同步发哦服务器。

docker的好处在于把网站的三个东西打包起来,随时能部署。

步骤一 安装git、docker、docker-compose

  1. {% post_link linux安装git %}

  2. {% post_link linux安装docker %}

  3. {% post_link linux安装docker-compose %}

步骤二 服务器搭建git仓库

1. 创建git用户

我们要在服务器搭建一个git裸仓库用来和本地关联,这样就能方便的在本地和服务器之间传递配置。git裸仓库类似于我们平时用的github和码云。

同时我们还应该设定一个只有git权限的用户,该用户只能使用git相关操作。这是为了安全考虑,假如我们直接用root用户远程操作git仓库,那么一旦别人破解root密码就能完全操控服务器。

同时为了同步docker容器内的uid和gid,所以我们规定所有容器包括git的通用uid和gid都是9876。

#创建git用户,同时会创建git用户组
useradd git
#修改git用户组gid
groupmod -g 9876 git
#修改git用户的uid
usermod -u 9876 git
#修设置git用户密码
passwd git

2. 搭建git仓库

mkdir /home/git/meizdao.git
git init --bare /home/git/meizdao.git
#把仓库的拥有者设为git用户
chown -R git:git meizdao.git

步骤三 建立服务器端git仓库映射文件夹

我们在本地使用git命令推送内容到服务器git仓库后,需要git在接收到我们推送的最新内容后,自动把最新内容更新到某个文件夹。这就要了解git的两个知识点。

首先git是可以分离git仓库和映射文件夹的。也就是说git仓库的位置不用变,比如说/home/git/meizdao.git仓库位置不用变,但是从这个位置拉出来的文件位置可以随意。

其次git内部设置了一系列事件,就好比javascript的事件驱动一样,当某个事件发生的时候,就会触发某些动作,所以我们可以设置post-update事件,当仓库内容更新时检出最新内容到映射文件夹。

1. 创建映射文件夹

mkdir /usr/local/meizdao
chown -R git:git /usr/local/meizdao

2. 设置事件文件post-update

#找到post-update事件模板
cd /home/git/meizdao.git/hooks
cp post-update.sample post-update

把下面代码拷贝到事件文件中

#!/bin/sh

git --work-tree=/usr/local/meizdao --git-dir=/home/git/meizdao.git checkout -f
#这个文件夹用来存放定时任务执行的脚本
chmod -R 777 /usr/local/meizdao/script
exec git update-server-info

步骤四 把本地源码和配置上传到服务器

1. 在本地关联远程仓库

git remote add origin git@meizdao.com:/home/git/meizdao.git
git push -uf origin master

2. 启动服务器

docker-compose -f /usr/local/meizdao/docker-compose/docker-compose.yml up -d --build

步骤五 设置linux安全

linux的基本安全设置:

  1. 禁用root账户登陆,指定某个特定的用户登陆
  2. 修改ssh登陆端口
  3. 开启firewalld防火墙

linux高级安全设置:

  1. 定期监控sshd登陆日志,发现不寻常的登陆ip则拉入黑名单

步骤六 设置数据库自动备份定时任务

crontab+git+github三个东西相结合,就能定时备份数据库到github。

1. 创建备份文件夹

mkdir /usr/local/meizdao/backup
#这个文件夹权限和script文件夹权限一样,要全部放开,因为root用户会来操作
chmod -R 777 /usr/local/meizdao/backup

2. 把该文件夹关联github仓库

因为第一次推送到远程仓库时需要对两个仓库进行关联, 所以第一次我们自己弄个文件进行推送(我脚本里执行的是git push命令, 但第一次推送要执行git -uf push origin master)

git init
git remote add origin <github仓库>
touch 1.txt
git add . && git commit -m'1'
git -uf push origin master

3. 设置定时任务

crontab -e

把下面命令写入定时任务中,意思是每天凌晨3点去执行script文件夹中的mysqldump.sh脚本

0 3 * * * /usr/local//script/mysqldump.sh

总结

根据以上步骤就能快速部署一个网站, 并且实现定时备份数据库的功能。

THE END
开启精彩搜索

历史搜索

用户名或邮箱
密码
用户名
密码
重复密码
邮箱
注册
找回密码
注册 登录
邮箱
邮箱验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

新增

新增

新增

新增

新增

新增

新增

新增