Categories
未分类

Boost up your ShadowSocks server with BBR

在尝试各种SS优化之后,我发现唯一对我服务器有用的是Google的BBR——一个TCP拥塞控制算法。
具体的一些评价,可以参考知乎的问题《Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?
Ubuntu下的简单部署:

  1. 确认一下你的内核版本
    uname -r

    如果返回的是>=4.9的版本,那么直接跳到第4

  2. 下载内核安装包。最新版的内核可以去http://kernel.ubuntu.com/~kernel-ppa/mainline/ 查看,这边下载的是4.13版
    wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300_4.13.0-041300.201709031731_all.deb
    wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb
    wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-image-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb
  3. 安装新的内核(确保你有sudo权限)
    dpkg -i linux-headers-*.deb
    dpkg -i linux-image-*.deb

    然后删除系统里原来的内核,首先确认一下删除的版本,运行这个命令找到旧版本的内核

    dpkg -l | grep linux-image

    删掉

    apt-get remove <旧内核映像文件> --purge

    别忘了更新grub,不然引导不来了

    update-grub
    reboot #重启
  4. 配置sysctl启用BBR
    编辑/etc/sysctl.conf , 在文件末尾加上下面两行

    net.core.default_qdisc=fq
    net.ipv4.tcp_congestion_control=bbr

    然后键入sysctl -p 令配置生效

 

 
参考:

  1. https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=0f8782ea14974ce992618b55f0c041ef43ed0b78
  2. https://www.zxavier.com/shadowsocks%E4%BC%98%E5%8C%96.html
Categories
木有技术

Apache 虚拟主机 ERROR: Site blog.dayandcarrot.net does not exist! a2ensite

今天在新的DigitalOcean下安装apache2,配置虚拟主机用于我的博客服务,然后根据
http://www.neoease.com/apache-virtual-host/
的内容进行配置,因为以前做过相同操作,所以一路轻车熟路~
结果运行a2ensite时,提示
ERROR: Site blog.dayandcarrot.net does not exist!
当时我的配置文件直接就是blog.dayandcarrot.net这个名字,以前也这么用的
然后我翻了下apache的配置文件apache2.conf,发现目录结构描述中有

# It is split into several files forming the configuration hierarchy outlined
# below, all located in the /etc/apache2/ directory:
#
#	/etc/apache2/
#	|-- apache2.conf
#	|	`--  ports.conf
#	|-- mods-enabled
#	|	|-- *.load
#	|	`-- *.conf
#	|-- conf-enabled
#	|	`-- *.conf
# 	`-- sites-enabled
#	 	`-- *.conf

看到后缀都要是.conf的
然后我把文件名后加了个.conf的后缀,再
ensite blog.dayandcarrot.net
然后就搞定啦!~

Categories
木有技术

Linux/Ubuntu shell中的系统信息查询

http://yige.org/linux/system.php
=============
Linux 的文件系统中,有一个特殊目录“/proc”, 该目录下列出的文件并非保存在磁盘上,而是内存中的一个映像。在该目录下可以找到许多有意思的东西,例如:
/proc/cpuinfo 本机 CPU的相关信息;
/proc/meminfo 本机内存及交换分区的使用信息;
/proc/modules 本机已安装的硬件模块信息;
/proc/mounts 本机已挂载 mount 上的设备信息;
此外, 该目录下有一些以数字为名称的子目录,每个子目录用于维护一个正在运行的进程,而目录名即为相应的进程ID。 例如进入名称为“1” 的子目录:
cd /proc/1
该目录下 文件“cmdline” 中的内容为该进程运行时执行的命令行;“environ”文件中的内容为该进程运行时的环境变量信息;“stat” 文件中存放的时该进程运行的状态信息等。
通过查看“ /proc” 目录下的文件,可以获取几乎所有的系统信息及系统的运行状态信息。事实上,Linux 下的诸多查询系统状态信息的命令,也是通过读取该目录下的文件而获取的。
以下是一些用于查看系统状态信息的命令:


df 命令

用于查看 Linux 文件系统的状态信息,显示各个分区的容量、已使用量、未使用量及挂载点等信息。如:
df -k 以千字节 (KB) 为单位显示各分区的信息;
df -a 显示所有分区, 包括大小为0 的分区;
df -T 显示分区类型 (EXT2 或EXT3等)。


du 命令

用于查看文件或文件夹的大小 。如:
du -b /home 以字节为单位显示“ /home ”文件夹下各个子文件夹的大小;
du -ks home 以千字节 (KB) 为单位显示“/home” 文件夹的总大小;


top 命令

用于实时查看系统状态信息。 运行该命令后,屏幕上会显示如下信息:
CPU状态(CPU states): 包括用户进程占用比率、系统进程占用比率、用户的nice 优先级进程占用比率及空闲CPU资源比率等;
内存状态 (Mem): 包括内存总量、使用量、空闲量等;
交换分区状态(Swap): 包括交换分区总量、使用量、空闲量等;
每个进程的状态:包括进程ID、 用户名、优先级、CPU和内存使用量,以及运行该进程时执行的命令行;
执行 top 命令后,每隔5 秒,系统会自动刷新一次状态信息,如果要指定刷新间隔,在启动时加入“-d” 参数即可。例如:
top -d 1 启动 top ,并且每隔1 秒刷新一次。
进入 top 后,按下如下按钮会有相应功能:
【空格】 立即刷新显示信息;
【M】 按内存使用量排序;
【N】 按进程ID 排序;
【P】 按 CPU使用量排序;
【c】扩展命令行信息, 显示完整的命令行;
【?】 显示帮助信息;
【q】 退出 top 程序。


iostat 命令

统计并输出 CPU使用信息及特定设备或分区的IO 信息。
iostat -c 仅显示 CPU使用情况统计信息;
iostat -d 仅显示设备/分区使用情况统计信息;
iostat -d 2 统计设备/分区使用情况,并每隔2 秒刷新一次;
显示的 IO 统计信息中,各部分说明如下:
tps 设备每秒收到的 IO 传送请求数;
Blk_read/s 设备每秒读入的块数量;
Blk_wrtn/s 设备每秒写入的块数量;
Blk_read 设备读入的总块数量;
Blk_wrtn 设备写入的总块数量;
显示的 CPU统计信息各部分的含义同top。
 

Categories
木有技术

Ubuntu下创建Django项目——使用Apache2的mod-wsgi

记录本人在自己的XEN VPS上用Apache2跑Django项目的配置过程
QQ截图20140107195633===============================================
我的虚拟主机:
Ubuntu12.04 + Apache 2.2 + python2.7 + Django1.6.1(使用pip安装的)
+ blablabla
===============================================
参考文档:
https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/
http://www.cnblogs.com/zhengyun_ustc/archive/2009/08/11/wsgi.html
http://wiki.ubuntu.org.cn/Apache%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E6%8C%87%E5%8D%97
https://www.digitalocean.com/community/articles/installing-mod_wsgi-on-ubuntu-12-04
================================================
首先参考教程,安装mod_wsgi
前置条件:

sudo aptitude install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

安装mod_wsgi (感谢ubuntu自己带了这个安装包)

sudo aptitude install libapache2-mod-wsgi

搞定之后重启apache

sudo service apache2 restart

================================================
第二步,是找一个地方,自己新建一个Django项目,比如我的项目位置在

/media/static/django-proj/priv_map

然后新建一个文件夹,比如我的文件夹叫apache,来存放wsgi的配置文件

import os, sys
sys.path.append('/media/static/django-proj/priv_map')
os.environ['DJANGO_SETTINGS_MODULE'] = 'priv_map.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

上面的配置就自己看啦,我的django项目名字是叫priv_map来着的
然后接着下一步,需要在apache的配置目录中建立一个虚拟主机,这样当输入网址时能够根据内容转向到我们的django程序。当然你也可以不新建虚拟主机,直接修改default配置文件,这个我没有试过,不过肯定是可行的!参考文献中有使用这个方法做的。
找到你的Apache配置目录:

/etc/apache2/sites-available

新建一个文件,自定义命名,反正等下要用命令行来启用的
我的访问的站点是a.dayandcarrot.net

<VirtualHost *:80>
    ServerName a.dayandcarrot.net
    ServerAlias a.dayandcarrot.net
    DocumentRoot /media/static/django-proj/priv_map
    WSGIScriptAlias / /media/static/django-proj/priv_map/apache/django.wsgi
    Alias /static /media/static/django-proj/static
    <Location "/static">
            SetHandler None
    </Location>
    <Directory "/media/static/django-proj/static">
       Order Deny,Allow
       Allow from all
    </Directory>
    <Directory "/media/static/django-proj/priv_map/apache">
       Order Deny,Allow
       Allow from all
    </Directory>
</VirtualHost>

其中有django的ststic目录配置好了,需要另加media目录的话,照葫芦画瓢就行吧。
保存好这个文件。
然后启用这个虚拟主机:

a2ensite a.dayandcarrot.net

后面的a.dayandcarrot.net是你刚才新建的文件的名字.
然后apache重新加载下

service apache2 reload

应该就搞定啦!