使用RSYNC同步国内/国外的VPS站点内容及数据库

Linux的RSYNC非常好用,简单方便,配合linux的cron来定时同步两台VPS内容。
目前VPS的价格非常便宜,一年30美元左右非常常见。我购买的vultr的新泽西VPS外加50G免费存储空间,使用rysnc,配合linux的crob和数据库的mysqldump,来同步国外的阿里云VPS与国外的VPS,备份数据。
国外的VPS满足了科学上网、建站、备份三个功能。

注意:这个办法不是实时备份,我是以一天为单位,因为mysqldump会占用资源,如果时间间隔太短,会影响VPS的性能。对于实时备份需求,那站点肯定是比较大,也不在乎这点成本了。

1、Mysql数据库备份
对于使用innodb引擎,mysqldump命令如下:

mysqldump -u数据库用户名 -p数据库密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob --single-transaction 数据库名 | gzip > 备份目录/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz

对于使用MYISAM引擎,mysqldump命令如下:

mysqldump -u数据库用户名 -p数据库密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob 数据库名 | gzip > 备份目录/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz

2、RSYNC命令测试
此RSYNC命令运行在目录主机中

rsync -avzhe 'ssh -p SSH端口' 用户名@IP地址:源数据文件目录 目录主机目录

需要注意:
此操作的前提是同步用户名开启了SSH密钥登录,密钥没有密码保护,否则只能用用户名和密码,但是用户名和密码没有办法使用LINUX的计划任务,没有意义

关于SSH密钥登录的设置,可以查看

阿里云服务器ubuntu安全设置

3、设置linux的计划任务
linux当前用户的计划任务编辑命令是crontab -e
需要源VPS中设置mysqldump数据导出的计划任务

30 3 * * * mysqldump -u数据库用户名 -p数据库密码 --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob 数据库名 | gzip > 备份目录/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz

以上命令中是每一天的3点30分,时区是VPS设置的时区的,可以设置不同的时间点

同样的格式,需要在目标主机VPS中运行crontab -e来设置RSYNC的计划任务
每天4点半同步网站源文件

30 4 * * * rsync -avzhe 'ssh -p SSH端口' 用户名@IP地址:源数据文件目录 目录主机目录

每天5点同步网站数据库备份文件,同步完成后删除源文件

0 5 * * * rsync --remove-source-files -avzhe 'ssh -p SSH端口' 用户名@IP地址:源数据文件目录 目录主机目录
Tags: ,
shuxin

ubuntu 14.04 安装Nginx 1.10.2,编译安装php5.2.17过程

以前在发表过一个编译PHP5.2.17的流程,写得比较乱,这次下单了vultr的VPS,特别编译了PHP5.2.17,使用Zend Optimizer v3.3.9,过程命令如下

安装最新版的NGINX

wget http://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo nano /etc/apt/sources.list

最后面添加NGINX源

	deb http://nginx.org/packages/ubuntu/ trusty nginx
	deb-src http://nginx.org/packages/ubuntu/ trusty nginx

安装nginx

sudo apt-get update
sudo apt-get install nginx

安装相关的库文件

sudo apt-get install -y git autoconf lynx wget build-essential libxml2-dev libssl-dev libbz2-dev libcurl4-openssl-dev  libpng12-dev libfreetype6-dev libxpm-dev libmcrypt-dev libmhash-dev libmysqlclient-dev libjpeg62-dev freetds-dev libjson-c-dev re2c

配置编译环境

sudo nano /etc/environment

添加

	LANG=en_US.UTF-8
	LC_ALL=en_US.UTF-8

重启

sudo reboot

下载php5.2.17

sudo mkdir /opt/source
cd /opt/source
sudo wget -c http://museum.php.net/php5/php-5.2.17.tar.bz2
sudo tar xvjf php-5.2.17.tar.bz2
cd /opt/source/php-5.2.17

添加补丁

SimpleXML patch for PHP 5.2.17

sudo curl -o php-5.2.17.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt
sudo patch -p0 -b < php-5.2.17.patch

PHP-FPM patch for PHP 5.2.17

sudo wget -c http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
sudo gunzip php-5.2.17-fpm-0.5.14.diff.gz
sudo patch -p1 < php-5.2.17-fpm-0.5.14.diff

OpenSSL Patch for PHP 5.2.17

sudo wget -c -t 3 -O ./debian_patches_disable_SSLv2_for_openssl_1_0_0.patch https://bugs.php.net/patch-display.php\?bug_id\=54736\&patch\=debian_patches_disable_SSLv2_for_openssl_1_0_0.patch\&revision=1305414559\&download\=1
sudo patch -p1 -b < debian_patches_disable_SSLv2_for_openssl_1_0_0.patch

Freetype support for PHP 5.2.17(仅适用于64位,32位系统不需要)

sudo mkdir -pv /usr/include/freetype2/freetype
sudo ln -sf /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h

编译安装PHP5.2.17

sudo ./configure -enable-cli -prefix=/opt/source/php-5.2.17 -with-pear -with-iconv -with-curl -with-mysqli -with-mysql -with-libdir=/lib/x86_64-linux-gnu -enable-mbstring -enable-exif -with-gd -with-jpeg-dir -with-freetype-dir -with-zlib -with-zlib-dir -with-gettext -with-mhash -enable-ftp -enable-bcmath -with-mime-magic -with-pdo-mysql -with-openssl -with-mcrypt -enable-sockets -enable-soap -enable-calendar -enable-fastcgi -enable-force-cgi-redirect -enable-fpm
sudo make
sudo make install
sudo cp /opt/source/php-5.2.17/php.ini-dist /opt/source/php-5.2.17/lib/php.ini 

加PHP.INI,运行查看PHP版本

bin/php-cgi -v 

返回即表示安装成功

PHP 5.2.17 (cgi-fcgi) (built: Jun 15 2017 07:54:11)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies

配置FPM

sudo cp /opt/source/php-5.2.17/sapi/cgi/fpm/init.d/php-fpm.in /etc/init.d/php-fpm5217
sudo chmod +x /etc/init.d/php-fpm5217
sudo nano /etc/init.d/php-fpm5217 
	php_fpm_BIN=/opt/source/php-5.2.17/bin/php-cgi
	php_fpm_CONF=/opt/source/php-5.2.17/etc/php-fpm.conf
	php_fpm_PID=/opt/source/php-5.2.17/logs/php-fpm.pid 
sudo nano /opt/source/php-5.2.17/etc/php-fpm.conf 
		127.0.0.1:9001
		www-data
		www-data
		Unix user of processes
		www-data
		Unix group of processes
		www-data

启动php-fpm进程

sudo service php-fpm5217 start

添加php-fpm自启动

sudo update-rc.d php-fpm5217 defaults

php5.2.17安装完成

请注意上面没有安装xcache,可以编译添加即可

shuxin

php5.2.17编译安装后添加XCACHE和OPENSSL支持

头一次编译安装php5.2.17,结果XCACHE和openssL没有添加,折腾了好久,终于成功,补上过程,方便查询:
系统是ubuntu 14.04,php5.2.17

请注意,我安装的php目录是/opt/source/php-5.2.17
Xcache编请注意,我安装的php目录是/opt/source/php-5.2.17译安装:
下载xcache

wget https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
tar zxvf xcache-3.2.0.tar.gz
cd xcache-3.2.0.tar.gzsudo /opt/source/php-5.2.17/bin/phpize
sudo ./configure --prefix=/opt/source/php-5.2.17/lib/php/extensions --with-php-config=/opt/source/php-5.2.17/bin/php-config --enable-xcache  
sudo make  
sudo make install

会生成xcache.so动态扩展文件,此文件的位置是
/opt/source/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613
编辑PHP.INI,载入这个动态扩展就可以了,需要将下载的源码包中的xcache.ini文件的内容添加到php.ini文件:
重新启动PHP-FPM即可:
sudo service php-fpm5217 restart
在源码包中还有htdocs目录,这个是WEB管理界面,可以将其拷贝到WEB目录中

安装OPENSSL

php5.2.17源目录ext目录中有OPENSLL的源码,只是在编译时忘记添加了,所以也是使用phpize来编译添加即可
请注意,我安装的php目录是/opt/source/php-5.2.17

cd /opt/source/php-5.2.17/ext/openssl
sudo /opt/source/php-5.2.17/bin/phpize

结果提示没有找到config.m4文件,源目录中的文件名不一致:

sudo cp config0.m4 config.m4

编译openssl

sudo /opt/source/php-5.2.17/bin/phpize
sudo ./configure --prefix=/opt/source/php-5.2.17/lib/php/extensions --with-php-config=/opt/source/php-5.2.17/bin/php-config --with-openssl
sudo make
sudo make install 

生成的openssl.so动态扩展文件还是位于/opt/source/php-5.2.17/lib/php/extensions/no-debug-non-zts-20060613
在php.ini文件中添加 openssl扩展,重启php-fpm,就可以看到php-info中已经添加SSL支持:


OpenSSL support enabled
OpenSSL Version OpenSSL 1.0.1f 6 Jan 2014

shuxin

ubuntu 14.04安装PHP7.0的简单办法

PHP7.0的效率非常高,兼容性也很好,wordpress等一些比较常见的系统都可以完美的支持PHP7,我论坛使用php5.5时,页面的生成时间是0.15秒左右,更新使用php7.0以后,页面的生成时间只在0.05~0.07秒,效率提高好多,内存占用也低了不少
因为我以前是用的PPA来安装的PHP,在UBUNTU14.04中,也要使用PPA来安装,当然有时间可以自己编译,我闲编译太烦,apt-get安装方便,安装模块也是随手就安装,非常方便,2分钟就可以升级完:
如果以前安装过PPA的PHP,就可以省掉下面的过程,否则需要安装才可以找得到PHP7的源:
sudo add-apt-repository ppa:ondrej/php
更新源:
sudo apt-get update
停用PHP5-FPM:
sudo service php5-fpm stop
移除原来的PHP5:(我的站点使用的是NGINX-FPM)
sudo apt-get remove --purge php5-fpm php5-cgi php5-mysql php5-curl php5-mcrypt php-pear php5-gd php5-xcache
sudo apt-get autoremove

安装PHP7
sudo apt-get install php7.0 php7.0-cli php7.0-fpm php7.0-gd php7.0-json php7.0-mysql php7.0-readline php7.0-xml php7.0-mbstring php7.0-curl
安装后自动启动
修改NGINX的配置文件,PHP解析部分更改为:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

配置文件目录也由/etc/php5更改为/etc/php/7.0

shuxin

nginx总是产生”Primary script unknown”错误的解决办法

刚刚把NGINX升级到1.10,由于以前用的是PPA的源,这次换成了NGINX的官方源,升级后配置文件也重新配置,结果总是有错误记录产生,主要的内容是:
primary script unknown while reading response header from upstream
参考网站的一些意见,更改:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
发现解决不了问题
这个问题主要是由于NGINX将所有PHP文件交由PHP-FPM来处理,如果PHP文件不存在,只是网址访问有带PHP结尾,都会交给PHP-FPM,PHP-FPM收到不存在的文件处理指令,就抛出了错误,结合PPA原来安装的配置文件,修改如下:
location ~ \.php$ {
# regex to split $uri to $fastcgi_script_name and $fastcgi_path
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Check that the PHP script exists before passing it
try_files $fastcgi_script_name =404;
# Bypass the fact that try_files resets $fastcgi_path_info
# see: http://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}

问题解决

之所以没有上传PPA原来的配置文件是由于PPA安装的与NGINX官方安装的文件位置和目录有点区别,官方的比较简单,这样也便于以后升级

其实在升级时,直接使用原有PPA安装的配置文件即可

Tags:
shuxin

ubuntu环境下更改mysql的默认数据库目录

目前的站点使用了阿里云,数据盘和系统盘分开,为了方便以后管理,参考国外的教程将数据库目录由系统盘迁移到了数据盘,过程非常简单,不过与国内一些网站上面的内容不一样:

第一步 移动MySQL数据库目录

查看当前的目录

$mysql -u root -p

以ROOT目录登录Mysql,查看当前数据库目录:

mysql> select @@datadir;

输出

+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)

关闭mysql进程
$sudo service mysql stop
复制mysql数据库文件目录及权限(使用rsync)
$sudo rsync -av /var/lib/mysql /mnt
更改默认的mysql目录名
$sudo mv /var/lib/mysql /var/lib/mysql.bak

第二步 修改MySQL配置文件

$sudo vi /etc/mysql/my.cnf
修改“datadir=”这行的内容
保存退出

第三步 修改AppArmor控制规则

$sudo vi /etc/apparmor.d/tunables/alias

在文件下方,添加或者修改一行:
alias /var/lib/mysql/ -> /mnt/mysql/,
保存退出

重启aparmor
$sudo service apparmor restart

第四步 重启mysql
重启前,需要重建一个默认的空目录,否则mysql会输入错误到记录文件中
sudo mkdir /var/lib/mysql/mysql -p
重启mysql
sudo service mysql start

重新进入mysql,使用select @@datadir;查看生效的配置,输出

+-----------------+
| @@datadir       |
+-----------------+
| /mnt/mysql/ |
+-----------------+
1 row in set (0.00 sec)

配置完成
如果没有问题,就可以删除原来的数据目录了

Tags: ,
shuxin

近一年以来的国外主机选择(linode,sugarhosts,hawkhost,site5)

从去年11月以来,测试了N个国外主机,折腾来折腾去,钱没有少花,还是返回到最初的选择,把这个过程随便写写,当个纪念
1、Linode日本,一直在使用日本的空间,也没有被封,只是晚上非常不顺,经常性的打不开网站,GFW随机性下手,搞得一点脾气没有,正规的技术网站,实在是想不到什么理由干扰,就是不让用SSH,通杀,没有办法,大站搬回阿里云,小站另想他法
2、试着开通了linode新加坡机房,速度不好,绕行韩国与日本,速度并没有多少改善
3、开通了site5的香港机房,试用一个月,用的是香港的softlayer机房,测试时速度非常好(目前已经被绕行美国),ping值在30ms左右,cpnael管理,支持PHP5.2,价格略贵,接着发现sugarhosts
4、开通sugarhosts的香港空间,速度非常满意,价格的确是比较贵,带独立IP,两年1000多,试用了接近一个月,后来发现hawkhost老鹰主机的速度也不错,环境与其一样,就申请退款,换了老鹰主机
5、老鹰主机新加坡空间,用的也是 softlayer,效果非常好,与香港差不多,速度在50~100ms之内,12月份测试时,速度非常快,下载可以在室1MB/S以上,非常满意
6、黑色星期五以后,恶梦开始,长时间不能正常访问,PING值在100MS以内,就是不能访问,使用百度云加速也很慢,后来官方禁用了ssh端口转发,效果好像有点好转,基本上属于半罢工状态,最惨的是4月份开始,大机率绕行美国,速度慢到不能用。
7、重新去sugarhosts开通了一个空间,返回香港,目前速度很理想,ping值30ms~50ms,速度飞快,新加坡的hawkhost空间,申请转移到了美国,放本博客玩玩吧,已没有使用价值

Tags: , ,
shuxin

正在使用的老鹰主机由新加坡搬回了美国

自从linode日本线路非常不稳定以后,无耐之下将几个网站分了家:
有备案的,搬回了国内的阿里云服务器,速度与稳定性大大提高
没有备案的,开通了一个老鹰主机(hawkhost),新加坡softlayer机房,开通时速度飞快,国内直连,并且支持SSH端口转发代理,可惜目前被废了,主要原因是:
1、新加坡与香港的softlayer由前段时间的直连,变成了从美国绕路,网站很多情况下打不开
2、老鹰主机管理方单方面关闭了SSH的端口转发功能
3、即便是PING比较低时,例如出现直连状态下,PING值在100MS之内,但是网站依然打不开,HTTP非常不顺畅
目前又开通了一个sugarhosts主机服务商的香港机房,效果非常好了,当然价格也贵得多,一年5百多块
老鹰主机就申请从新加坡迁移到了洛杉矶,目前访问速度慢,但是能够正常访问了,只是放了一个博客

Tags: ,
shuxin

使用linode的VPS快速搭建基于PPTP的点对点隧道VPN服务

GMAIL使用多年,没有办法完全扔掉,加之还想在手机上使用google地图,所以就想在自己购买的linode的VPS上面建一个VPN,以供自己临时应急使用

关于linode
使用了好几年了,以前一直在使用日本的线路,后来日本线路虽然快,但非常的不稳定,晚上总是不定时断线,不能访问,所以又搬回了阿里云。上周的黑色星期五,linode新用户注册充值5元送25美元,所以又开了一个VPS
选择机房时,测试了fremont,还有新加坡,目前看来新加坡与fremont的PING差不多,新加坡线路走的是韩国/日本,所以PING在100MS左右,美国的fremont,ping值在150~200左右,但是新加坡的下载速度快得多,暂时先用新加坡的线路了

安装系统:ubuntu 14.04,简单稳定
VPN安装的流程:

1、更新源
sudo apt-get update
sudo apt-get upgrade

2、安装PPTPD
sudo apt-get install pptpd
编辑配置文件,开启IP段分配
sudo vi /etc/pptpd.conf
取消掉前面的注释
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

添加帐户与密码
sudo vi /etc/ppp/chap-secrets
在里面添加账户按如下格式
username pptpd "password" *
实际测试下来,密码加不加引号都可以使用,最后的*号表示允许在任意IP连接到服务

3、添加DNS解析
sudo vi /etc/ppp/pptpd-options
查找:ms-dns
取消前面的注释,更改后面的IP地址:
ms-dns 8.8.8.8
ms-dns 8.8.4.4

后面的DNS地址也可以使用opendns的IP地址
208.67.222.222
208.67.220.220
总之不要使用大陆的

4、开启内核IP转发
sudo vi /etc/sysctl.conf
取消前面的注释
net.ipv4.ip_forward=1

使得配置立即生效
sudo sysctl –p

5、如果有开启防火墙,需要开通NAT转发
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
请注意,在防火墙中开放的IP地址必须与你在第二部设置PPTD的设置文件时分配的IP地址范围一致,eth0是你的网址号,如果是阿里云,内网网卡与外网网卡不同,需要先看一下网址
6、重启服务pptp,让配置生效
sudo service pptpd restart

至少VPN搭建完成
在WINDOWS10上面测试时,VPN连接属性中,必须要开启:质询握手身份验证协议
WINDOWS7没有测试

Tags: , , , ,
shuxin

win10的VPN使用PPTP时总是提醒密码错误的原因

刚刚用国外的VPS搭建了一个基于PPTP的点对点VPN,使用手机可以正常登录,但使用WINDOWS10的VPN链接时,总是提醒密码错误,一直在找原因,终于发现是一个设置的问题,如下:
点击开始,进入设置,选择网络和INTERNET,点击VPN标签,在右边添加VPN连接,按正常设置即可,VPN类型选择“点对点隧道协议(PPT),保存
此时连接,即会报告密码错误

然后返回到网络和INTERNET的VPN页面,在相关设置中,选择更改适配器选项,然后右击刚才新建的VPN连接图标,选择属性,在安全标签中,VPN类型为PPTP,下面有一个“允许使用这些协议”中,选择“质询握手身份验证协议”,保存即可

VPN-CHAP

Tags:
shuxin