Biake Chou

  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

Drone + Gogs CI-CD环境配置

发表于 2018-05-10 | 更新于 2018-06-20 | 分类于 docker

安装 docker-compose (需先安装pip且在6.0版本及以上)

sudo pip install docker-compose

新建 docker-compose.yaml 文件

version: '2'

services:
drone-server:
image: drone/drone:0.8

ports:
- 8000:8000
- 9000
volumes:
- /var/lib/drone:/var/lib/drone/
restart: always
environment:
- DRONE_OPEN=true
- DRONE_HOST=http://XXXXXX # drone的访问地址
# gogs 配置
- DRONE_GOGS=true
- DRONE_GOGS_URL=http://XXXXXX # gog访问网址
- DRONE_GOGS_GIT_USERNAME=XXXXXX # gog登录用户名
- DRONE_GOGS_GIT_PASSWORD=XXXXXX # gog登录密码
- DRONE_GOGS_PRIVATE_MODE=true

drone-agent:
image: drone/agent:0.8

restart: always
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_SERVER=drone-server:9000
- DRONE_SECRET=${DRONE_SECRET}

操作命令

docker-compose  up 
docker-compose down
docker-compose restart

Shadowsocket服务器搭建

发表于 2018-04-11 | 更新于 2018-06-20 | 分类于 ubuntu

Ubuntu 16.04

apt-get install python-pip
pip install shadowsocks

已配置文件启动 使用

新建 /etc/shadowsocks.json 文件


## 单账号
{
"server":"xxx.xxx.xxx.xxx", # 服务器IP
"server_port":443,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"XXXXXX", # 密码自定义
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}

## 多账号
{
"server":"xxx.xxx.xxx.xxx",
"port_password": {
"443": "XXXXXX", # 密码自定义
"444": "XXXXXX"
},
"local_address": "127.0.0.1",
"local_port":1080,
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}



$ sudo chmod 755 /etc/shadowsocks.json

已配置文件启动 (后台运行加-d 不加则前台运行)

$ sudo ssserver -c /etc/shadowsocks.json -d start
$ sudo ssserver -c /etc/shadowsocks.json -d stop

开机启动

编辑 /etc/rc.local 文件, 在 exit 0 这一行的 上边 加入如下

/usr/local/bin/ssserver –c /etc/shadowsocks.json

日志查看

$ sudo less /var/log/shadowsocks.log

VSCode下WebApi+Swagger-ui插件配置

发表于 2018-03-20 | 更新于 2018-06-20 | 分类于 netCore

安装包 swashbuckle.aspnetcore

$ dotnet add package swashbuckle.aspnetcore

修改 startup.cs

  • 添加引用

    using Swashbuckle.AspNetCore.Swagger;
    using Microsoft.Extensions.PlatformAbstractions;
    using System.IO;
    
  • 在 ConfigureServices 方法内添加

services.AddSwaggerGen(c =>
  {
      c.SwaggerDoc("v1", new Info
      {
          Version = "v1",
          Title = "Demo Api"
      });
      var basePath = PlatformServices.Default.Application.ApplicationBasePath;
      var xmlPath = Path.Combine(basePath, "CoreApi.xml"); //CoreApi.xml 自己定义名称
      c.IncludeXmlComments(xmlPath);
  }
);
  • 在 Configure 方法内添加
    app.UseSwagger();
    app.UseSwaggerUI(c => {
      c.SwaggerEndpoint("/swagger/v1/swagger.json", "DemoApi");
    });
    

修改工程文件 xxxx.csproj 添加

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>bin\Debug\netcoreapp2.0\CoreApi.xml</DocumentationFile>
</PropertyGroup>

Ubuntu 16.04 自动备份 mysql

发表于 2018-03-13 | 更新于 2018-06-20 | 分类于 mysql

新建备份程序

$ mkdir /home/bak/
$ cd /home/bak/
$ vim bakmysql
#日期参数
rq=`date +%Y%m%d`
#备份命令 例如:用户名和密码都为root 要备份的数据库名 database
mysqldump -uroot -proot database > /home/bak/mysql$rq.sql

为备份程序添加权限

# 表示 +(添加)x(执行)的权限  也可 chmod 777
$ chmod +x /home/bak/bakmysql

修改/etc/crontab

$ vim /etc/crontab
#每天3点30分执行
30 3 * * * root /home/bak/bakmysql

重启crontab

$ service crond start #启动服务
$ service crond stop #关闭服务
$ service crond restart #重启服务

#发行版本没有service这个命令时
/etc/init.d/cron stop
/etc/init.d/cron start

ubuntu 16.04 共享目录访问

发表于 2018-02-06 | 更新于 2018-06-20 | 分类于 ubuntu

安装 samba 服务器

$ sudo apt-get install samba
# Linux客户端测试用
$ sudo apt-get install smbclient

配置

  • 修改配置文件

    $ sudo vim /etc/samba/smb.conf
    #在最后添加
    [share]
    path = /home/share #共享路径
    browseable = yes #该目录是否可显示
    writable = yes
    comment = smb share test
  • 共享目录权限配置

    一般来说,该目录的权限为755,将其改为777之后,Owner之外的其他用户才有权限写入。
    $ sudo chmod 777 /home/share
  • 创建samba用户 (注意,创建samba用户之前,必须先确保有一个同名的Linux用户,否则samba用户会创建失败。)

    #创建系统用户
    $ sudo groupadd smbuser -g 6000
    $ sudo useradd smbuser -u 6000 -g 6000 -s /sbin/nologin -d /dev/null

    #创建samba用户
    $ sudo smbpasswd -a smbuser
  • 重启samba服务

    $ sudo service smbd restart

客户端测试访问

  • Linux客户端访问测试

    $ smbclient -L //localhost/share
  • windows 访问测试 另外,在Windows客户端使用net use /del /y这条命令可以清理访问缓存。*

    \\IP或主机名\\share
    #如果public = no,此时需要输入samba用户密码;如果public = yes,则作为nobody用户直接访问。

docker-jenkin-node项目-自动化部署记录

发表于 2018-01-05 | 更新于 2020-10-15 | 分类于 docker

docker 安装 jenkin

docker pull jenkin:latest

Publish Over SSH 插件安装

Publish Over SSH 配置

  • jenkin容器 生成 ssh key

    ssh-keygen -t rsa
  • jenkin容器 在.ssh目录生成config文件 并设置权限 chmod 600 ~/.ssh/config

    #用于ssh登录宿主机
    host sshHost #自定义名称
    user test #宿主机登录的用户名
    hostname 192.168.18.112 #宿主机IP
    port 22 #ssh 端口
    identityfile ~/.ssh/jenkins #容器内私钥

    #用于拉取git项目
    host gitlab
    user git
    hostname 192.168.18.111
    port 22
    identityfile ~/.ssh/jenkins
  • 将jenkin容器生成的公钥放入宿主机.ssh目录 并加入authorized_keys

    cat jenkins.pub >> authorized_keys
  • jenkin容器 测试连接宿主机

    $ ssh sshHost
  • jenkin 配置 ssh

    key #填写jenkin容器内生成的私钥
    ssh server
    Name : #随意填写 用于系统内选择
    Hostname : 192.168.18.112 #宿主机名称
    Username : test #宿主机用于登录的用户名

GIT项目增加jenkin.pub 公钥

项目配置

  • 源码管理 选择git

    Repository URL : git@gitlab:human/demo/human.bus.git # git 服务器用户   gitlab: config配置的host
    Credentials : #选择SSH Username with private key 填写jenkin容器内生成的私钥
  • 构建环境 选择 Send files or execute commands over SSH after the build runs

    Exec command : 

    $ docker stop node || true \ #停止容器
    && docker rm node || true \ #删除容器
    && cd /home/test/jenkins_node/workspace/nodeBus \ #项目目录
    && docker build --rm --no-cache=true -t node - < Dockerfile \ #删除
    && docker run -d --name node -p 7000:7000 \ #根据项目端口设置
    -v /home/test/jenkins_node/workspace/nodeBus:/home/project \ #挂载项目目录
    node:8.9.3

Dockerfile 放入项目根目录(简易内容)

FROM node:8.9.3

MAINTAINER biake <zhoubin@uu1x.com>

WORKDIR /home/project

EXPOSE 7000 #根据项目端口设置

CMD ["npm","start"]

package.json npm 命令设置

"scripts": {
"start": "npm install . && node ./app.js"
},

Git push 后自动构建

  • jenkins –> 首页 –> 用户
  • 设置 –> 点击 “show API Token”
  • 复制API Token内容,返回首页 –> node –> 配置 –> 构建触发器 –> 选择 “触发远程构建” –>粘贴”API Token”内容到”身份验证令牌”
  • 登录gitlab 选择项目 settings –> Integrations

    url : http://192.168.18.112:49002/job/nodeBus/build?token=<jenkin用户的token>
  • jenkins首页,选择 系统管理–>Configure Global Security

    勾选 Allow anonymous read access
    去除勾选 防止跨站点请求伪造

docker常用命令记录

发表于 2018-01-05 | 更新于 2018-06-20 | 分类于 docker

常用命令

#镜像下载
$ docker pull ubuntu:16.04 #镜像:版本号

#镜像列表
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 00fd29ccc6f1 2 weeks ago 111MB
jenkins latest 5fc84ab0b7ad 3 weeks ago 809MB
mysql 5.7.20 7d83a47ab2d2 3 weeks ago 408MB
nginx 1.10.3 0346349a1a64 9 months ago 182MB
redis 3.0.6 d4deec2c521c 24 months ago 151MB

#删除镜像
$ docker image rm <镜像> #镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要

#容器运行
$ docker run -it --rm \ #-i:交互操作,-t:终端: --rm:退出容器就删除
ubuntu:16.04 \ #以镜像为启动容器
bash # 在镜像后的是命令 bash是进入交互式shell

#容器已运行后 再进入shell
$ docker exec -it <容器ID> bash

Ngix 容器 (挂载宿主机配置)

docker run -d \  
--name nginx-uat \
-p 80:80 \
-p 9000:9000 \
-v /home/test/nginxConf/nginx.conf:/etc/nginx/nginx.conf:ro \ # ro 表示只读 不写则可读可写 或 rw
-v /home/test/nginxConf/default:/etc/nginx/sites-available/default:ro \
nginx:1.10.3

redis 容器 (挂载宿主机配置,根conf需提供相对应版本)

docker run -d --name redis-test  -p 6379:6379  \
-v /var/www/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-v /var/www/redis/data:/data \
redis \
redis-server /usr/local/etc/redis/redis.conf

mysql 容器(挂载宿主机配置)

docker run -d  --name mysql-test  -p 3033:3306 -e MYSQL_ROOT_PASSWORD=123456  -v /var/www/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf:ro --restart=always  mysql:5.7.20

Ubuntu系统下git通过SSH拉取项目问题记录

发表于 2017-12-14 | 更新于 2018-06-20 | 分类于 ubuntu

~/.ssh 目录和文件权限

#不可用 sudo 否则是属于root用户 不用root用户可能读取不到此文件配置 导致以下提示:
#ssh: Could not resolve hostname gogs: Name or service not known
#fatal: Could not read from remote repository.
$ vim config

#Bad owner or permissions on /home/uat/.ssh/config
$ sudo chmod 600 ~/.ssh/config

#git clone 报错 Load key "/home/uat/.ssh/xxxxx": bad permissions
$ sudo chmod 600 ~/.ssh/xxxxx

Nginx 相关命令

发表于 2017-12-08 | 更新于 2018-06-20 | 分类于 nginx

基础命令

安装Nginx

$ sudo apt-get install -y nginx
# ubuntu 16.04 目录 /usr/sbin

重启

$ sudo service nginx restart

查看版本和已有模块

$ sudo /usr/sbin/nginx -V
nginx version: nginx/1.10.3 (Ubuntu)
built with OpenSSL 1.0.2g 1 Mar 2016 (running with OpenSSL 1.0.2g-fips 1 Mar 2016)
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads

配置

http配置

http {
# 将80访问转发至8080
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / {
proxy_pass http://localhost:8080;
}
}
}

tcp配置

stream {    
#tcp负载 根据权重轮流转发至113 和 114
upstream hard_socket{
#可选算法
#最少连接数 least_conn
#最低平均延迟 least_time first_byte;
#普通hash算法 hash $remote_addr consistent;
hash $remote_addr consistent;

#权重 weight ;最大连接数 max_conns ;连接失败超时 fail_timout ; max_fails 最大连接失败数
#以下为30s进行3次尝试失败认为server不可达
server 192.168.18.113:9000 weight=1 max_fails=3 fail_timeout=30s;
server 192.168.18.114:9000 weight=1 max_fails=3 fail_timeout=30s;
}

#tcp 负载
server {
listen 12345;
proxy_connect_timeout 10s;
#连接维持时间,无数据传送则关闭连接
proxy_timeout 30s;
proxy_pass hard_socket;

#health_check命令将会激活健康监测功能,当有health_check_timeout 将会覆盖掉这个proxy_timeout的值,作为健康监测超时时间应该是显著缩短
#默认,nginx试着再每5s中连接每个server在upstream server组中。假如连接不能够被建立,nginx认为这个健康监测失败,标识他为不健康。停止连接该server。

#interval :发送健康请求间隔时间
#passses : 多少连续的响应才算被考虑为健康的
#fails :多少次连续的失败响应才考虑为不健康的

#health_check insterval=10 passes=2 fails=3;
#health_check_timeout 5s;
}

#单一转发
server {
listen 45678;
proxy_pass backend4.example.com:3000;
}
}

PowerShell使用posh-git插件

发表于 2017-11-30 | 更新于 2018-06-20 | 分类于 windows

项目地址 https://github.com/dahlbyk/posh-git

安装

需要PowerShell version 5 以上

打开 PowerShell 执行命令

Set-ExecutionPolicy RemoteSigned

安装 posh-git

Install-Module posh-git
# 如果没有安装Nuget 会提示自动安装安装输入Y

# 手动安装Nuget
Install-PackageProvider NuGet-Force
Import-PackageProvider NuGet-Force

更新posh-git

Update-Module posh-git

配置

安装完后在C:\Users\ <username>\Documents\WindowsPowerShell添加文件profile.ps1,也可输入命令

$profile.CurrentUserCurrentHost

在文件profile.ps1中添加内容:

Import-Module posh-git
#可选内容
$GitPromptSettings.DefaultPromptSuffix='`n$(''>'' * ($nestedPromptLevel + 1)) '
$GitPromptSettings.DefaultPromptPrefix='[$(hostname)] '
$GitPromptSettings.DefaultPromptAbbreviateHomeDirectory=$true

修改powershell默认路径:右键属性修改起始位置

123
Biake Chou

Biake Chou

Learning , Sharing

23 日志
8 分类
23 标签
GitHub
Links
  • Jake
  • NeilQ
© 2024 Biake Chou
由 Hexo 强力驱动 v3.6.0
|
主题 — NexT.Pisces v6.3.0