标签: 随笔

  • 使用 acme.sh 部署 Let’s Encrypt 泛域名通用证书

    Let’s Encrypt两种域名验证方式

    1. DNS验证:配置一个随机的 TXT 记录来验证
    2. 文件验证:配置一个随机的 URL 地址来验证

    泛域名通用证书只能使用DNS TXT记录验证,acme.sh支持多种dnsapi我使用的是阿里云DNS,可以根据你的域名服务商进行选择支持列表。

    安装 acme.sh

    curl  https://get.acme.sh | sh -s email=my@example.com

    my@example.com 改为你自己的邮箱地址用于接收通知。

    acme.sh自动为你创建定时任务, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

    配置阿里云AK

    设置临时系统变量

    #你的阿里云AccessKeyId
    export Ali_Key="AccessKeyId"
    #你的AccessKeySecret
    export Ali_Secret="AccessKeySecret"

    颁发证书

    可以进行单域名、多域名、泛域名进行颁发。

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

    这里会使用dnsapi自动添加TXT记录,进行域名的 DNS 验证,中间会等待 2分钟左右来验证正确性,验证完成后记录会自动删除。

    出现Cert success表示成功 后面会有证书存放路径。

    复制/安装证书

    Nginx

    acme.sh --dns dns_ali -d chunblog.com -d *.chunblog.com\
     --install-cert\
     --key-file /www/cert/chunblog.com/key.pem\
     --fullchain-file /www/cert/chunblog.com/cert.pem\
     --reloadcmd "/etc/init.d/nginx reload"

    参数说明

    –install-cert    将颁发的证书安装到 apache/nginx 或任何其他服务器。

    –key-file    发行/续订后将密钥文件复制到的路径。

    –fullchain-file    发布/续订后将全链证书文件复制到的路径。

    –reloadcmd    发布/更新后重新加载服务器后要执行的命令

    然后修改Nginx配置文件使用 /www/cert/chunblog.com/key.pem、/www/cert/chunblog.com/cert.pem即可

    server
    {
        listen 80;
        listen 443 ssl http2;
        server_name chunblog.com www.chunblog.com;
        index index.php index.html index.htm;
        root /www/chunblog.com;
    
        ssl_certificate    /www/server/panel/vhost/cert/chunblog.com/fullchain.pem;
        ssl_certificate_key    /www/server/panel/vhost/cert/chunblog.com/privkey.pem;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;
    
        #禁止访问的文件或目录
        location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
        {
            return 404;
        }
        
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
            error_log /dev/null;
            access_log /dev/null;
        }
        
        location ~ .*\.(js|css)?$
        {
            expires      12h;
            error_log /dev/null;
            access_log /dev/null; 
        }
        access_log  /www/wwwlogs/chunblog.com.log;
        error_log  /www/wwwlogs/chunblog.com.error.log;
    }

    安装acme.sh时已自动创建定时任务,证书到期前会自动更新证书并重载Nginx配置使证书生效。

  • 群晖 Synology DSM Docker 设置国内镜像加速

    群晖自带Docker套件非常实用,我在使用时发现不管是群晖Docker内置套件下载镜像或者登录ssh docker pull都不成功,经过测试发现是 因为国内网络大环境的问题 docker hub pull镜像时网络不通,解决方式使用国内镜像加速,这里我推荐阿里的,免费的呦!

    使用SSH工具登录

    vi /var/packages/Docker/etc/dockerd.json
    
    #修改以下域名为你的地址
    {
       "data-root" : "/var/packages/Docker/target/docker",
       "log-driver" : "db",
       "ipv6": true,
       "registry-mirrors" : ["https://xxxx.mirror.aliyuncs.com"]
    }
    

    输入wq保存,然后重启群晖,再试试吧!

  • Yii2中fields和extraFields的使用

    在model文件中,通过覆盖这两个方法,可以控制要显示的数据表的字段。

    1.将数据表中字段 username 显示为 u_Name :

    public function fields(){
        return[
            'u_Name'=>'username'
        ];
    }

    2.不显示数据表中的 password 和 email 字段信息:

    public function fields(){
        $fields = parent::fields();
        unset($fields['password'],$fields['email']);
        return $fields;
    }

    3.显示除了fields()方法默认限制的字段外,其他的字段信息:

    public function fields(){
        $fields = parent::fields();
        unset($fields['password'],$fields['email']);
        return $fields;
    }
    
    public function extraFields(){
        return ['email'];
    }

    调用方式参考:

    显示user类的所有默认字段(fields限制的部分):

    http://chunblog.com/V1/user

     

    显示fields中允许显示的部分字段信息:

    http://chunblog.com/V1/user?fields=username,email

     

    显示除fields限制外,extraFields中允许显示的信息:

    http://chunblog.com/V1/user?expand=email

  • Centos 7 开启BBR加速

    Centos 7 配置BBR加速

    什么是BBR:

    TCP BBR是谷歌出品的TCP拥塞控制算法。BBR目的是要尽量跑满带宽,并且尽量不要有排队的情况。BBR可以起到单边加速TCP连接的效果。

    Google提交到Linux主线并发表在ACM queue期刊上的TCP-BBR拥塞控制算法。继承了Google“先在生产环境上部署,再开源和发论文”的研究传统。TCP-BBR已经再YouTube服务器和Google跨数据中心的内部广域网(B4)上部署。由此可见出该算法的前途。

    TCP-BBR的目标就是最大化利用网络上瓶颈链路的带宽。一条网络链路就像一条水管,要想最大化利用这条水管,最好的办法就是给这跟水管灌满水。

    BBR解决了两个问题:

    • 在有一定丢包率的网络链路上充分利用带宽。非常适合高延迟,高带宽的网络链路。
    • 降低网络链路上的buffer占用率,从而降低延迟。非常适合慢速接入网络的用户。

    Google 在 2016年9月份开源了他们的优化网络拥堵算法BBR,最新版本的 Linux内核(4.9-rc8)中已经集成了该算法。对于TCP单边加速,并非所有人都很熟悉,不过有另外一个大名鼎鼎的商业软件“锐速”,相信很多人都清楚。特别是对于使用国外服务器或者VPS的人来说,效果更佳。

    BBR项目地址:

    https://github.com/google/bbr

     

    升级内核,第一步首先是升级内核到支持BBR的版本:

    1.yum更新系统版本:

    yum update

    2.查看系统版本:

    [root@xianggang ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core)

    3.安装elrepo并升级内核:

    [root@xianggang ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    [root@xianggang ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
    [root@xianggang ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y

    4.更新grub文件并重启系统:

    [root@xianggang ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
    CentOS Linux (5.2.9-1.el7.elrepo.x86_64) 7 (Core)
    CentOS Linux (3.10.0-957.27.2.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-862.11.6.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)
    CentOS Linux (3.10.0-514.21.2.el7.x86_64) 7 (Core)
    CentOS Linux (0-rescue-b8690a3783cf4b1a9ddccfe7a7f69414) 7 (Core)
    [root@xianggang ~]# grub2-set-default "CentOS Linux (5.2.9-1.el7.elrepo.x86_64) 7 (Core)"
    [root@xianggang ~]# reboot

    5.重启完成后查看内核是否已更换为5.2.9版本:

    [root@xianggang ~]# uname -r
    5.2.9-1.el7.elrepo.x86_64
    [root@xianggang ~]# 
    

    6.开启bbr:

    [root@xianggang ~]# vim /etc/sysctl.conf    # 在文件末尾添加如下内容
    net.core.default_qdisc = fq
    net.ipv4.tcp_congestion_control = bbr

    7.重新载入sysctl:

    [root@xianggang ~]# sysctl -p
    net.core.default_qdisc = fq
    net.ipv4.tcp_congestion_control = bbr

    输出了我们添加的那两行配置 并且后面没有提示 代表正常。

    8.确定bbr已经成功开启:

    [root@xianggang ~]# sysctl net.ipv4.tcp_available_congestion_control
    net.ipv4.tcp_available_congestion_control = reno cubic bbr
    [root@xianggang ~]# lsmod | grep bbr
    tcp_bbr                20480  4 
    [root@xianggang ~]#

    输出以上内容,表示BBR已经成功开启。

  • Centos 7改变系统语言为中文

    Centos 7改变系统语言为中文

    最近阿里云在搞活动,春风入手了一台99元一年,配置是1核心 2G内存 1M宽带,安装的Centos 7.4默认的语言是英文,虽然说看英文没有太大的问题。但是就是想把这个系统语言改为中文,要怎么改呢?
    先是用locale命令,看看语言配置。

    LANG=en_US.UTF-8
    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="zen_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=
    

    怎么把”en_US.UTF-8″改成”zh_CN.UTF-8″?赶紧用度娘搜了一下。

    1.临时解决方法

    使用LANG=“zh_CN.UTF-8”,这个命令来实现,不过在重新登录的时候又会变回英文。这个不是长久的方法。

    2.更改系统参数

    如果系统没有中文支持,可以通过网上下载安装中文语言包,使用命令:yum groupinstall Chinese-support

    在网上普遍说的是修改/etc/sysconfig/文件夹里面的i18n这个文件里面的参数,但是呢。我在Centos7同样的路径下面是没有看到有这个文件的。

    经过在网上查找资料发现,Centos 7已经不采用/etc/sysconfig/i18n这一个文件来做配置,而改为使用/etc/locale.conf这个来进行语言配置。

    使用vim命令编辑

    vim /etc/locale.conf

    进入以后只有简单的一句

    LANG="en_US.UTF-8" 这个配置,把"en_US.UTF-8"替换成"zh_CN.UTF-8" 保存退出即可。

    这样子就算是重启进入系统,系统也还是中文的配置界面。

  • Centos7 rpm 命令大全

    Centos7 rpm 命令大全

    对已安装软件信息的查询

    rpm -qa 查询已安装的软件
    rpm -qa | grep  "软件或者包的名字" 查找某软件包是否安装 
    rpm -qf 文件名绝对路径 文件名的绝对路径
    rpm -ql 软件名 查询已安装的软件包都安装到何处
    

    软件名:rpm包去除平台信息和后缀信息

    rpm -qi 软件名 查询一个已安装软件包的信息
    rpm -qc 软件名 查看已安装软件的配置文件
    rpm -qd 软件名 查看已安装软件的文档安装位置
    rpm -qR 软件名 查看已安装软件依赖包和文件
    

    对未安装软件信息的查询

    rpm -qpi rpm文件 查看一个软件包的用途和版本信息
    rpm -qpl rpm文件 查看一个软件包所包含的文件
    rpm -qpd rpm文件 查看软件包的文档所在位置
    rpm -qpc rpm文件 查看软件包的配置文件
    rpm -qpR rpm文件 查看软件包的依赖关系
    

    软件包的安装、升级、删除

    rpm -ivh rpm文件 安装rpm包
    rpm -Uvh rpm文件 更新rpm包
    rpm -e 软件名 删除rpm包
    rpm -e 软件名 –nodeps 不管依赖关系,强制删除软件
    rpm –import 签名文件 导入签名
    
  • CentOS7 添加、更改让用户没有登录权限

    CentOS7 添加、更改让用户没有登录权限

    1.还未建立用户时,可以使用以下命令

    useradd -g 组 用户名 -s /sbin/nologin

    2.当用户已经建立了,在建立时没有控制,现在需要取消用户登录权限,可以使用以下命令

    vim /etc/passwd

    找到你要修改的用户所在的那一行

    nobody:x:99:99:Nobody:/:/bin/bash

    改为

    nobody:x:99:99:Nobody:/:/sbin/nologin