0%

Linux 系统调优

Backlog 队列

  • net.core.somaxconn
    1
    2
    3
    4
    somaxconn - INTEGER
    Limit of socket listen() backlog, known in userspace as SOMAXCONN.
    Defaults to 4096. (Was 128 before linux-5.4)
    See also tcp_max_syn_backlog for additional tuning for TCP sockets.
    net.core.somaxconn 参数是 socket listen() 的 backlog 限制。用于控制全连接队列长度。默认值是4096(内核5.4版本以前是128)。如果 socket server 处理请求较慢,以至于监听队列填满后,新来的请求会被拒绝。
阅读全文 »

SFTP

SFTP (SSH File Transfer Protocol)是一种安全的文件传输协议。它通过SSH协议运行。它支持SSH的完整安全和身份验证功能。

SFTP已几乎取代了旧版FTP作为文件传输协议,并且正在迅速取代FTP/S。它提供了这些协议提供的所有功能,但更安全,更可靠,配置更简单。

SFTP还可以防止密码嗅探和中间人攻击。它使用加密和加密哈希函数保护数据的完整性,并对服务器和用户进行身份验证。

阅读全文 »

Linux Terminal Proxy 代理配置

如果需要在 Terminal 中使用代理,则需配置一些代理变量来实现。此方式适用于所有 Linux 发行版、MacOS 等类Unix系统。

阅读全文 »

问题

基础环境

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

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

详情如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
opsarno@DESKTOP-T3JD9UU:~$ npm install nrm -g
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated coffee-script@1.7.1: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated mkdirp@0.3.5: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm ERR! code EACCES
npm ERR! syscall rename
npm ERR! path /home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/npm-753362b2/node_modules/string-width
npm ERR! dest /home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/string-width-8aef3ce2
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, rename '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/npm-753362b2/node_modules/string-width' -> '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/string-width-8aef3ce2'
npm ERR! [OperationalError: EACCES: permission denied, rename '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/npm-753362b2/node_modules/string-width' -> '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/string-width-8aef3ce2'] {
npm ERR! cause: [Error: EACCES: permission denied, rename '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/npm-753362b2/node_modules/string-width' -> '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/string-width-8aef3ce2'] {
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'rename',
npm ERR! path: '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/npm-753362b2/node_modules/string-width',
npm ERR! dest: '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/string-width-8aef3ce2'
npm ERR! },
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'rename',
npm ERR! path: '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/npm-753362b2/node_modules/string-width',
npm ERR! dest: '/home/opsarno/.nvm/versions/node/v12.20.1/lib/node_modules/.staging/string-width-8aef3ce2',
npm ERR! parent: 'nrm'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR! /home/opsarno/.npm/_logs/2021-02-19T13_28_26_969Z-debug.log

分析

默认 NVM 安装在用户家目录下,WSL环境中相当于安装在Windows C盘,此时如果有一些高危操作的话(如删除、重命名),可能会触发系统的保护性机制,导致权限不足。

也有资料怀疑是 Symlink Problems 问题。

解决方法,将 NVM (如未使用NVM,则是 node),安装到非系统盘符,默认WSL将所有Windows盘符挂载到 /mnt/ 目录下。

1
2
3
4
5
6
7
# 我这里在 d 盘下,新建了一个目录,用于存放 .nvm 工具
mkdir /mnt/d/data/
mv ~/.nvm /mnt/d/data/.nvm

# 更新 ~/.bashrc 中的 nvm 变量配置
export NVM_DIR="/mnt/d/data/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

重新打开 terminal,再次执行安装,成功!

参考资料

说明

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

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

  • rsync
  • Nexus
  • createrepo
阅读全文 »

概述

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

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

阅读全文 »

指令语法

1
proxy_pass URL;

URL 由三部分组成:

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

location 指令用途

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

阅读全文 »

GitHub Pages 博客

主要组件

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

博客示例: