初始常用装机技巧和脚本

Backspace键显示乱码:

1
$ stty -a

看看 erase 后面是什么? ^H 或者 ^? 等等。用下面命令更改。

1
$ stty erase ^?

其中^?等要用键盘上的Backspace

BT/种子/磁力链接下载工具 —— Aria2 一键安装管理脚本

转载https://doub.io/shell-jc4/ 或者 https://github.com/ToyoDAdoubi
CentOS 7+ / Debian 6+ / Ubuntu 14.04 + 推荐 Debian 7 x64
安装步骤

注意:在有的时候,应该编辑脚本把其中的更改repo的部分删除,因为其实一般都有aria2的包。不删除可能会造成不重启无法安装其他包。

执行下面的代码下载并运行脚本。

1
2
3
$ wget -N --no-check-certificate https://softs.fun/Bash/aria2.sh && chmod +x aria2.sh && bash aria2.sh
# 如果上面这个脚本无法下载,尝试使用备用下载:
$ wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh

运行脚本后会出现脚本操作菜单,选择并输入 1 就会开始安装。

其他操作
启动:service aria2 start
停止:service aria2 stop
重启:service aria2 restart
查看状态:service aria2 status
配置文件:/root/.aria2/aria2.conf (配置文件包含中文注释,但是一些系统可能不支持显示中文)
其中默认密匙建议修改
默认下载目录:/usr/local/caddy/www/aria2/Download

用vim时,鼠标右键不能粘贴而是进入了visual模式。

方法一:
在普通模式下键入:set mouse-=a【不包括引号)】

方法二:
编辑 ~/.vimrc 文件,加入如下代码:

1
2
if has('mouse')
set mouse-=a endif

方法一每次打开vim时都需要设置一次。
方法二改了配置文件后,问题就解决了。

set mouse=a【这个是用来开启鼠标功能的,a表示所有模式】
vi的三种模式:命令模式,插入模式,可视模式.鼠标可以启动于各种模式中:
The mouse can be enabled for different modes:
n Normal mode
v Visual mode
i Insert mode
c Command-line mode
h all previous modes when editing a help file
a all previous modes
r for |hit-enter| and |more-prompt| prompt
Normally you would enable the mouse in all four modes with:
:set mouse=a
When the mouse is not enabled, the GUI will still use the mouse for
modeless selection. This doesn’t move the text cursor.
所以配置文件中的set mouse=a启动了所有模式,这样就屏蔽了鼠标右健功能.

Aria2在线管理面板 —— AriaNg

转载https://doub.io/wlzy-30/

安装 AriaNg(前端/HTML+JS)
Github项目:https://github.com/mayswind/AriaNg
下载地址:https://github.com/mayswind/AriaNg/releases/latest
AriaNg是一个前端(HTML+JS静态)控制面板,不需要和 Aria2(后端/服务端)放在一个服务器或者设备中,你甚至可以只在服务器上面搭建Aria2后端,然后访问别人建好的 AriaNg前端面板,也可以远程操作Aria2后端!
AriaNg官方演示页面:http://ariang.mayswind.net/
本地安装(可选步骤,不打算本地安装 AriaNg就跳过)
AriaNg是一个 HTML+JS 纯静态一个Aria2的Web面板,所以不需要编译任何环境。
AriaNg的前端面板可以放在你本地电脑上面,下载解压后后直接用浏览器打开 index.html 文件就能使用了。

安装 AriaNg

新建Aria2下载文件夹 并进入文件夹

1
$ mkdir /usr/local/caddy/www/aria2/Download && cd /usr/local/caddy/www/aria2

下载并解压 AriaNg 文件,这段代码会自动检测并下载最新版本

1
Ver=$(curl -m 10 -s "https://github.com/mayswind/AriaNg/releases/latest"|sed -r 's/.*tag\/(.+)\">redirected.*/\1/')

如果上面自动检测最新版本的代码返回空白或者错误,那么请访问 https://github.com/mayswind/AriaNg/releases/latest 来查看最新版本号。
例如手动获取的版本号是 0.2.0,那么手动执行命令: Ver=”0.2.0” ,然后继续下面步骤即可。

1
wget -N --no-check-certificate "https://github.com/mayswind/AriaNg/releases/download/${Ver}/aria-ng-${Ver}.zip" && unzip aria-ng-${Ver}.zip && rm -rf aria-ng-${Ver}.zip

或者

1
$ wget -N --no-check-certificate "https://github.com/mayswind/AriaNg/releases/download/0.2.0/aria-ng-0.2.0.zip" && unzip aria-ng-0.2.0.zip && rm -rf aria-ng-0.2.0.zip

注意,所有文件会解压到当前目录!没有单独文件夹!

赋予虚拟主机文件夹权限

1
$ chmod -R 755 /usr/local/caddy/www/aria2

删除.user.ini

LNMP无法删除或更改权限,显示:rm: cannot remove .user.ini: Operation not permitted
无法删除“.user.ini”文件解决方法,运行后删除即可

1
$ chattr -i /home/wwwroot/yoursite/.user.ini

如果是需要修改文件,记得修改完以后运行:

1
chattr +i /home/wwwroot/yoursite/.user.ini

chattr命令:有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。

Python Shadowsocks 安装

转贴https://teddysun.com/342.html
使用root用户登录,运行以下命令:

1
2
3
$ wget --no-check-certificate -O shadowsocks.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
chmod +x shadowsocks.sh
./shadowsocks.sh 2>&1 | tee shadowsocks.log

安装完成后,脚本提示如下:

1
2
3
4
5
6
7
8
Congratulations, Shadowsocks-python server install completed!
Your Server IP :your_server_ip
Your Server Port :your_server_port
Your Password :your_password
Your Encryption Method:your_encryption_method
Welcome to visit:https://teddysun.com/342.html
Enjoy it!

卸载方法:
使用root用户登录,运行以下命令:

1
$ ./shadowsocks.sh uninstall

单用户配置文件示例(2015 年 08 月 28 日修正):
配置文件路径:/etc/shadowsocks.json

1
2
3
4
5
6
7
8
9
10
{
"server":"0.0.0.0",
"server_port":your_server_port,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your_password",
"timeout":300,
"method":"your_encryption_method",
"fast_open": false
}

多用户多端口配置文件示例(2015 年 08 月 28 日修正):
配置文件路径:/etc/shadowsocks.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"server":"0.0.0.0",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
"8989":"password0",
"9001":"password1",
"9002":"password2",
"9003":"password3",
"9004":"password4"
},
"timeout":300,
"method":"your_encryption_method",
"fast_open": false
}

使用命令(2015 年 08 月 28 日修正):
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
状态:/etc/init.d/shadowsocks status

bypy的安装

安装
重要:需要把系统的区域编码设置为UTF-8。(参见:http://perlgeek.de/en/article/set-up-a-clean-utf8-environment)
$ dpkg-reconfigure locales
通过pip来安装:pip install bypy (支持Python 2.7+, 3.3+)
运行

作为独立程序: 运行 bypy (或者python -m bypy,或者python3 -m bypy)
可以看到命令行支持的全部命令和参数。
作为一个包,在代码中使用: import bypy
简单的图形界面: 运行 bypygui
要找多线程图形界面的,这个貌似不错:bcloud
基本操作
显示使用帮助和所有命令(英文):

1
bypy

第一次运行时需要授权,只需跑任何一个命令(比如 bypy info)然后跟着说明(登陆等)来授权即可。授权只需一次,一旦成功,以后不会再出现授权提示.
更详细的了解某一个命令:

1
bypy help <command>

显示在云盘(程序的)根目录下文件列表:

1
bypy list

把当前目录同步到云盘:

1
bypy syncup

or

1
bypy upload

把云盘内容同步到本地来:

1
bypy syncdown

or

1
bypy downdir /

比较本地当前目录和云盘(程序的)根目录(个人认为非常有用):

1
bypy compare

更多命令和详细解释请见运行bypy的输出。

调试

运行时添加-v参数,会显示进度详情。
运行时添加-d,会显示一些调试信息。
运行时添加-ddd,还会会显示HTTP通讯信息(警告:非常多)

Linux看端口占用

使用命令:

1
$ netstat –apn

包安装Node.js 6

1
2
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs

显示Linux版本

1
lsb_release -a

升级Debian 7系统到Debian 8系统

之前,要把当前系统上的所有软件升级到最新版本,输入下面的命令:

1
apt-get update && apt-get upgrade -y

  1. 更新source.list软件源文件
    现在编辑Debian的apt软件源文件/etc/apt/sources.list,将文件中所有的wheezy替换成jessie。我们可以用sed命令来实现。
    手动改,或者:

    1
    sed -i 's/wheezy/jessie/g' /etc/apt/sources.list
  2. 再次升级软件包
    在更新完软件源文件后,先升级软件包。这一步被称为最小化升级(minimal upgrade)。

    1
    apt-get update && apt-get upgrade -y
  3. 升级系统版本至Debian 8 Jessie
    再升级系统版本,输入下面的命令。这一步被称为全体升级(full upgrade)。

    1
    apt-get dist-upgrade -y
  4. 清除旧的依赖关系和软件安装包
    分别执行下面的两个命令

    1
    apt-get autoremove && apt-get clean

apt-get autoremove用来删除已经不需要的依赖关系。apt-get clean会清除安装软件时下载的所有deb安装包,这些安装包在/var/cache/apt/archives目录下。在软件安装完成后,这些deb安装包就没什么用了。对于硬盘容量有限的服务器来说apt-get clean命令可以腾出很多空间。你可以输入下面的命令来查看/var/chace/apt/archives目录下deb安装包的总大小。

1
du -sh /var/cache/apt/archives

查看硬盘情况

  1. df -lh 命令

df 是来自于coreutils 软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;

  1. fdisk -l 命令

fdisk 是一款强大的磁盘操作工具,来自util-linux软件包,我们在这里只说他如何查看磁盘分区表及分区结构;通过-l 参数,能获得机器中所有的硬盘的分区情况;

  1. cfdisk -Ps命令 (注意P是大写)
    cfdisk 也是一款不错的分区工具;在有些发行版中,此工具已经从util-linux包中剔除;cfdisk 简单易用是他的特点;
    查看磁盘分区的用法 cfdisk -Ps 磁盘设备名 只有一个硬盘也可以用 cfdisk -Ps

虚拟主机重定向http到https

通过 .htaccess 设置重定向实现强制 https 访问,如果已经购买并配置好了 SSL 证书,想要将 http 直接重定向到 https 访问,可以用 Apache 的 .htaccess 文件来设置,具体代码如下:
只需要将下列代码任选其一,放到 .htaccess 文件中即可,如果 .htaccess 文件中已经有内容,请将重定向代码放在最前面。
可以放到子目录,但是系统会逐级查看上一级的.htaccess文件并生效。
代码 1(需要修改代码中的 domain.com 为你自己的域名):

1
2
3
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]

代码 2 (需要修改代码中的 domain.com 为你自己的域名):

1
2
3
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]

代码 3(无需修改):

1
2
3
4
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

附加域或子域跳转的问题

如果在主域名根目录(public_html)里的.htaccess文件中添加了以上代码,将作用于该主机里的所有站点,也就是附加域、子域也会强制使用https访问,如果不希望这样,可以在相应的域名根目录的.htaccess文件中添加以下代码:

1
RewriteCond %{HTTPS} !=off

树莓派格式化,分区,挂载U盘

先分区

1
sudo fdisk /dev/sd?

先删除原来的分区,再新建。
然后格式化

1
sudo mkfs -t msdos /dev/sda?

拷贝一个文件过去试一下,应该是最好到Windows上重新格式化一次。

挂载

1
2
mkdir ~/upan
sudo mount -o iocharset=utf8 /dev/sda1 ~/upan

应该可以用了,加上utf8的部分才能操作中文的文件。

Caddy 入门

HTTP域名

80端口号,和后面的 { 必须有空格

1
2
3
4
5
6
7
8
9
10
domain1.com:80 domain2.com:80 {
root /home/wwwroot # 网站目录
index index.php # 默认首页
### 禁止ping
使用iptables限制(推荐)
禁止他人Ping本机的同时,本机也可以Ping他人。
(1)设置方法很简单,在SSH中输入以下命令,回车后直接生效无需重启iptables。
```bash
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP

以上操作是利用iptables丢弃掉来自外网请求的ICMP包,达到禁Ping的效果。反之请看下面。

(2)解除设置方法(即删除本规则)

1
iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP