标签 - Linux 共找到结果 24 条

一直使用套路云的服务器,https证书也是套路云一键生成,后来在GitHub上看见 acme.sh 的申请脚本,有效期只有三个月,但是可以通过定时任务自动执行申请命令,所以就准备来试试水.

1.安装脚本

安装很简单, 一个命令:

curl  https://get.acme.sh | sh

2.申请证书

申请证书需要先进行域名归属权校验,为了之后的定时任务方便,这里选项 DNS 方式: 这里举例为 ALIDNS 的 API 调用,更多方式请查看 如何使用 DNS API

2.1 创建 AccessKey

阿里云文档查看如何创建AccessKey

2.2 保存 AccessKeyId 和 AccessKeySecret

创建AccessKey后会得到 AccessKeyId 和 AccessKeySecret,我们需要保存在 ~/.acme.sh/account.conf 保存自己的 AccessKeyId 和 AccessKeySecret

export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"

2.3 正式申请证书

接下来执行(需要把mrabit.com替换成需要申请的域名):

acme.sh --issue --dns dns_ali -d mrabit.com -d *.mrabit.com

申请成功后就可以在~/.acme.sh/mrabit.com/查看生成的证书文件了

QQ20180615221724.png

3.copy/安装 证书

申请成功后当然就是使用证书:

acme.sh  --installcert  -d  mrabit.com   \
        --key-file   /etc/nginx/cert/mrabit.key \
        --fullchain-file /etc/nginx/cert/fullchain.cer \
        --reloadcmd "systemctl restart nginx"

该命令中的参数将自动保存在~/.acme.sh/mrabit.com目录下的mrabit.com.conf文件里,定时器更新证书的时候实现自动部署。

4.设置nginx

2.png

重启nginx就可以体验你的新证书了.

3.png

当然,当前证书只有90天的有效期,不过不用担心,acme.sh已经设定crontab定时任务,当证书过期会自动申请.

相关链接:

阅读全文

Nginx反向代理动态域名(路由器上的花生壳)经常会一开始是正常的,过段时间服务就挂掉了显示502,重启Nginx服务才能正常访问。

查看错误日志发现动态域名的IP已经改变了结果Nginx这边还是缓存的旧的IP地址。

这是之前的Nginx配置:

server {
    listen       80;
    server_name  serverName;

    location /{
        proxy_pass domainName;
    }
}

每当路由器重启或者断网重拨后IP地址发生变化,Nginx不能马上刷新,可使用resolver实现Nginx强制刷新解析的效果。

server {
    listen       80;
    server_name  serverName;

    location /{
        resolver 223.5.5.5;
	set $IPS domainName;
	proxy_pass http://$IPS;
    }
}

参考地址:

阅读全文

博客每次修改代码需要上传到 git仓库 - nuxt-express-blog,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子.

1.png

有三种状态分别是: pre-receive,update,post-receive分别对应接收前,接收时,接收后三种状态,希望push代码后实现更新部署则会用到post-receive

2.png

这里用到的shell命令是:

#!/bin/bash
unset $(git rev-parse --local-env-vars);
cd /usr/share/nginx/vue-blog
git pull origin master &&  npm i && npm run build

当然,项目运行需要的进程守护进程是pm2,由于nuxt使用npm run build会在本地生成build文件夹,就直接用pm2监听build的改动了:

{
  "name": "blog",
  "script": "/usr/local/bin/npm",
  "args": "start",
  "cwd": "./",
  "watch": [
    "build"
  ],
  "ignore_watch": [
    "node_modules"
  ],
  "watch_options": {
    "followSymlinks": false
  }
}

然后就可以尝试使用git push看看是否会执行Gogs的post-receive钩子事件

相关链接:

阅读全文

阿里云服务器 ECS 实现自定义监控图表,图表实现为百度的 Echarts 图表

效果查看

CPU使用率(%)

公网带宽(bits/s)

安装

npm i -S aliyun-metrics

下面贴出我的实现方式:

const Metrics = require("aliyun-metrics");
const moment = require('moment');

const client = new Metrics({
  accesskeyId: 'your_accesskey_id',
  accesskeySecret: 'your_accesskey_secret',
})

const ECS = params => {
  return new Promise((resolve, reject) => {
    client.queryData({
      project: "acs_ecs_dashboard",
      metric: params.metric,
      period: 60,
      startTime: params.startTime || moment.utc()
        .subtract(1, 'hour')
        .format(),
      endTime: params.endTime || moment.utc()
        .format(),
      dimensions: `{instanceId:'your_instanceId'}`
    }, function(error, data) {
      if (error || !data)
        reject(error || 'data is null');
      else
        resolve(data);
    });
  })
}

module.exports = ECS;

关于 accesskeyId 和 accesskeySecret 请参考:创建AccessKey

client.queryData 参数说明:

名称 类型 是否必须 描述
project String 名字空间,表明监控数据所属产品,如 “acs_ecs_dashboard”,“acs_rds_dashboard”等
metric String 监控项名称,查看预设监控值参考
period String 获取监控数据的间隔时间,单位为秒。取值范围:60,600,3600。默认值:60
startTime String 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。
endTime String 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。
dimensions String json串,例如:{"instanceId":"i-23gyb3kkd"}。

返回值请参考:查看预设监控值参考

参考地址:

阅读全文

一直想搭建一个属于自己的Git服务,之前看好GitLab结果自己的渣渣服务器运行不了,于是退而求其次选择了Gogs. 之前mysql版本是5.6结果安装出错,升级了5.7后正常安装: Centos7 mysql5.6升级至5.7

Gogs官网是: Gogs

1.新建用户:

groupadd git
useradd git -g git

2.下载预编译二进制打包:

其他安装方式详见: 安装 Gogs 切换到git用户并进入~文件夹:

wget http://7d9nal.com2.z0.glb.qiniucdn.com/0.11.34/linux_amd64.zip
unzip linux_amd64.zip

3.运行安装

在 Gogs 目录的 scripts/mysql.sql 文件是数据库初始化文件。执行 mysql -u root -p < scripts/mysql.sql (需要输入密码)即可初始化好数据库。

#执行gogs文件启动服务
./gogs web -port 8899

然后访问 http://服务器IP:8899/ 来进入安装页面

4.nginx配置

server {
	listen       80;
	server_name  绑定的域名地址;

	location /{
		proxy_pass http://127.0.0.1:8899;
	}
}

5.gogs开机自启

scripts 目录中带有一个开箱即用的 systemd 配置文件,部分需要根据自己的需求更改,详细配置可见 systemd-服务 需要copy到/etc/systemd/system目录

cp /home/git/gogs/scripts/system/gogs.service /etc/systemd/system/gogs.service
#激活开机自启
systemctl enable gogs
#启动gogs服务
systemctl start gogs

参考地址:

阅读全文