用http方式访问网站是没有加密的,网络上传输的都是明文,在网络上很容易被窃听。
用https方式访问网站是经过SSL加密的,这种加密技术是国际上公认的,所有的网上银行都用https方式加密。RASHOST的客户中心也是要通过https访问的。
要实现https加密,就需要在Web服务器配置一个SSL证书。可以自己随便做一个SSL证书,但这样的证书只适合测试使用,要在正式网站上用SSL,还是要购买一个正式的SSL证书。
产生CSR
在购买SSL证书之前要先产生一个CSR。登录Kloxo控制面板,在首页的Resource部分有个SSL Certificate图标,点击这个图标,然后点击Add SSL Certificate,输入您的各项信息后点击确定就可以生产CSR了。
购买SSL证书
在客户中心 http://my.rashost.com 可以购买SSL证书,付款之后会很快收到一封邮件,这封邮件会给出一个地址,进入该地址来配置SSL证书的详细信息和自己产生的CSR。
配置完上面的信息之后,系统会列出该域名所有人的Email和这个域名为后缀的几个邮件地址,让你选择一个邮件,系统会给这个地址发送邮件,用来验证您是这个域名的所有人。验证域名完成之后,就等待证书吧,这个等待的过程大概要几个小时。
phpmyadmin是个很方便的mysql数据库管理工具,可以用来管理mysql数据库,导入,导出等。
phpmyadmin在导入mysql的时候有个问题,如果要导入的数据库文件比较大,那么导入就会失败。下面介绍一个方法,可以导入任意大小的mysql数据库,步骤如下:
- 通过FTP把数据库的SQL文件上传到网站的根目录下
- 在网站的根目录下,创建文件import.php,该文件的内容见文章末尾
- 在浏览器里面访问这个import.php,假设你的网站域名是www.a.com,那么就在浏览器里面访问 http://www.a.com/import.php , 只要浏览器一开始访问这个import.php文件,数据就开始导入了
- 数据导入结束后,屏幕上会出现”import ok”的字样
import.php文件的内容如下:
<?
system("mysql -uroot -pmypassword database < a.sql");
print "import ok";
?>
其中root表示数据库用户名,mypassword表示root的密码,database表示要导入的数据库的名字,a.sql表示数据库文件的文件名,该文件是解压缩后的文件。这几个变量可以根据实际情况修改。
Debian和Ubuntu都自带了Nginx,用他们来配置Nginx的反向代理,非常方便。
安装Nginx
运行如下命令安装并运行Nginx
apt-get install nginx
/etc/init.d/nginx start
然后在浏览器里面访问该IP的80端口,就会看到”Welcome to Nginx!”的信息,这说明Nginx安装完成了!
配置Nginx做反向代理
Nginx的缺省站点的配置文件是/etc/nginx/sites-available/default,修改这个文件中的如下部分:
location / {
root /var/www/nginx-default;
index index.html index.htm;
}
修改为:
location / {
proxy_pass http://www.google.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
然后重启Nginx:
/etc/init.d/nginx restart
然后在浏览器里面重新访问该IP上面的80端口,应该就看到google的主页了,反向代理配置成功了
多域名反向代理配置实例
在一个VPS上配置多个域名的反向代理,比如我们有两个域名test1.rashost.com和test2.rashost.com,我们希望客户在访问test1.rashost.com的时候出现www.baidu.com的内容,希望客户在访问test2.rashost.com的时候出现www.kernel.org的内容,客户只知道test1.rashost.com和test2.rashost.com的存在,而不知道www.baidu.com和www.kernel.org的存在。
首先需要把域名test1.rashost.com和test2.rashost.com指向VPS的IP地址。
然后在/etc/nginx/sites-available 目录下增加两个文件,文件名分别是test1.rashost.com和test2.rashost.com
test1.rashost.com的文件的内容如下:
server {
listen 80;
server_name test1.rashost.com;
location / {
proxy_pass http://www.baidu.com/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
test2.rashost.com的文件的内容如下:
server {
listen 80;
server_name test2.rashost.com;
location / {
proxy_pass http://www.kernel.org/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然后运行命令:
cd /etc/nginx/sites-enabled
ln -sf /etc/nginx/sites-available/test1.rashost.com .ln -sf /etc/nginx/sites-available/test2.rashost.com .
/etc/init.d/nginx restart
这时候在浏览器里面访问test1.rashost.com将会出现www.baidu.com的内容,访问test2.rashost.com将会出现www.kernel.org的内容。
反向代理的高级配置
关于Nginx反向代理的一些高级配置,我们会不断写博客介绍,敬请关注。
美国VPS的一大用途就是做为加密的VPN服务器,在国内连上这些VPN服务器就可以无限 制访问互联网。常用的VPN服务器一般分两种,一种是SSL VPN,代表软件有openvpn,这个VPN软件有Windows下的客户端软件;另外一种是pptpd VPN,Windows自带这种VPN的客户端支持。本文记录了在64位Debian 5 VPS下安装pptpd VPN服务器的过程。
内核支持
pptpd VPN需要内核支持mppe,我们的VPS自带的内核已经把mppe编译进去了,没有把mppe另外当作内核的模块,在安装pptpd的时候如果碰到mppe模块相关的错误信息都可以忽略。
软件安装
Debian自带了pptpd的软件包,安装命令:
apt-get install -y ppptpd
然后编辑置文件 /etc/ppp/pptpd-options 内容如下:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4
编辑配置文件 /etc/pptpd.conf 内容如下:
option /etc/ppp/pptpd-options
logwtmp
localip 192.168.92.1
remoteip 192.168.92.11-15
编辑配置文件 /etc/ppp/chap-secrets,配置用户名为johndoe,密码为password,内容如下:
johndoe pptpd password *
修改配置文件/etc/sysctl.conf中的相应内容如下:
net.ipv4.ip_forward = 1
‘配置iptables,可以把这个命令写入/etc/rc.local
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.92.0/24 -j MASQUERADE
iptables -I FORWARD -p tcp --syn -i ppp -j TCPMSS --set-mss 1356
然后运行reboot重新启动即可,在Windows客户端应该可以拨号连接VPN了
CentOS的时区配置文件是:/etc/sysconfig/clock 。 这个配置文件里面支持UTC,ARC,SRM,ZONE这几个配置选项,关于这几个配置选项详解如下:
- UTC – 指定BIOS中保存的时间是否是GMT/UTC时间,true表示BIOS里面保存的时间是UTC时间,false表示BIOS里面保存的时间是本地时间。
- ZONE – 指定时区,ZONE的值是一个文件的相对路径名,这个文件是相对 /usr/share/zoneinfo 目录下的一个时区文件。比如ZONE的值可以是:“Asia/Shanghai”, “US/Pacific”, “UTC” 等
- ARC – 这个选项一般配置false,在一些特殊硬件(Alpha)下才配置该选项为true。
- SRM – 同ARC,该选项一般配置false,在一下特殊硬件下才配置该选项为false。
这个配置文件里面的参数和 hwclock 命令关系很大,系统在启动的时候读取 /etc/sysconfig/clock 文件的内容,根据这些内容调用 hwclock 命令。
CentOS VPS用户,尤其是国内的CentOS VPS用户可能会碰到过yum更新的时候,下载速度特别慢的情况。
yum源大多数使用的都是官方的默认配置,这个默认的yum源配置会在yum运行的时候,动态确定去哪个镜像站点下载,这个动态确定的镜像站点如果没有找对,找了一个慢的,那么yum更新的过程会非常慢。
好在yum是支持断点续传的,慢的时候按下ctrl-c,yum会自动去下一个镜像站点下载,如果还是很慢,就再次按下ctrl-c找下一个镜像站点。按一次ctrl-c不会中断yum,在两秒钟内连续按两次ctrl-c才可以中断yum的运行。这个方法笔者试过很多次,用起来很方便。
另外一个办法就是修改yum的源配置文件,修改到一个自己访问比较快的镜像站点,不推荐使用这个方法,因为修改配置修改不好就无法更新,另外自己找的镜像站点也没有官方的稳定,万一哪天这个镜像站点不通了,还要为这个找半天原因。
rsync是Linux下最好的同步软件,本文记录了在centos 5 VPS下配置rsync服务端的过程。
安装:
yum install -y rsync xinetd
然后rpm -ql rsync就可以看到rsync安装了哪些文件。编辑/etc/xinetd.d/rsync文件,修改disable=no,然后重启xinetd:
/etc/init.d/xinetd restart
创建文件 /etc/rsyncd.conf 内容如下:
pid file = /var/run/rsyncd.pid
port = 873
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow=68.68.99.184/255.255.255.0 216.18.195.23/255.255.255.0
hosts deny=*
max connections = 5
motd file = /etc/rsyncd.motd
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[public]
path = /home/pics/www
list=yes
ignore errors
auth users = user
secrets file = /etc/rsyncd.secrets
comment = pics www
创建文件 /etc/rsyncd.motd 内容随便写即可
创建文件 /etc/rsyncd.secrets 内容是用户名和密码,比如:
user:password
然后执行如下命令:
chmod 700 /etc/rsyncd.secrets
这样就配置好了,在客户端就可以用rsync命令了,比如:
rsync rsync://user@216.18.195.23/
rsync --recursive --times --links --hard-links --delete -av rsync://user@216.18.195.23/public /home/pics/www
很多客户在美国VPS上配置VPN,然后连上美国的VPN畅游互联网。其实利用putty的ssh tunnel功能也可以实现安全的代理,原理是当用putty ssh连接到美国VPS的时候,putty可以在本地开启一个端口,本地的应用程序连接到本地的这个端口。相当于putty在本地充当了一个socks代理服务器为本地的应用程序提供socks代理。而这个socks代理通过美国VPS连接外网,socks代理和美国VPS直接的数据通信是在ssh隧道里进行的,是安全的。
配置putty的ssh隧道很简单,按照下图增加一个动态端口转发即可。另外Putty的配置不容易保存,生手要保存putty配置请参考 http://rashost.com/blog/my-putty-configure
上面配置完成之后,通过ssh登录到美国VPS,putty就在本地建立了一个socks代理服务器,代理地址是127.0.0.1,端口是7070。打开浏览器,设置socks代理即可无限制访问互联网了。
如果你用Firefox浏览器,推荐使用autoproxy插件,这个插件默认有ssh tunnel的socks代理配置。
本文介绍在Debian 5 VPS下的nginx php mysql的解决方案,本方案使用php-fpm作为fastcgi的进程管理器。
本文基于64位的Debian 5 VPS,如果是32位的Debian VPS,请在相应部分做修改。
使用php-fpm就必须重新编译php,不能使用系统自带的php。MySQL使用Debian自带的,Nginx是从Debian官方软件库中下载的最新版本。
安装Nginx
Debian 5系统自带的nginx版本比较低,现在Nginx的新稳定版本0.7.61,即将发行的Debian 6里面带的是最新版本的nginx,测试后发现这个nginx在Debian 5下可以运行。我们在 http://ftp.us.debian.org/debian/pool/main/n/nginx/ 下载了Nginx的deb包,放到了 http://dl.rashost.com/方便客户下载
安装命令:
dpkg -i nginx_0.7.61-3_amd64.deb
/etc/init.d/nginx start
mkdir -p /var/www/nginx-default
echo 'nginx ok'>/var/www/nginx-default/index.html
echo '<?phpinfo()?>' > /var/www/nginx-default/test.php
另外运行dpkg -L nginx命令可以看到nginx的文件都安装在哪些目录下面了
Debian下nginx的缺省网页目录是/var/www/nginx-default,这个目录安装的时候没有创建,我们是手工创建的。
通过浏览器访问,应该能看到nginx的缺省网页了,说明nginx正常工作了!
安装MySQL
我们使用Debian自带的MySQL,安装命令:
apt-get install mysql-server-5.0
/etc/init.d/mysql start
运行mysql -uroot -p命令,应该可以正常连接到MySQL
安装php & php-fpm
安装php所需要的库文件:
apt-get update
apt-get install libxml2 libldap-2.4-2 libmhash2 curl libpng3 libjpeg62 libsasl2-2 libmcrypt4
到 http://dl.rashost.com下载安装我们自己在Debian下编译的php-fpm:
cd /opt
tar zxf php-fpm-5.2.10-amd64.tar.gz
ln -s /opt/php/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults
/etc/init.d/php-fpm start
整合
首先在/var/www/nginx-default目录下创建文件test.php,其内容很简单,只要下面一行:
<?phpinfo();?>
假设所在VPS的地址是debian5.rashost.com,这时通过浏览器访问http://debian5.rashost.com/test.php是得不到正确的显示结果的。
修改nginx的配置文件/etc/nginx/sites-enabled/default,在文件内搜索fastcgi_pass,修改该部分内容为:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default/$fastcgi_script_name;
include fastcgi_params;
}
注意,Debian下的nginx配置文件和centos下的区别比较大,Debian下把配置分割成多个文件了,推荐一个站点一个配置文件,我们修改的是/etc/nginx/sites-enabled/default。另外fastcgi_param参数后面的/var/www/nginx-default/部分,这是具体的网页目录,如果像Debian下那样写成$document_root不知道为什么就不工作了。
然后重启nginx:
/etc/init.d/nginx/restart
然后在浏览器中访问test.php页面,就应该能正确显示了,reboot VPS测试一下,各个模块应该都能自带启动。大功告成!
php-fpm和spawn-fcgi一样,是一个php的fastcgi进程管理器。 spawn-fcgi是个独立的程序,而php-fpm是和php集成在一起的。一般的Linux都不带php-fpm,本文介绍在debian 5 VPS下怎样编译php-fpm。
编译环境准备
首先查看debian的apt软件库的配置,确保/etc/apt/sources.list这个文件里面至少有:
deb http://ftp.us.debian.org/debian lenny main
deb http://security.debian.org/ lenny/updates main
然后同步一下:
apt-get update
安装编译所需要的工具:
apt-get install build-essential vim
安装编译所需要的库:
apt-get install libxml2-dev libmcrypt-dev libssl-dev libldap2-dev libmhash-dev libmysqlclient15-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libsasl2-dev
编译
下载php 5.2.10和相应的php-fpm补丁,然后开始编译:
tar zxf php-5.2.10.tar.gz
cd php-5.2.10
cat ../php-5.2.10-fpm-0.5.13.diff | patch -p1
./configure --prefix=/opt/php --with-iconv --with-zlib --enable-xml --disable-rpath --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --without-pear --with-mysql --with-mysqli --enable-sqlite-utf8 --with-pdo-mysql --enable-ftp --with-jpeg-dir --with-freetype-dir --with-png-dir
make install
cp php.ini-dist /opt/php/lib/php.ini
ln -s /opt/php/sbin/php-fpm /etc/init.d/php-fpm
update-rc.d -f php-fpm defaults
编译后的php安装在/opt/php下面,php的配置文件是/opt/php/lib/php.ini
和其他Linux下不同,在Debian下这时候启动php-fpm会失败,原因是在Debian下php-fpm的配置文件中必须指定运行时的用户才行。
优化php-fpm
编辑php-fpm的配置文件/opt/php/etc/php-fpm.conf,
- 去掉display_errors参数的注释,修改参数值为1
- 去掉sendmail_path参数的注释
- 去掉user,group参数的注释
- 修改max_children参数的值为10
安装php加速器eAccelerator
tar jxf eaccelerator-0.9.5.3.tar.bz2
cd eaccelerator-0.9.5.3
apt-get install -y autoconf
/opt/php/bin/phpize
./configure --enable-eaccelerator --with-php-config=/opt/php/bin/php-config
make install
mkdir /opt/php/eaccelerator_cache
然后vim /opt/php/lib/php.ini,在文件末尾加入:
[eaccelerator]
zend_extension="/opt/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/opt/php/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
然后重启php-fpm,在phpinfo()页面中应该能看到eaccelerator的信息了。
打包
我们把/opt/php目录打包为php-fpm-5.2.10-amd64.tar.gz,放到http://dl.rashost.com/下面,供客户下载使用。
近期评论