nginx 信号管理
概述 本文笔者主要介绍 nginx 信号管理方面的知识及实践操作,内容包括 nginx 信号管理体系,nginx 信号管理的常见操作,通过具体案例来分析,如 nginx 的 reload,热升级以及日志切割。
nginx 命令行管理nginx 的管理可以通过两种方式实现。一种是通过命令行,下面是 nginx 常用的操作命令,
[email protected]:~# nginx -hnginx version: nginx/1.10.3 (Ubuntu)Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configurati ...
ubuntu 使用 postfix 和 AWS-SES 发送邮件
在日常开发中,邮件发送是个比较常见的场景。因此出现了很多相关的软件和服务,各大云厂商也推出自己的邮件服务。今天笔者就像大家介绍一种常见的组合,AWS 的邮件服务 SES 与邮件服务器 postfix 的配置和使用方法。
概述
什么是 AWS-SES
Amazon Simple Email Service (SES) 是一种经济高效、灵活且可扩展的电子邮件服务,使开发人员能够从任何应用程序中发送电子邮件。 您可以快速配置 Amazon SES 以支持多种电子邮件使用案例,包括交易、营销或群发电子邮件通信。
什么是 postfix
Postfix 是一种电子邮件服务器,它是由任职于 IBM 华生研究中心(T.J. Watson Research Center)的荷兰籍研究员 Wietse Venema 为了改良 sendmail 邮件服务器而产生的。它是为了改良 sendmail 产生的,同时它兼容 sendmail,是比较常用的一种邮件服务器。
开通 Amazon Simple Email Service (SES)服务
创建一个 identity
此处我们为了演示方便,使用 ...
mydumper-myloader
简介mydumper 是一款开源的 MySQL 逻辑备份工具,主要由 C 语言编写。与 MySQL 自带的 mysqldump 类似,但是 mydumper 更快更高效。mydumper 的一些优点特性:
轻量级 C 语言开发
支持多线程备份数据,备份后按表生成多个备份文件
支持事务性和非事务性表一致性备份
支持将导出的文件压缩,节约空间
支持多线程恢复
支持已守护进程模式工作,定时快照和连续二进制日志
支持按指定大小将备份文件切割
数据与建表语句分离
下载安装 安装方式非常多,以下介绍几种常见的方式。
Ubuntu 中自带了 myloader
sudo apt-get install mydumper
使用 deb 包安装,以 Ubuntu 为例
apt-get install libatomic1wget https://github.com/mydumper/mydumper/releases/download/v0.11.5/mydumper_0.11.5-1.$(lsb_release -cs)_amd64.deb dpkg -i mydump ...
git 使用命令行保留原分支迁移代码仓库
有些时候我们需要对 git 仓库中的项目进行一些迁移,如从 a 账号迁移到 b 账号下,从 github 平台迁移到内部的 gitlab 平台等。一般平台会自带 migrate 或者 import 的功能,可以很方便的进行仓库的迁移。当然,我们也可以自行进行迁移,当需要迁移的项目比较多时,脚本进行迁移更快捷。
下面来看看如何进行手动迁移,同时在迁移后,保留原项目的分支和 tag,以及提交记录等。
先将待迁移的项目 clone 下来
12git clone --mirror <url_of_old_repo>cd <name_of_old_repo>
确保新的空仓库已经创建完成,然后即可将项目推送到新的空仓库中。
123git remote rm origingit remote add origin <url_of_new_repo>git push origin --mirror
大功告成,可以看到新的仓库中,项目的分支和 tag,以及提交记录等,都会保留。
laravel 源码分析 - 队列 Queue
laravel 源码分析具体注释见 https://github.com/FX-Max/source-analysis-laravel
前言 队列 (Queue) 是 laravel 中比较常用的一个功能,队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短 Web 请求和响应的时间。本文我们就来分析下队列创建和执行的源码。
本文笔者基于 laravel 5.8.* 版本
队列任务的创建 先通过命令创建一个 Job 类,成功之后会创建如下文件 laravel-src/laravel/app/Jobs/DemoJob.php。
123> php artisan make:job DemoJob> Job created successfully.
下面我们来分析一下 Job 类的具体生成过程。
执行 php artisan make:job DemoJob 后,会触发调用如下方法。
laravel-src/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Providers/Artisa ...
hexo 升级 5.4.0 出现错误解决方法 -hexo-theme-butterfly
周末升级了下 hexo 到新版本,发现升级后,构建时出现了一些错误,以下是出现的问题,及解决方法。
WARN Deprecated config detected: “external_link” with a Boolean value is deprecated. See https://hexo.io/docs/configuration for more details.
修改 _config.yml 文件,将如下内容做调整。
1external_link: true
将上面的内容,修改为如下内容。
1234external_link: enable: true # Open external links in new tab field: site # Apply to the whole site exclude: ''
err: TypeError: Cannot read property ‘bind’ of undefined
123err: TypeError: Cannot read property 'bind ...
YAML 语言初识
日常工作中,我们经常会遇到 YAML,例如 docker-compose 配置,ELK 中的 filebeat 配置, K8S 集群配置,ansible 的 playbook 等,也有越来越多的项目使用了 YAML 作为配置文件的选型。那今天,我们就来了解下它到底是何许人也。
什么是 YAMLYAML 官网:https://yaml.org/
YAML (YAML: YAML Ain’t Markup Language) 是一种类似 XML,JSON 的数据序列化语言,是一种通用的数据串行化格式。它是主要用来写配置文件的语言,比 XML 要简洁和简单,便于人阅读理解,号称 一种人性化的数据格式语言 。
正如其官网介绍,What It Is: YAML is a human friendly data serialization standard for all programming languages.
YAML 的基本语法 YAML 配置文件的后缀为 .yml,如 docker-compose.yml。
基本语法
大小写敏感
使用缩进表示层级关系
缩进不允 ...
AWS 修改 RDS 时区
查看 RDS 当前时区 默认情况下,AWS 的 RDS 采用的是 UTC 时间。而我们地区一般位于东八区,因此我们本地的时间是 UTC+8。
连接到 RDS 上,查询当前实例的时区。
1show variables where variable_name like 'time_zone';
显示的结果如下,表示当前 RDS 时区的 UTC。
time_zone UTC
调整 RDS 时区RDS 的时区调整是通过调整参数组来操作的。AWS 的 RDS 是不允许修改 default 参数组的。因此先要确认下当前 RDS 采用的参数组是不是 default 参数组。如果是 default 参数组,则需要新建一个参数组。然后在该参数组上调整 timezone 相关参数,然后变更 RDS 使用的参数组,使用新的参数组。
从左侧的参数组菜单进入,即可新建参数组。一般我们都会从把当前在使用的参数组作为模版来复制一份新的来调整。选择当前在使用的参数组,Actions->Copy 即可。以笔者测试为例,当前在使用的参数组为 pg-mysql57-demo ,复制过来的 ...
Laravel 调度任务不执行问题
在使用 laravel 的调度任务时候,有时候会出现正确配置了调度任务,但是脚本却没有执行的情况,具体什么问题呢,今天我们来分析一下。
1. 什么原因造成的 在使用 laravel 中的调度任务时,有些时候脚本一次的执行时间是不确定的,我们为了避免任务重复执行,会使用 withoutOverlapping 方法。withoutOverlapping 在调度任务开始时会创建一个锁,在该锁未过期之前,下一次的调度任务不会再次执行。默认情况下,这个锁的过期时间是 24h,当然也可以指定过期时间。关于这个锁的实现,会在后续文章中分析,实际上是一个互斥锁 (mutex)。
有些时候,由于一些特殊原因,导致上一次任务没有正常结束,这个锁还未过期情况下,就会出现调度任务不会执行的情况。
2. 如何解决 这种情况下,处理的情况也比较简单,手动清除锁即可。这个锁的生成位置由 config/cache.php 指定,默认情况下,在配置的 CACHE_DRIVER 是 file 的情况下,只需要将 storage/framework/cache 下的文件删除即可。
Happy coding.
MySQL- 出现 MySQL server has gone away 原因和解决方法
可能的原因
MySQL 服务宕机
MySQL 连接被主动 kill 掉
MySQL 连接超时
SQL 超长,超出 max_allowed_packet 限制
具体情况分析和处理 MySQL 服务宕机 可能是异常情况,访问过程中数据库宕机或重启了,期间的数据库访问请求会出现错误。此种情况可以查看对应时候的 MySQL 相关日志,或者查询 MySQL 运行时间。可通过运行时间和日志,判断该时间是否有服务中断。123456mysql> show global status like 'uptime';+---------------+----------+| Variable_name | Value |+---------------+----------+| Uptime | 23948658 |+---------------+----------+
MySQL 连接被主动 kill 掉 部分系统会配置一些连接数过多等情况下,脚本主动 kill 掉相关数据库请求进程,或者可能 DBA 等处理问题时手动 kill 掉,此种情况下也会出现报 ...