syncd的使用和部署

简介

syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率.

安装

首先创建一台服务器

我使用的是centos之后使用我的centos初始化脚本初始化一下

curl -O https://raw.githubusercontent.com/bboysoulcn/centos/master/centos.sh

接着就来安装这个玩意

首先安装go

下载go

wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz

解压

tar -zxvf go1.11.5.linux-amd64.tar.gz

mv go /usr/local

添加环境变量

vim /etc/profile

在文件最后添加

export PATH=$PATH:/usr/local/go/bin

之后

source /etc/profile

go 安装完成

安装git

yum install git

安装nginx

安装依赖

yum install pcre-devel zlib-devel openssl-devel

下载nginx

wget https://nginx.org/download/nginx-1.14.2.tar.gz

解压

tar -zxvf nginx-1.14.2.tar.gz

编译安装

cd nginx-1.14.2 && ./configure --prefix=/usr/local/nginx/ && make -j 4 && make install

之后添加环境变量

vim /etc/profile

加入

export PATH=$PATH:/usr/local/nginx/sbin/

之后

source /etc/profile

使用systemed管理nginx

vim /etc/systemd/system/nginx.service

加入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=This is nginx service is Powered by bboysoul
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target

启动nginx

systemctl restart nginx

systemctl status nginx

部署mysql

下载

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.14-1.el7.x86_64.rpm-bundle.tar

解压

tar -xvf mysql-8.0.14-1.el7.x86_64.rpm-bundle.tar

安装

yum install ./*.rpm

设置root密码,首先查看现在root密码

systemctl start mysqld

1
2
3
4
5
6
7
8
➜  ~ cat /var/log/mysqld.log
2019-01-30T09:32:42.986730Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.14) initializing of server in progress as process 6081
2019-01-30T09:32:49.182874Z 5 [Note] [MY-010454] [Server] A temporary password is generated for roo[email protected]: &%/JDroDY8KB
2019-01-30T09:32:50.263850Z 0 [System] [MY-013170] [Server] /usr/sbin/mysqld (mysqld 8.0.14) initializing of server has completed
2019-01-30T09:32:52.485123Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.14) starting as process 6128
2019-01-30T09:32:53.079695Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2019-01-30T09:32:53.101782Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.14' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL.
2019-01-30T09:32:53.139743Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060

mysql_secure_installation

按照流程操作

之后重启一下mysql的服务

systemctl restart mysqld

安装syncd

首先下载二进制包

wget https://github.com/dreamans/syncd/releases/download/1.1.2/Syncd-v1.1.2-linux-amd64.tar.gz

解压

tar -zxvf Syncd-v1.1.2-linux-amd64.tar.gz

mv Syncd-v1.1.2-linux-amd64 /usr/local/syncd

导入数据库

wget https://raw.githubusercontent.com/dreamans/syncd/master/syncd.sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
➜  ~ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.14 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database syncd;
Query OK, 1 row affected (0.01 sec)

mysql> use syncd
Database changed
mysql> source /root/syncd.sql;
Query OK, 0 rows affected (0.03 sec)

Query OK, 0 rows affected (0.03 sec)

Query OK, 0 rows affected (0.03 sec)

Query OK, 0 rows affected (0.03 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.03 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.04 sec)

Query OK, 1 row affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 1 row affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

mysql>

修改配置文件

vim /usr/local/syncd/etc/syncd.ini

我的配置文件就不贴了,都是中文配置起来很简单的

启动

输入下面的命令就可以启动

./bin/syncd -c ./etc/syncd.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
➜  syncd ./bin/syncd -c ./etc/syncd.ini
__
_____ __ __ ____ _____ ____/ /
/ ___/ / / / / / __ \ / ___/ / __ /
(__ ) / /_/ / / / / / / /__ / /_/ /
/____/ \__, / /_/ /_/ \___/ \__,_/
/____/

Service: syncd
Version: 1.1.0
Config Loaded: ./etc/syncd.ini
Workspace: /tmp/.syncd
Log: "/usr/local/syncd/log/syncd.log"
Database: 127.0.0.1
Mail Enable: 0
HTTP Service: :8868
Start Running...

如果你想后台的话那就使用screen这个命令好了

之后修改nginx的配置

vim /usr/local/nginx/conf/nginx.conf

在最后的括号之前加上

include ./vhosts/*.conf;

之后添加新的配置文件

mkdir /usr/local/nginx/conf/vhosts

vim /usr/local/nginx/conf/vhosts/syncd.conf

加入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
upstream syncdServer {
server 127.0.0.1:8868 weight=1;
}
server {
listen 8080;
server_name localhost; # 此处替换成你的真实域名
access_log /usr/local/syncd/log/syncd-nginx.log;

location / {
try_files $uri $uri/ /index.html;
root /usr/local/syncd/public/; # 此处/path请替换成真实路径
index index.html index.htm;
}

location ^~ /api/ {
proxy_pass http://syncdServer;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Origin $host:$server_port;
proxy_set_header Referer $host:$server_port;
}
}

之后直接浏览器打开ip:8080就可以访问了

默认

更新git

目前为止centos的官方仓库的git版本是1.8.3.1

如果使用这个版本会出现下面这个问题,这个花了我十分钟找问题原因,后来作者一秒钟就回答我原因了,是git版本太低的问题,那么就重新安装git就可以了

删除本地git

yum remove git

安装依赖

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

下载

wget https://github.com/git/git/archive/v2.20.1.tar.gz

解压

tar -zxvf v2.20.1.tar.gz

编译安装

cd git-2.20.1/

make all

make install

看下版本

git --version

使用

第一步我们添加一个服务器

点击集群管理->新建集群->输入集群名字

之后我们添加服务器,注意服务器和syncd这台机器要可以免密登录,我syncd这台服务器的ip是192.168.17.65要部署项目的服务器是192.168.17.96,所以要在192.168.17.65执行

ssh-keygen

ssh-copy-id [email protected]

点击服务器管理->新增服务器->输入相关信息

之后的步骤还是看作者的流程图吧,很简单的,如果写要一大堆,懒得写了

欢迎关注Bboysoul的博客www.bboy.app

Have Fun

欢迎关注我的其它发布渠道