为Ubuntu Linux创建Swap分区

前不久在Amazon购买了一台EC2服务器运行WordPress,配置为双核CPU,内存1G。运行了一段时间后,发现mysql经常崩溃。检查mysql的error.log发现,崩溃前最后一条日志是:

160328 16:50:26 InnoDB: Completed initialization of buffer pool
160328 16:50:26 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160328 16:50:26 [ERROR] Plugin 'InnoDB' init function returned error.
160328 16:50:26 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160328 16:50:26 [ERROR] Unknown/unsupported storage engine: InnoDB
160328 16:50:26 [ERROR] Aborting

因为网站访问量比较大,推测可能是系统内存不足导致的。使用下面的命令查看了一下,发现apache已经使用了60%多的内存(总内存为1G)。

$ ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Total (MB): "x/1024; print "Average (MB): "x/((y-1)*1024)}'

Total (MB): 622.996
Average (MB): 14.8332

apache、mysql都是吃内存的大户,1G屋里内存显然不够用了。使用swapon查看交换文件状态:

$ sudo swapon -s

Filename                Type        Size    Used    Priority

OMG,竟然没有。。。那就创建一个。

先创建一个4G的文件:

$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4000
4000+0 records in
4000+0 records out
4194304000 bytes (4.2 GB) copied, 5.12 s, 1203 MB/s

然后把它转变为swap文件: 继续阅读为Ubuntu Linux创建Swap分区

Linux常用命令整理(不定期更新)

#查看系统版本
uname -a
cat /etc/issue

#修改系统时区
#先使用tzselect按提示一步步找到对应的时区,比如Asia/Shanghai,然后:
echo “Asia/Shanghai” | sudo tee /etc/timezone
sudo dpkg-reconfigure –frontend noninteractive tzdata

#查看进程侦听的端口
lsof -iTCP -sTCP:LISTEN -n -P

#查看目录大小(h:自动使用最佳可读单位,c:最后显示总大小)
du -hc /path
du -k /path | sort -nr

#查看磁盘使用情况
df -h

#创建空文件
touch filename

继续阅读Linux常用命令整理(不定期更新)

在搬瓦工(Bandwagonhost)的VPS上搭建Ubuntu VPN Server

关于如何在Ubuntu Server上搭建VPN服务器的文章Google中随便一搜就有很多,但实际配置过程中有几个关键点很容易出错。下文将对这些关键步骤做出重点的说明。本文使用的是Ubuntu Server 14.04.4 LTS 64位版本。(http://blog.droidking.com/)

1、安装pptpd

sudo apt-get update
sudo apt-get install pptpd

2、修改/etc/pptpd.conf

sudo vi /etc/pptpd.conf

在文件结尾添加下面两行,然后保存。

localip 10.10.0.1
remoteip 10.10.0.2-255

注意:localip、remoteip都应该使用Internet的保留IP,比如10.64.0.0-10.127.255.255,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255。尤其是localip,切勿填写为服务器的真实外网ip。

3、修改/etc/ppp/pptpd-options

继续阅读在搬瓦工(Bandwagonhost)的VPS上搭建Ubuntu VPN Server

在man里面查看unix/linux命令时,命令名后面括号中的数字有什么含义?

比如
man ls,显示为LS(1)
man fread,显示为FREAD(3)

这其实是代表对应的命令在man中的章节号,具体编号如下:
继续阅读在man里面查看unix/linux命令时,命令名后面括号中的数字有什么含义?

如何在Jenkins中使用rsync、scp远程同步文件

使用Jenkins进行自动构建时,经常有远程同步文件到其他主机的需求,比如上传构建好的程序包到服务器。为实现此需求,我们可以在Jenkins项目中增加一个Execute Shell步骤,然后输入以下Command:
rsync -e ssh –progress /var/www/index.htm username@host.domain.com:/var/www/

username: host.domain.com上的用户名,需要对/var/www/有读写权限;
host.domain.com:你的主机,可以是域名或者IP地址。

如果host.domain.com的ssh端口不是默认端口,比如是2222,则需要给ssh加上-p参数,如下所示:
rsync -e ‘ssh -p2222’ –progress /var/www/index.htm username@host.domain.com:/var/www/

保存Jenkins项目,开始构建,会发现上面增加的步骤会导致构建失败,在Jenkins控制台可以看到如下错误:

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at /SourceCache/rsync/rsync-45/rsync/io.c(453) [sender=2.6.9]
Build step ‘Execute shell’ marked build as failure
Finished: FAILURE

继续阅读如何在Jenkins中使用rsync、scp远程同步文件

在Mac OS X上安装sshpass

在Mac OS X上使用Homebrew安装sshpass时,会出现以下提示:

$ brew install sshpass

Error: No available formula for sshpass
We won't add sshpass because it makes it too easy for novice SSH users to
ruin SSH's security.

从提示可知,出于安全考虑,Homebrew禁止安装sshpass。在明确知道安全风险的情况下,如果仍想使用sshpass,我们可以通过如下方式强制安装:

继续阅读在Mac OS X上安装sshpass