Wayde's Blog

知识源于积累


  • 首页

  • 关于

  • 分类

  • 标签

  • 个人收藏

  • 归档

  • 搜索

用户自定义二级域名实现

发表于 2018-04-09 | 分类于 Nginx

场景一:

  1. 访问abc.realibox.com实际显示pandll.com站点内容,但地址栏仍然显示abc.pandll.com
  2. nginx检测abc未配置时,重定向到pandll.com,地址栏也显示pandll.com

场景二:

  1. 访问abc.pandll.com实际显示pandll.com/u/abc页面内容,地址栏仍然显示abc.pandll.com
  2. web检测abc未配置(即/u/abc不存在)时,跳转至pandll.com,地址栏也显示pandll.com
阅读全文 »

批量管理Git项目脚本

发表于 2018-03-30 | 分类于 Shell

应用场景: 本地clone有多个git项目,日常维护需要经常修改,又不想每次切换目录,然后pull、push代码…

使用方法:

  1. 创建shell脚本gghelp.sh

  2. 添加alias

    echo "alias gg='~/gghelp.sh'" >> ~/.bashrc

  3. 防止误删除

    sudo chattr +ae gghelp.sh

  4. 用法说明执行gg -x即可查看

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ gg -x
    Usage: gghelp.sh [-a --add] [-c --commit] [-d --diff]
    [-e --epush] [-p --pull] [-s --status]

    Options:
    -a|--add execute git add --all
    -c|--commit execute git commit
    -d|--diff execute git diff
    -e|--epush execute git push
    -p|--pull execute git pull
    -s|--add execute git status (default option)
阅读全文 »

Ubuntu 常用快捷键

发表于 2018-03-27 | 分类于 Ubuntu
快捷键 说明
Alt + F4 关闭当前窗口
Alt + F2 弹出命令行窗口
Alt + Tab 在窗口之间快速切换。(按住Shift可反向排序。)
Alt + ` 在同一个应用程序的不同窗口或Alt+Tab后选中的程序间切换
Super + S 激活工作区切换器。缩小所有工作区。
Super + W 激活“Expo”模式。显示当前工作区的所有窗口。
Ctrl + Alt + 方向键 在工作区之间切换
Ctrl + Alt + Shift + 方向键 将当前窗口移至其他工作区
Ctrl + Alt + Delete 注销
Ctrl + Super +D 隐藏所有窗口并显示桌面。再次按下按钮可以恢复窗口。
Ctrl + Alt + L 锁定屏幕
Print Screen 获取屏幕截图
Alt + Print Screen 获取窗口的截图
Shift + Print Screen 获取屏幕上某个区域的截图。光标变为十字。点击并拖动选择区域
Ctrl + Super + ↑ 最大化窗口
Ctrl + Super + ↓ 将最大化的窗口恢复到初始尺寸
Ctrl + Super + ← 在屏幕左半边纵向最大化窗口
Ctrl + Super + → 在屏幕右半边纵向最大化窗口
Alt + Space 弹出窗口菜单, 就像在标题栏上右键单击一样
Ctrl + Alt + F1~F6 打开虚拟终端tty1~6
Ctrl + Alt + F7~12 打开第1~6个GUI终端(由于系统一般只运行一个Unity,所有只有F7生效)
Ctrl + Shift 切换输入法

参考资料:
What does “Ctrl + Alt + F12” do?

KVM虚拟机安装Ubuntu 16.04

发表于 2018-03-23 | 分类于 KVM
  1. 创建10G系统盘(固态硬盘)

    lvcreate -L 10G -n lv0-ubuntu16.04 vg0

  2. 创建50G挂载盘(机械硬盘)

    lvcreate -L 50G -n lv9-ubuntu16.04 vg9

  3. 创建虚拟机

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    virt-install \
    --virt-type kvm \
    --name ubuntu16.04 \
    --ram 8192 \
    --cdrom=/uni/iso/ubuntu-16.04.3-server-amd64.iso \
    --cpu core2duo \
    --network bridge=br0,model='e1000' \
    --graphics vnc,listen=0.0.0.0 \
    --disk path=/dev/mapper/vg0-lv0--ubuntu16.04,bus='ide' \
    --disk path=/dev/mapper/vg9-lv9--ubuntu16.04,bus='ide' \
    --noautoconsole \
    --os-type=linux \
    --os-variant=ubuntu16.04
  4. 通过vpc连接继续安装

  5. 安装完成后设置开机启动

    virsh autostart ubuntu16.04

    常用命令请查看KVM常用操作

  6. 磁盘扩容

    • 登陆宿主机,扩容逻辑卷

      $ lvextend -L +10G /dev/vg0/lv0v31

    • 重启虚拟机

    • 登陆虚拟机,扩展分区

      $ sudo apt-get install gparted

      $ sudo gparted 修改配置

      如果遇到 (gpartedbin:2088): Gtk-WARNING **: cannot open display: localhost:10.0,尝试执行export DISPLAY=:0.0,再ssh连上重试。

参考资料:
使用virt-install手动创建qcow2镜像并安装ISO
Ubuntu 16.04 Server 版安装过程图文详解
kvm虚拟化之virt-install

Aliyun Ubuntu 服务器配置记录

发表于 2018-03-21 | 分类于 Ubuntu

永久修改主机名称

1
2
$ cat /etc/hostname 
your-hostname

用户管理

创建用户adduser

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ adduser test
Adding user `test' ...
Adding new group `test' (1006) ...
Adding new user `test' (1006) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

删除用户userdel

-f, –force 强制删除用户,即使用户当时已登录,同时删除用户目录和用户邮件

-r, –remove 同时删除用户目录和用户邮件

-R, –root Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.

-Z, –selinux-user Remove any SELinux user mapping for the user’s login.

1
2
$ sudo userdel -r test
userdel: test mail spool (/var/mail/test) not found
阅读全文 »

Nginx实现负载均衡

发表于 2018-03-15 | 分类于 Nginx
1
2
3
4
5
6
7
8
9
10
11
12
# 在http节点下,添加upstream节点
upstream my_service {
server 192.168.1.23:8080 weight=2;
server 192.168.1.24:8080 weight=1;
server 192.168.1.25:8080 weight=1;
}

# 将server节点下的location节点中的proxy_pass配置为:http:// + upstream名称
location / {
proxy_pass http://my_service;
proxy_redirect default;
}

upstream分配策略

  • 轮询(默认)

    upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。适用于图片服务器集群和纯静态页面服务器集群

  • weight(权重)

    指定轮询几率,weight和访问比率成正比,用于服务器性能不均的情况。

  • ip_hash

    每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器

  • fair(第三方插件)

    按服务器的响应时间来分配请求,响应时间短的优先分配

  • url_hash(第三方插件)

    按访问url的hash结果来分配请求,使每个url定向到同一个服务器,服务器为缓存时比较有效

注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。

1
2
3
4
5
6
upstream resinserver {
server 10.0.0.10:7777;
server 10.0.0.11:8888;
hash $request_uri;
hash_method crc32;
}

upstream 状态值

  • down

    表示当前的server暂时不参与负载

  • weight

    默认为1,weight越大,负载的权重就越大

  • max_fails

    允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.

  • fail_timeout

    max_fails次失败后,暂停的时间

  • backup

    其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻

参考资料:
配置nginx到后端服务器负载均衡
Nginx配置upstream实现负载均衡
nginx基本配置与参数说明以及Nginx中的upstream轮询机制介绍
Nginx基本服务与upstream配置详解

Nginx错误页面配置

发表于 2018-03-15 | 分类于 Nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
error_page  404 /404.html;
location =/404.html {
root /home/blog/blog.pandll.com/blog/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#location / {
# autoindex on;
# try_files $uri $uri/ =404;
#}
#try_files用法

参考资料:
Nginx实现404页面的几种方法,你知道几种

Linux nmap命令

发表于 2018-03-15 | 分类于 Linux

Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。

  • 扫描局域网ip

    nmap 10.17.1.*

  • 查看局域网mac

    cat /proc/net/arp

  • 扫描IP开放端口

    nmap -Pn 120.79.148.49

参考资料:
给Linux系统管理员准备的Nmap命令的29个实用范例
Linux 下查看局域网内所有主机IP和MAC(及nmap的用法)

Nginx gzip压缩

发表于 2018-03-15 | 分类于 Nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
http {
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 6;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css font/ttf font/otf image/svg+xml;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
}

server {
location ~* ^.+\.(eot|ttf|otf|woff|svg)$ {
access_log off;
expires max;
}
}

参考资料:
Nginx 开启gzip 压缩
Nginx开启Gzip压缩大幅提高页面加载速度
Nginx开启 gzip和缓存

grep正则表达式

发表于 2018-03-15 | 分类于 Shell

grep正则表达式元字符集:

^ 锚定行的开始 如:’^grep’匹配所有以grep开头的行。

\$ 锚定行的结束 如:’grep$’匹配所有以grep结尾的行。

. 匹配一个非换行符的字符 如:’gr.p’匹配gr后接一个任意字符,然后是p。

* 匹配零个或多个先前字符 如:’grep’匹配所有一个或多个空格后紧跟grep的行。 .一起用代表任意字符。

[] 匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep。

[^] 匹配一个不在指定范围内的字符,如:’[^A-FH-Z]rep’匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

\(..\) 标记匹配字符,如’(love)‘,love被标记为1。

\ 锚定单词的开始,如:’\匹配包含以grep开头的单词的行。

\> 锚定单词的结束,如’grep>‘匹配包含以grep结尾的单词的行。

x{m} 重复字符x,m次,如:’0{5}‘匹配包含5个o的行。

x{m,} 重复字符x,至少m次,如:’o{5,}‘匹配至少有5个o的行。

x{m,n}重复字符x,至少m次,不多于n次,如:’o{5,10}‘匹配5–10个o的行。

\w 匹配文字和数字字符,也就是[A-Za-z0-9],如:’G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p。

\b 单词锁定符,如: ‘\bgrep\b’只匹配grep。

常用的 grep 选项有:

-c 只输出匹配行的个数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
-V 显示软件版本信息
使用grep匹配时最好用双引号引起来,防止被系统误认为参数或者特殊命令,也可以匹配多个单词。

匹配实例:

grep -c “48” test.txt 统计所有以“48”字符开头的行有多少
grep -i “May” test.txt 不区分大小写查找“May”所有的行)
grep -n “48” test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
grep -v “48” test.txt 显示输出没有字符“48”所有的行)
grep “471” test.txt 显示输出字符“471”所在的行)
grep “48;” test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
grep “48[34]” test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
grep “^[\^48]” test.txt 显示输出行首不是字符“48”的行)
grep “[Mm]ay” test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
grep “K…D” test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
grep “[A-Z][9]D” test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行
grep “[35]..1998” test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行
grep “4\{2,\}” test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行
grep “9\{3,\}” test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行
grep “9\{2,3\}” test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行
grep -n “^$” test.txt 显示输出空行的行号
ls -l |grep “^d” 如果要查询目录列表中的目录 同:ls -d *
ls -l |grep “^d[d]” 在一个目录中查询不包含目录的所有文件
ls -l |grpe “^d…..x..x” 查询其他用户和用户组成员有可执行权限的目录集合

参考资料:
linux grep 正则表达式

1…345…14
Wayde

Wayde

140 日志
14 分类
112 标签
GitHub StackOverflow Instagram
© 2012–2022 Wayde
粤ICP备2020135844号