《Nginx Cookbook 2019》中文版第一章基础知识

0.0 最前面话

最近看了一本关于NGINX的电子书,编排形式比较新颖,通过一问一答的方式来告诉读者如何快速上手NGINX,以及处理真实项目中的需求。书的内容简练概括,但涉及面较多,内容有4层和7层负载均衡,A/B测试,自动化部署,认证,Http2,debug和调优等,有些示例可以拿来直接用。由于原书暂无中文译本,姑且尝试翻译一下,90%机器翻译,10%人工修正。原书信息如下:

1.0 Introduction-简介

To get started with NGINX Open Source or NGINX Plus, you first
need to install it on a system and learn some basics. In this chapter
you will learn how to install NGINX, where the main configuration
files are, and commands for administration. You will also learn how
to verify your installation and make requests to the default server.

要开始使用开源版NGINX或NGINX Plus,你首先需要将在操作系统里面安装上并学习一些相关的基础知识。在本章中,你将学习如何安装nginx,其主要配置文件所在位置,以及管理命令。你还将学习如何验你的安装并向默认服务器发送请求。

Read More

Ansible如何通过跳板机连接目标机器

Ansible是配置管理工具,能够自动化部署,管理服务器。在实际工作中,我会用ansible来进行项目依赖的服务部署,比如nginx服务器,redis等部署。

在生产环境下,多台服务器往往部署在一个局域网内,没有公网ip,也不会对外暴露端口,这就导致本地不能通过ssh直接连接生产服务器。它需要连接到跳板机后然后再进行生产服务器操作。通过跳板机操作一来更安全,二来可以更好的监控和权限控制,但如果想要本地使用ansible对服务器进行操作,就被限制住了。此时我们可以更改ssh配置进行处理,已达到本地机器"直接"连接远程生产机器的目的。

Read More

Tmux——终端复用神器

Tmux是终端复用器(terminal multiplexer)的缩写。通过启动Tmux会话,然后在该会话中打开多个窗口,并且分屏形成矩形窗格,执行不同操作,能极大提高终端操作效率。tmux支持的特性有:

  1. 支持创建任意数量的窗口(window)
  2. 支持同一个窗口创建任意数量的窗格(panel)
  3. 支持垂直或水平分割窗口,并可以任意调整窗格大小
  4. 支持会话分离和重连
  5. 允许用户之间进行会话分享

Read More

Supervisor快速使用指南

简介

Supervisor是用于监控和管理类UNIX操作下进程的C/S系统。Supervisor不是作为进程id为1的init的替代,它只是用来控制应用程序的进程,它会跟其他进程开机启动时候一样,通过pid为1的进程启动。为了高可用,它本身也需要监控。

Supervisor的构成有4部分:

  • supervisord

    supervisord是Supervisor的守护进程,是C/S中S端,它响应客户端的命令,监控,重启奔溃异常退出的子进程,以及记录子进程的stdoutstderr等。supervisord默认配置文件是/etc/supervisord.conf

  • supervisorctl

    supervisorctl是Supervisor的命令行客户端,supervisorctl工作原理是发送命令给supervisord,来对其他进程的启动,关闭等操作

  • Web Server

    Supervisor也支持web形式客户端

  • XML-RPC Interface

    Supervisor提供了XML-RPC接口,通过此接口,我们可以询问和控制supervisor

Read More

PHP7各个版本新增特性

PHP从5.6 跳过6直接来到7,带来新的语言特性,更带来性能很大飞越。根据w3techs统计截止截止2019年5月18月有79%网站使用PHP做为服务端开发语言,这些网站使用的PHP版本统计如下:

Read More

Jupyter Notebook部署

Jupyter Notebook 是科学计算必备工具之一,它是一个开源的web应用程序,允许你创建和共享实时代码,可以用来进行数据清理和转换、统计建模、数据可视化、机器学习等等工作。

下面是使用supervisour和nginx来部署公开jupyter notebook服务过程。

安装jupyter notebook

推荐python3环境下安装jupyter。我系统是Ubuntu 18.04里面内置了python3,所以直接安装jupyter,如果系统python版本是python2.7,可以使用virtualenvwrapper进行多版本python管理。

下面使用pip来安装jupyter notebook

1
2
sudo apt-get install python3-pip // 安装pip3
sudo pip3 install jupyter // 安装jupyter

Read More

Spark简介PPT

9月份时候由于工作中涉及到大数据统计分析内容,研究了spark使用,10月份时候把研究内容在小组内简单做了一次分享。现在把分享的PPT贴出,分享过程中也涉及到真实项目使用spark演示,这部分为未贴出。

Read More

Docker使用过程中问题汇总(持续更新中)

下面是我在使用docker过程中遇到的一些问题以及解答,现记录下来备查。

1. 为什么有很多<none>:</none>镜像,有的删除不掉,有些却删除不掉?

我们执行命令docker images -a有时候会发现不少:镜像,使用docker rmi image_name删除这些none镜像时候,有时候能够成功,有时候却不能成功。这究竟为什么?

我们知道镜像是分层的,上面一层依赖下一层,下一层是上一次的父镜像层。就像下面这样:

我们可以通过docker inspect查看镜像ID 和父层镜像ID

Read More

Crontab使用完全指南

最近看了《Better PHP Development》一书,里面第6章专门讲了crontab使用指南,事无巨细,几乎涉及到crontab用法的方方面面。一直以为以为自己对crontab用法非常熟悉了,看完之后才发现有些地方之前确实不知道。现把书中重要内容记录到博客中,以便后续查阅。

Cron简介

cron是类Unix操作系统中基于时间的作业调度器,它会在未来某个时刻触发某些任务。这个名字源于希腊语“χρόνος”( chronos ),意思是时间。由于crontab命令是使用cron时候最常用的命令,所以我们通常会说crontab,其实也就是cron

如果我们查看/etc目录,我们可以看到cron.hourly, cron.daily, cron.weeklycron.monthly这样的目录,每个目录都对应于特定的执行频率。比如cron.hourly目录下面的脚本会按照每小时来执行。安排任务的一种方式是将脚本放在相对应的目录中。例如,为了每天运行db_backup.php,我们将它放在cron.daily中。若没有这个目录,我们需要手动创建cron.daily

Read More