0%

问题

基础环境

1
2
3
系统:Windows WSL
工具:NVM (Node Version Manager)
版本:node-v12.20.1、npm-6.14.10

全局安装工具包时抛错 npm ERR! Error: EACCES: permission denied

阅读全文 »

说明

通常情况下,企业内部会维护一套 Yum Repository Mirrors,以便于快速的安装更新一些软件包。即使是在阿里云VPC环境下,也会有一些三方或自定义的软件包需要内部镜像源来管理。

针对这些需求,目前有三种镜像源的管理方式

  • rsync
  • Nexus
  • createrepo
阅读全文 »

概述

NGINX 重写模块 ngx_http_rewrite_module 用于使用 PCRE正则表达式 更改请求URI,返回重定向,并有条件地选择配置。

主要的指令 break, if, return, rewrite, set

指令执行顺序:

  1. 按顺序执行 server 区块中的 rewrite 模块指令
  2. 如果发生 rewrite 地址重写,执行 location 匹配
  3. 按顺序执行 匹配 location 中的 rewrite指令

如果URI发生重写,就会重新循环执行1-3,直到找到真实存在的文件。

如果循环超过10次,则返回 500 Internal Server Error 错误。

阅读全文 »

指令语法

1
proxy_pass URL;

URL 由三部分组成:

  • 协议 可以指定 http 或 https
  • 地址 可以指定 域名 或 ip 以及 可选端口
  • 可选的URI

示例

1
2
3
4
proxy_pass http://www.abc.com;
proxy_pass http://127.0.0.1:8000/uri/;

proxy_pass http://unix:/tmp/backend.socket:/uri/;

此外,可将地址指定为一个主机组 server group,使用 upstream 来定义主机组。

当使用 rewrite 在代理位置更改URI时(地址重写),则重写后的URI会传递给后端服务器。

阅读全文 »

location 指令用途

根据请求 URI 设置配置,进而对请求做不同的处理和响应。

语法规则

1
2
3
# 关键字    修饰符  匹配的前缀字符既URI { 要执行的操作 }
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }

语法规则很简单,关键字location后跟可选的修饰符,后面是要匹配的前缀字符既URI,花括号中是要执行的操作。

location 一般定义在 server 区块中,也可以嵌套定义在 location 区块中,但命名 location 不可嵌套。

阅读全文 »

GitHub Pages 博客

主要组件

Hexo 其实是一种静态站点生成器,也可以用 HugoJekyIIMkDocs 等其它静态站点生成器替代。更多生成器参见:Site Generators

博客示例:

Bind DNS 日志记录

语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
logging {
# 定义 channel
[ channel channel_name {
( file path_name
[ versions ( number | unlimited ) ]
[ size size_spec ]
| syslog syslog_facility
| stderr
| null );

[ severity (critical | error | warning | notice | info | debug [ level ] | dynamic ); ]

[ print-category yes or no; ]
[ print-severity yes or no; ]
[ print-time yes or no; ]
}; ]

# 定义 category
[ category category_name {
channel_name ; [ channel_name ; ... ]
}; ]
...
};
阅读全文 »

Environment

1
2
3
Python:2.7.13
Pip:9.0.1
matplotlib:2.0.0 (pip install matplotlib)

Error Message

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>> import matplotlib.pyplot
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/soft/python2/lib/python2.7/site-packages/matplotlib/pyplot.py", line 115, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/opt/soft/python2/lib/python2.7/site-packages/matplotlib/backends/__init__.py", line 32, in pylab_setup
globals(),locals(),[backend_name],0)
File "/opt/soft/python2/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 6, in <module>
from six.moves import tkinter as Tk
File "/opt/soft/python2/lib/python2.7/site-packages/six.py", line 203, in load_module
mod = mod._resolve()
File "/opt/soft/python2/lib/python2.7/site-packages/six.py", line 115, in _resolve
return _import_module(self.mod)
File "/opt/soft/python2/lib/python2.7/site-packages/six.py", line 82, in _import_module
__import__(name)
File "/opt/soft/python2/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
阅读全文 »

Linux Python2 Tab Autocomplete

① 新建 vim ~/.pystartup Python2 启动时的环境变量加载文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Add auto-completion and a stored history file of commands to your Python
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
# bound to the Esc key by default (you can change it - see readline docs).
#
# Store the file in ~/.pystartup, and set an environment variable to point
# to it: "export PYTHONSTARTUP=~/.pystartup" in bash.
import atexit
import os
import readline
import rlcompleter
readline.parse_and_bind('tab: complete')
historyPath = os.path.expanduser("~/.pyhistory")
def save_history(historyPath=historyPath):
import readline
readline.write_history_file(historyPath)
if os.path.exists(historyPath):
readline.read_history_file(historyPath)
atexit.register(save_history)
del os, atexit, readline, rlcompleter, save_history, historyPath
阅读全文 »

实验环境

本文用 Vmware Workstation 模拟出来的一个VPN环境,其中主机参数如下:

1
2
3
4
5
6
7
8
# 任意的WEB服务
LAN WEB SERVER 10.1.1.11

# Centos 6.X(Openvpn 2.3.X)
VPN SERVER 10.1.1.10(LAN) 10.1.2.10(WAN)

# Windows 7 (Openvpn Client)
WAN Client PC 10.1.2.11

目的

客户端通过VPN连接到 VPN Server,然后使之能够访问到内部的WEB 服务,实际生产环境中应用大同小异。

阅读全文 »