使用acme.sh通过验证DNS签发泛域名证书

  1. 安装acme.sh

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

  2. 签发证书

    我的域名使用的是Cloudflare的DNS,为了能让acme可以创建对应的TXT记录,需要先设置一下API秘钥。

    export CF_Key="32位秘钥"
    export CF_Email="用户邮箱"
    

    这里设置上下文环境变量一定要注意大小写。

    ./.acme.sh/acme.sh --issue --dns dns_cf -d domain.com -d *.domain.com

    其中--dns为设置使用DNS进行域名所有权验证。dns_cf表示域名DNS服务商为Cloudflare。
    acme支持的DNS服务商有很多,详细的支持列表点击这里查看

    证书签发成功后,之前设置的DNS服务接口秘钥信息就会自动保存在~/.acme.sh/account.conf文件中,后续renew的时候无需再次设置或填写。

最终签发结果如下:

搬家到了Linode,顺便开启Linode的GoogleBBR

一直在Vultr JP DC,但是近期被Q的速度太快了,头天刚开了个新的机器第二天IP就连不上了,不知道是不是Wall又升级了。
花了个把小时时间在Linode Fremont新开了台机器,用rsync从vultr把所有数据都迁移过来。速度还不错,200M/s。

nohup rsync -avz --delete /data/ [email protected]:/data/ > /tmp/rs.log 2>&1 &

搬家完了以后感觉速度一般,因为酸酸乳忒慢,比Vultr慢多了。想着换到GoogleBBR是不是会好点,换完以后感觉还不错(反正是比没开之前快多了 🙂 )


整理了一下开启方式的流程如下

  • 首先确定kernel版本 ( 低于4.9的kernel是没有bbr的)
[email protected]:~# uname -r
4.14.17-x86_64-linode99
  • 验证kernel是否支持
[email protected]:~# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno bic westwood htcp

如果内核不支持,需要到Linode Dashboard修改当前应用的Profile,切换kernel到4.9以上版本或不断尝试到支持bbr的版本。
修改完内核后必须重启才能正常开启

  • 修改sysctl.conf开启bbr
[email protected]:/etc# echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
[email protected]:/etc# echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
[email protected]:/etc# sysctl -p
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
[email protected]:/etc# reboot
  • 重启服务器然后就可以开心的玩耍了 🙂

记一次编译php5.3的openssl错误解决

错误如下:
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: error adding symbols: DSO missing from command line

/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0: error adding symbols: DSO missing from command line
等其他类似错误

解决方法:
Make zend_extra_libs=’-lssl -lcrypto’

或在 Makefile 中找到 EXTRA_LIBS后增加 -lssl -lcrypto 即可

2016年11月28日 RabbitMQ 笔记

管理操作

停止服务:
rabbitmqctl stop

添加删除用户
rabbitmqctl add_user|delete_user username

修改用户密码
rabbitmqctl change_password username password

设置用户组
rabbitmqctl set_user_permissions username administrator|mointoring|management

设置用户权限 (conf/write/read为正则表达式)
rabbitmqctl set_permissions -p vhost user conf write read

ArchLinux网络配置

使用工具 netctl

  • 获取网卡名称ip link
    1. lo xxxxx
    2. enp0s3 xxxxx
  • 编写网络配置文件 netctl edit enp0s3-dhcp

    Description=’enp0s3 dhcp’
    Interface=enp0s3 #指定网卡名称
    Connection=ethernet # 指定网络类型 wifi等其他
    IP=dhcp # dhcp获取
    DHCPClient=dhcpd # dhcp客户端可选dhcpcd和dhclient 默认dhclient
    DHCPReleaseOnStop=no #你懂的
    IP6=dhcp # 是否允许IPv6
    DHCP6Client=dhccpcd # IPv6 DHCP客户端

  • 启动netctl start enp0s3-dhcp

  • 加入到systemd并开启机自动启动 netctl enable enp0s3-dhcp

zsh HOME键和END键失效的解决

~/.zshrc文件追加如下内容进行keybind:

#Rebind HOME and END to do the decent thing:
bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line
case $TERM in (xterm*)
bindkey '\eOH' beginning-of-line
bindkey '\eOF' end-of-line
esac

#To discover what keycode is being sent, hit ^v
#and then the key you want to test.

#And DEL too, as well as PGDN and insert:
bindkey '\e[3~' delete-char
bindkey '\e[6~' end-of-history
bindkey '\e[2~' redisplay

#Now bind pgup to paste the last word of the last command,
bindkey '\e[5~' insert-last-word

Archlinux GPT+(U)EFI安装总结

启动

通过efi启动进入arch安装

关于分区

分区工具parted

创建GPT分区表mklabel gpt yes 清空全盘。(危险操作)

创建分区mkpart primary 0K 512M 给ESP其他自由分配。

设置启动 set 1 boot on

格式化ESP为vfat格式mkfs.vfat /dev/disk1

在给 (U)EFI 分区输入 Hex Code 时, 输入 EF00

挂载

mount /dev/disk2 /mnt
mkdir -p /boot/efi && mount -t vfat /dev/disk1 /mnt/boot/efi

安装基本系统

pacstrap /mnt base base-devel

进入系统

arch-chroot /mnt

使grub支持efi

pacman -S efibootmgr grub-efi-x86_64 grub-bios

创建引导

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch-grub --recheck

grub-mkconfig -o /boot/grub/grub.cfg

重启进入系统

退出chroot
exit
重启
reboot

ArchLinux的pacman命令详解

安装软件包

安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:

pacman -S package_name1 package_name2

有时候在不同的软件仓库中,一个软件包有多个版本(比如extra和testing)。你可以选择一个来安装:

pacman -S extra/package_name
pacman -S testing/package_name

删除软件包
删除单个软件包,保留其全部已经安装的依赖关系

pacman -R package_name

删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:

pacman -Rs package_name

缺省的,pacman会备份被删除程序的配置文件,将它们加上*.pacsave扩展名。如果你在删除软件包时要同时删除相应的配置文件(这种行为在基于Debian的系统中称为清除purging),你可是使用命令:

pacman -Rn package_name

当然,它也可以加上-s参数来删除当前无用的依赖。这样的话,真正删除一个软件包、它的配置文件以及所有不再需要的依赖的命令如下:

pacman -Rsn package_name

注意!Pacman不会删除软件包安装后才创建的配置文件。你可以从你的home文件夹中手动删除它们。

升级系统
Pacman能够只用一个指令来升级系统中所有已安装的包。升级的时间取决于你的系统有多新。

pacman -Su

当然,最好做法的是将升级系统和同步仓库数据合成为一条指令:

pacman -Syu

查询包数据库
Pacman可以在包数据库中查询软件包,查询位置包含了包的名字和描述:

pacman -Ss package

要查询已安装的软件包:

pacman -Qs package

一旦你得到了软件包的完整名字,你可以获取关于它的更为详尽的信息:

pacman -Si package
pacman -Qi package

要获取已安装软件包所包含文件的列表:

pacman -Ql package

你也可以通过查询数据库获知目前你的文件系统中某个文件是属于哪个软件包。

pacman -Qo /path/to/a/file

要罗列所有不再作为依赖的软件包(孤立orphans):

pacman -Qdt

Pacman使用-Q参数来查询本地软件包数据库。参见:

pacman -Q –help

…而使用-S参数来查询远程同步的数据库。参见:

pacman -S –help

详情可参见pacman man。

其它用法
Pacman是个非常广泛的包管理工具,这里只是它的一些其它主要特性。

下载包而不安装它:

pacman -Sw package_name

安装一个’本地’包(不从源里):

pacman -U /path/to/package/package_name-version.pkg.tar.gz

安装一个’远程’包(不从源里):

pacman -U http://url/package_name-version.pkg.tar.gz

清理当前未被安装软件包的缓存(/var/cache/pacman/pkg):

pacman -Sc

完全清理包缓存:

pacman -Scc

Warning: 关于pacman -Scc,仅在你确定不需要做任何软件包降级工作时才这样做。pacman -Scc会从缓存中删除所有软件包。
要删除孤立软件包(递归的,要小心):

pacman -Rs $(pacman -Qtdq)

重新安装你系统中所有的软件包(仓库中已有的):

pacman -S $(pacman -Qq | grep -v “$(pacman -Qmq)”)

获取本地软件包和它们大小的一个已排序清单列表:

LANG=C pacman -Qi | sed -n ‘/^Name[^:]*: (.)/{s//\1 /;x};/^Installed[^:]: (.*)/{s//\1/;H;x;s/\n//;p}’ | sort -nk2

要了解更详细的参数开关可以pacman –help或者man pacman。

配置
Pacman的配置文件位于/etc/pacman.conf。关于配置文件的进一步信息可以用man pacman.conf查看。

常用选项
常用选项都在[options]段。阅读man手册或者查看缺省的pacman.conf可以获得有关信息和用途。

跳过升级软件包
如果由于某种原因,你不希望升级某个软件包,可以加入内容如下:

IgnorePkg = 软件包名

跳过升级软件包组
和软件包一样,你也可以象这样跳过升级某个软件包组:

IgnoreGroup = gnome

附注:
ArchLinux的版本库里面包括:
core-核心软件包
extra-其他常用软件
community-社区软件包,譬如Mysql等。
testing-正在测试阶段,还没有正式加入源的软件包。通常软件版本比较新,但是不是非常稳定
release-已经发布的软件包
unstable-非正式的软件包,可能包括以前版本的软件或者测试软件

因为Pacman的软件都是从源里面更新,因此在/etc/pacman.d里面配置这些软件源的地址。
在/etc/pacman.d目录里面分别有上面几种软件类型对应的文件名,可以自己手工配置这些软件源的地址。

Ubuntu 16.04 LTS 正式发布

就在刚刚Canonical正式发布了Ubuntu 16.04 LTS (Xenial Xerus) 长期支持版本,官方会提供长达5年的技术支持(包括常规更新/Bug修复/安全升级),一直到2021年4月份。

16.04最大的变化就是采用了Linux 4.4版系统内核,同时对几乎所有系统应用都进行了升级,包括LibreOffice 5.1.2、Mozilla Firefox 45.0.2、Python 3.5、OpenSSH 7.2p2、PHP 7.0、MySQL 5.7、GCC 5.3、Binutils 2.26、Glibc 2.23、Apt 1.2、GNOME 3.18 Stack,并支持安装snap格式。

驱动方面AMD官方的fglrx显卡驱动、xorg.conf均被移除,使用开源的Radeon、AMDGPU

正式支持了ZFS ( https://insights.ubuntu.com/2016/02/18/zfs-licensing-and-linux/

官方下载地址:
http://releases.ubuntu.com/16.04/