存档

‘Debian’ 分类的存档

在Debian Lenny中安装Nginx+PHP5+MySQL

2010年10月26日 没有评论

Nginx是一款优秀的网站服务器,其特点是可承受负载大,占用内存少,目前国内很多门户网站都已经开始使用Nginx,今天这篇教程我们一起来学习如何在Debian lenny中通过apt来配置一个Nginx+PHP5+MySQL的环境。

1.安装前的准备

在安装之前,首先确保你已经安装好了一台Debian Lenny的服务器,并配置好了常用的服务,比如sshd等。在这里我们假设服务器的主机名为www.unixbar.net,ip地址是192.168.10.24
阅读全文…

分类: Debian, MySQL, Nginx, PHP 标签: , , ,

让你的Debian Linux支持NTFS文件系统的读写

2010年5月24日 没有评论

系统环境debian lenny,默认安装后,不能访问ntfs分区,在安装和配置ntfs-3g以后即可

1.安装ntfs-3g

apt-get -y install ntfs-3g

2.创建挂载的文件夹

我windows下面有三个磁盘.都需要访问。所以在/mnt中新建了三个文件夹,分别是/mnt/C、/mnt/D、/mnt/E
阅读全文…

分类: Debian 标签: , ,

Debian系统解决APT错误一例

2010年5月24日 没有评论

今天在进行apt-get更新的时候出现了如下错误

E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用)
E: 无法对管理目录(/var/lib/dpkg/)加锁,是不是另一个包管理程序在使用它?
无法执行其他apt-get命令

解决办法如下:
第一种(比较暴力)
阅读全文…

分类: Debian 标签: , ,

在Debian Lenny系统中把ClamAV集成PuerFTPd中扫描病毒

2010年4月18日 2 条评论

这篇教程将教你如何在一台Debian Lenny系统中,把ClamAV集成PuerFTPd中扫描病毒。无论何时通过PureFTPd上传文件,ClamAV将会检查这个文件是否是有害文件,如果是就会删除它。
我已经测试无误,这将保证为你工作!

1 首项备注

你首先需要在Debian Lenny服务器上安装PureFTPd,请参考Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On Debian Lenny.这个教程:

2 安装ClamAV

使用下列命令安装ClamAV:

aptitude install clamav clamav-daemon

阅读全文…

在Debian Lenny系统中安装和使用OpenVZ(基于AMD64平台)

2009年10月15日 没有评论

版本: 1.0

源地址:http://www.howtoforge.com/installing-and-using-openvz-on-debian-lenny-amd64

原作者: Falko Timme <ft [at] falkotimme [dot] com>

翻译者: Topkey <www.txtbar.cn>

最后编辑时间:02/04/2009

使用说明:蓝色字体为链接、红色字体为shell中的命令、棕色字体为文件中的内容或者是屏幕中显示的字符、灰色字体为正文

在这篇教程中我将会为大家讲解如何在Debian Lenny服务器上安装OpenVZ。使用OpenVZ你可以在同一个硬件环境中创建多个虚拟化专用服务器(VPS),其作用类似于Xen和Linux Vserver项目.OpenVZ是Virtuozzo旗下的一款开源品牌,提供一个商业的虚拟化解决方案.已经被许多提供虚拟化服务器的提供商使用。OpenVZ内核是遵循GPL授权许可,并且其用户化工具遵循QPL许可。

这篇教程是一篇实用教程,它不包括相关的理论背景,如需了解相关理论背景请查询网络其他的文档。

这篇文档不附带任何形式的保证,我想要说的是这不仅仅是设置此类系统的唯一方法,还有很多达到这个目的的方法,但是我使用的是教程中的方法,我使用此方法,没有任何问题。

1前言

我在这里使用的是一个X86_64(amd64平台下)的系统,如果你是在i386平台,在一些命令的使用上或许有些不同,我将会在不同点特别注别。

2.安装OpenVZ

OpenVZ的内核、vzctl和vzquota包在Debian Lenny库中,我们要使用下列命令安装他们:

apt-get install linux-image-openvz-amd64 vzctl vzquota

(如果你是用的是i386的系统,内核包的名字是linux-image-openvz-686)

创建一个提供后台兼容的符号链接从/var/lib/vz 到 /vz。

ln -s /var/lib/vz /vz

打开/etc/sysctl.conf文件并且确保使用下面的设置:

vi /etc/sysctl.conf

net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1

如果你要修改/etc/sysctl.conf文件运行下列命令:

sysctl –p

然后,

Ps:如果你的虚拟机的ip地址是一个不同子网的主机ip地址的话下一步就显得很重要了。如果你不这样做的话,虚拟机的网络可能不会正常工作。

打开/etc/vz/vz.conf文件并设置NEIGHBOUR_DEVS 参数值为 all:

vi /etc/vz/vz.conf


# Controls which interfaces to send ARP requests and modify APR tables on.

NEIGHBOUR_DEVS=all

在这个环境中,我同时也想安装vzdump和vzprocps包,这两个包并不存在Debian lenny库中。但是我们可以从http://download.openvz.org/debian-systs的网站里的Etch库中下载.(他们曾经也提供Lenny库,但是最近已经被删除了)因此打开/etc/apt/sources.list文件…

vi /etc/apt/sources.list

在这个文件中添加下面的语句:

deb http://download.openvz.org/debian-systs etch openvz

当然我们想从Etch 库中安装文件时不把我们的系统搞糟。我们设置系统只有在在Lenny库中没有适当的软件时,我们才使用Etch库。如果在一个包同时存在在Lenny和Etch版本中时,系统优先在Lenny中安装它。要做到这一点,我们可以在/etc/apt/preferences中可以设置给Lenny更高的权限:

vi /etc/apt/preferences

Package: *

Pin: release a=lenny

Pin-Priority: 700

Package: *

Pin: release a=etch

Pin-Priority: 650

然后我们打开/etc/apt/apt.conf文件…

vi /etc/apt/apt.conf

在这个文件中添加下面两行:

APT::Default-Release “stable”;
APT::Cache-Limit “100000000″;

运行下列命令

wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add – && apt-get update

然后下载库中的关键部分和更新软件包数据库.

然后运行

apt-get install vzdump vzprocps

来安装vzdump和vzprocps.

最后,重启系统:

Reboot

如果系统重启正常,说明安装顺利!

运行命令

uname –r

现在系统将会显示新的OpenVZ的内核:

server1:~# uname -r
2.6.26-1-openvz-amd64
server1:~#

3使用 OpenVZ

在我们使用OpenVZ创建虚拟机之前,我们需要在/var/lib/vz/template/cache文件夹下注意模板的范围,在即将使用的虚拟机里。我们可以通过模板来创建虚拟机。

运行命令

apt-cache search openvz

在输出的结果中你会看到一些Debian的模板。例如:

vzctl-ostmpl-debian-4.0-amd64-minimal – OpenVZ – OS Template debian-4.0-amd64-minimal
vzctl-ostmpl-debian-4.0-i386-minimal – OpenVZ – OS Template debian-4.0-i386-minimal
vzctl-ostmpl-debian-5.0-amd64-minimal – OpenVZ – OS Template debian-5.0-amd64-minimal
vzctl-ostmpl-debian-5.0-i386-minimal – OpenVZ – OS Template debian-5.0-i386-minimal

可以使用下面命令来安装你需要安装系统的模板(ps:amd64平台下的模板不可以在i386主机上使用):

apt-get install vzctl-ostmpl-debian-5.0-amd64-minimal vzctl-ostmpl-debian-4.0-amd64-minimal

你可以使用这些模板的其中一个,你同时也可以在http://wiki.openvz.org/Download/template/precreated找到一个模板的列表.例如,我们不通过apt命令安装vzctl-ostmpl-debian-5.0-amd64-minimal模板。而是使用下列命令下载:

cd /var/lib/vz/template/cache
wget http://download.openvz.org/template/precreated/contrib/debian-5.0-amd64-minimal.tar.gz

(ps:如果你的主机是i386系统,你不能使用amd64的模板-你必须使用i386的模板)

下面,我将会为大家来展示使用OpenVZ的最基本的命令.

假使我们想试用vzctl-ostmpl-debian-5.0-amd64-minimal模板来设置一个虚拟机(ps:你可以在/var/lib/vz/template/cache文件里找到它),运行下列命令:

vzctl create 101 –ostemplate debian-5.0-amd64-minimal –config vps.basic

在这里101必须是一个唯一的ID-每一个虚拟机虚拟拥有独一无二的ID。你可以使用虚拟机ip地址的最后一部分,例如,如果虚拟机ip地址是192.168.0.101,你可以使用101作为虚拟机的ID.

如果你想在系统启动时打开vm,运行下列命令

vzctl set 101 –onboot yes –save

使用下列命令可以设置为虚拟机设置主机名和ip地址:

vzctl set 101 –hostname test.example.com –save
vzctl set 101 –ipadd 192.168.0.101 –save

下面,我们设置接口的数量为120,然后为虚拟机委派几个域名服务器:

vzctl set 101 –numothersock 120 –save
vzctl set 101 –nameserver 145.253.2.75 –nameserver 213.191.92.86 –save

(ps:如果想不是用vzctl命令,你也可以在/etc/vz/conf文件家里直接编辑虚拟机的配置文件)。如果虚拟机的ID是101,其配置文件的位置在etc/vz/conf/101.conf.)

使用下列命令可以启动虚拟机

vzctl start 101

使用下列命令可以为虚拟机设置一个root密码

vzctl exec 101 passwd

使用下列命令可以通过ssh连接到虚拟机(类似于PUTTY):

vzctl enter 101

想要离开虚拟机的终端,直接输入

Exit

停止虚拟机,运行

vzctl stop 101

启动虚拟机,运行

vzctl restart 101

从硬盘里删除虚拟机(ps:在删除之前需要停止虚拟机),运行

vzctl destroy 101

可以通过下列命令查看所有虚拟机的列表和其当前的状态

vzlist –a

server1:~# vzlist -a
VEID      NPROC STATUS  IP_ADDR         HOSTNAME
101          8 running 192.168.0.101   test.example.com
server1:~#

使用下列命令查看分配给虚拟机的资源

vzctl exec 101 cat /proc/user_beancounters

server1:~# vzctl exec 101 cat /proc/user_beancounters
Version: 2.5
uid  resource           held    maxheld    barrier      limit    failcnt
101:  kmemsize         500737     517142   11055923   11377049          0
lockedpages           0          0        256        256          0
privvmpages        2315       2337      65536      69632          0
shmpages            640        640      21504      21504          0
dummy                 0          0          0          0          0
numproc               7          7        240        240          0
physpages          1258       1289          0 2147483647          0
vmguarpages           0          0      33792 2147483647          0
oomguarpages       1258       1289      26112 2147483647          0
numtcpsock            2          2        360        360          0
numflock              1          1        188        206          0
numpty                1          1         16         16          0
numsiginfo            0          1        256        256          0
tcpsndbuf         17856      17856    1720320    2703360          0
tcprcvbuf         32768      32768    1720320    2703360          0
othersockbuf       2232       2928    1126080    2097152          0
dgramrcvbuf           0          0     262144     262144          0
numothersock          1          3        120        120          0
dcachesize            0          0    3409920    3624960          0
numfile             189        189       9312       9312          0
dummy                 0          0          0          0          0
dummy                 0          0          0          0          0
dummy                 0          0          0          0          0
numiptent            10         10        128        128          0
server1:~#

failcnt这一列非常重要,它通常是显示为0。如果不是0的话,这就意味着,当前的虚拟机需要更多的系统资源。打开位于/etc/vz/conf目录下的配置文件,然后适当的增加资源,最后重启虚拟机。

查询更多关于vzctl命令,运行

man vzctl

4.相关链接

在Debian Etch版本的系统中使用Xen3.3.1进行虚拟化应用

2009年10月15日 没有评论

版本 1.0

源地址:http://www.howtoforge.com/virtualization-with-xen-3.3.1-on-debian-etch

原作者: Falko Timme <ft [at] falkotimme [dot] com>

翻译作者:Topkey <http://www.unixbar.net>

最后编辑 02/08/2009

使用说明:蓝色字体为链接、红色字体为shell中的命令、棕色字体为文件中的内容或者是屏幕中显示的字符、灰色字体为正文

这个教程提供手把手的指导,来教会你怎样在Debian Etch(4.0)的系统中安装Xen。

Xen可以帮助你在使用*nix类系统(比如Linux和Freebsd)的主操作系统中创建客户操作系统,也可以叫做“虚拟机”或者domUs,你可以使用Xen在相同的硬件条件下,把你的应用安装在不同的虚拟机当中,这些虚拟机是相互独立的。例如一台虚拟机是作为邮件服务器,一台是作为大流量的web站点,另外的一台作为你的服务客户的web站点,或者创建一个作为Dns服务器的虚拟机等等,这样做的话,不单可以节约你的资金,更重要的是可以大大提升系统的安全性。如果你的作为Dns服务器的虚拟机被入侵了,并不会对你其他的虚拟机产生任何影响.更值得一提的是,你可以移动虚拟机从一台Xen服务器到另外一台。

我不保证这篇论文会适合你!

1 前言

我使用主机名为server1.example.com和IP地址为192.168.0.100的Debian Etch系统来作为我的主系统(dom0).我同时也会在主系统中安装Debian Etch系统来作为我的虚拟机(domU)。

这个教程会为你讲解怎样安装Image-based虚拟机和LVM-based虚拟机。

注意:Xen 3.3.1配合使用的相当老的2.6.18内核。如果你使用新的硬件,这个系统可能由于找不到驱动而不能启动。

2.安装Xen

在我们安装Xen之前,我们必须要安装一些系统依赖的软件包。

apt-get install make gcc libc6-dev zlib1g-dev python python-dev python-twisted bridge-utils iproute libcurl3 libcurl3-dev bzip2 module-init-tools transfig tgif libncurses5-dev patch libvncserver-dev

libsdl-dev libjpeg62-dev bcc bin86 gawk pciutils-dev mercurial build-essential

安装完成后,我们下载Xen 3.3.1

cd /usr/src
wget http://bits.xensource.com/oss-xen/release/3.3.1/xen-3.3.1.tar.gz

并且解压它:

tar -xvzf xen-3.3.1.tar.gz
cd xen-3.3.1

现在我们就可以用下面的命令来编译它了:

make world && make dist

这将会花掉一些时间,请耐心等待,编译完成后,我们就可以安装Xen了:

./install.sh

安装的过程中会显示类似下面的输出:

server1:/usr/src/xen-3.3.1# ./install.sh
Installing Xen from ’./dist/install’ to ’/'…
- installing for udev-based system
- modifying permissions
All done.
Checking to see whether prerequisite tools are installed…
Xen CHECK-INSTALL  Sun Feb 8 21:22:39 CET 2009
Checking check_brctl: OK
Checking check_crypto_lib: OK
Checking check_curl: unused, OK
Checking check_iproute: OK
Checking check_python: OK
Checking check_python_xml: OK
Checking check_udev: OK
Checking check_xml2: unused, OK
Checking check_zlib_lib: OK
All done.
server1:/usr/src/xen-3.3.1#

运行

mv /lib/tls /lib/tls.disabled

然后为Xen创建系统启动项:

update-rc.d xend defaults 20 21
update-rc.d xendomains defaults 21 20

然后我们打开/etc/modules文件并且确保这个文件中有loop max_loop=64这一行(特别注意:这一步骤仅仅是针对你想常见image-based的虚拟机,如果你想创建lvm-based的虚拟机你可以取消这一步骤):

vi /etc/modules

loop max_loop=64

现在我们来看一下/boot文件夹里的东西:

ls -l /boot/

server1:/usr/src/xen-3.3.1# ls -l /boot/
total 15546
-rw-r–r– 1 root root   71818 2007-03-26 18:32 config-2.6.18-4-486
-rw-r–r– 1 root root   66264 2009-02-08 21:21 config-2.6.18.8-xen
drwxr-xr-x 2 root root    1024 2008-12-14 00:07 grub
-rw-r–r– 1 root root 4845777 2008-12-14 00:04 initrd.img-2.6.18-4-486
drwx—— 2 root root   12288 2008-12-13 23:59 lost+found
-rw-r–r– 1 root root  716728 2007-03-27 00:39 System.map-2.6.18-4-486
-rw-r–r– 1 root root  752541 2009-02-08 21:21 System.map-2.6.18.8-xen
-rw-r–r– 1 root root 1220128 2007-03-27 00:39 vmlinuz-2.6.18-4-486
-rw-r–r– 1 root root 1541626 2009-02-08 21:21 vmlinuz-2.6.18.8-xen
-rw-r–r– 1 root root  433689 2009-02-08 21:14 xen-3.3.1.gz
lrwxrwxrwx 1 root root      12 2009-02-08 21:22 xen-3.3.gz -> xen-3.3.1.gz
lrwxrwxrwx 1 root root      12 2009-02-08 21:22 xen-3.gz -> xen-3.3.1.gz
lrwxrwxrwx 1 root root      12 2009-02-08 21:22 xen.gz -> xen-3.3.1.gz
-rw-r–r– 1 root root 6180789 2009-02-08 21:14 xen-syms-3.3.1
server1:/usr/src/xen-3.3.1#

正如你所看到的,这里显示的是新内核2.6.18.8-xen,但是这里没有ramdisk,因此我们来创建一个。

depmod 2.6.18.8-xen
update-initramfs -c -k 2.6.18.8-xen

升级我们的启动引导

update-grub

然后我们重启下系统

reboot

启动完后我们运行命令

uname –r

这时系统的新的Xen内核就会被显示出来

server1:~# uname -r
2.6.18.8-xen
server1:~#

3.安装xen-tools

我们将会使用Xen-tools来创建虚拟机。Xen-tools可以很容易的创建虚拟机,请阅读这个教程来获取更多信息http://www.howtoforge.com/xen_tools_xen_shell_argo.

我们不从 Debian Etch的软件库里安装xen-tools(因为版本相当老),而是直接从开发者的软件库安装,这样的话我们就可以获取最新的版本,打开/etc/apt/sources.list文件。

vi /etc/apt/sources.list

添加下面一行

deb     http://apt.steve.org.uk/etch etch main non-free contrib

然后运行

wget -q http://apt.steve.org.uk/apt-key.gpg -O- | apt-key add – && apt-get update

安装xen-tools:

apt-get install xen-tools

4.创建 Image-Based的虚拟机

现在我们编辑/etc/xen-tools/xen-tools.conf.这个文件包含了xen-create-image脚本使用的默认的参数,无需你在命令行中定义其他的参数。我改变下面的参数并且其他的都设置为默认。

vi /etc/xen-tools/xen-tools.conf

[...]

dir = /home/xen

[...]

dist   = etch     # Default distribution to install.

[...]

gateway   = 192.168.0.1

netmask   = 255.255.255.0

broadcast = 192.168.0.255

[...]

passwd = 1

[...]

kernel      = /boot/vmlinuz-`uname -r`

initrd      = /boot/initrd.img-`uname -r`

[...]

mirror = http://ftp.de.debian.org/debian/

[...]

serial_device = hvc0 #default

[...]

disk_device = xvda #default

[...]

Dir这一行定义虚拟机的镜像存储的位置。

Dist确定将要在虚拟机里安装的版本(Debian Etch)(文件里有一个注释说明所有支持的版本)。

Passwd=1可以使你定义一个创建新的客户域时的root密码。

Mirror定义离你最近的Debian镜像

确保你定义了网关,子网掩码和广播地址。如果你不这样做的话,当你使用xen-create-image命令时,即使你确定了一个IP地址,你的客户域也不能正常工作。

最重要的是在文件中需添加serial_device = hvc0 (or serial_device = xvc0)这一行,否则你的虚拟机可能不能正常启动。

在我们继续下面的操作之前,我们需要创建虚拟机镜像存储文件的目录。

mkdir /home/xen

现在我们来创建我们的第一个客户域,xen1.example.com,所使用的Ip地址是192.168.0.101:

xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=128Mb –arch=i386 –role=udev

操作已经在/etc/xen-tools/xen-tools.conf文件中定义的命令,在操作你没有在/etc/xen-tools/xen-tools.conf定义的命令时,请确保你在命令中加入了–role=udev,否则你的虚拟机可能不能正常启动!

要学习更多的可用参数说明,请查看xen-create-image的man说明。

man xen-create-image

xen-create-image这时就会为我们创建xen1.example.com虚拟机,这将花费一些时间,输出的结果类似于下面所示。

server1:~# xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=128Mb –arch=i386 –role=udev

General Information
——————–
Hostname       :  xen1.example.com
Distribution   :  etch
Partitions     :  swap            256Mb (swap)
/               4Gb   (ext3)
Image type     :  sparse
Memory size    :  128Mb
Kernel path    :  /boot/vmlinuz-2.6.18.8-xen
Initrd path    :  /boot/initrd.img-2.6.18.8-xen

Networking Information
———————-
IP Address 1   : 192.168.0.101 [MAC: 00:16:3E:85:BC:FC]
Netmask        : 255.255.255.0
Broadcast      : 192.168.0.255
Gateway        : 192.168.0.1

WARNING
——-
Loopback module not loaded and you’re using loopback images
Run the following to load the module:

modprobe loop loop_max=255

Creating partition image: /home/xen/domains/xen1.example.com/swap.img
Done

Creating swap on /home/xen/domains/xen1.example.com/swap.img
Done

Creating partition image: /home/xen/domains/xen1.example.com/disk.img
Done

Creating ext3 filesystem on /home/xen/domains/xen1.example.com/disk.img
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: udev
File: /etc/xen-tools/role.d/udev
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
server1:~#

在这里/etc/xen/xen1.example.com.cfg就会出现xen1.example.com的配置文件,打开它并在文件底部添加下面的参数extra = ‘xencons=hvc0 console=hvc0′(或者extra = ‘xencons=xvc0 console=xvc0′如果你在etc/xen-tools/xen-tools.conf文件中配置的是serial_device = xvc0)

vi /etc/xen/xen1.example.com.cfg

#

# Configuration file for the Xen instance xen1.example.com, created

# by xen-tools 4.1 on Sun Feb  8 21:42:15 2009.

#


#

#  Kernel + memory size

#

kernel      = ‘/boot/vmlinuz-2.6.18.8-xen’

ramdisk     = ‘/boot/initrd.img-2.6.18.8-xen’


memory      = ’128′


#

#  Disk device(s).

#

root        = ‘/dev/xvda2 ro’

disk        = [

'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w',

'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w',

]



#

#  Physical volumes

#




#

#  Hostname

#

name        = ‘xen1.example.com’


#

#  Networking

#

vif         = [ 'ip=192.168.0.101,mac=00:16:3E:85:BC:FC' ]


#

#  Behaviour

#

on_poweroff = ‘destroy’

on_reboot   = ‘restart’

on_crash    = ‘restart’



extra = ‘xencons=hvc0 console=hvc0′

如果你不加入这一行的话,你再使用xm console命令进入vm的终端时,启动进程就会被永远挂起了(但是事实上,vm正在正常运行,你可以使用ssh连接它)。

(请注意:如果你有双核或者四核的cpu并且想在虚拟机中使用所有的核,请在配置文件中添加vcpus = ’2′ or vcpus = ’4′这一行)。

如果想启动虚拟机,运行命令

xm create /etc/xen/xen1.example.com.cfg

输入

xm console xen1.example.com

就会进入到了虚拟机(如果想返回dom0,在console时敲入CTRL+],在putty时敲入CTRL+5),或者你使用SSh的客户端进入(192.168.0.101).

(如果在vm系统启动进程中看到下列信息

EXT3-fs: mounted filesystem with ordered data mode.

***************************************************************
***************************************************************
** WARNING: Currently emulating unsupported memory accesses  **
**          in /lib/tls glibc libraries. The emulation is    **
**          slow. To ensure full performance you should      **
**          install a ’xen-friendly’ (nosegneg) version of   **
**          the library, or disable tls support by executing **
**          the following as root:                           **
**          mv /lib/tls /lib/tls.disabled                    **
** Offending process: modprobe (pid=1757)                    **
***************************************************************
***************************************************************

Continuing…

在vm中运行下列命令

mv /lib/tls /lib/tls.disabled

如果想查看主机中所有虚拟机,输入

xm list

输出的结果类似于

server1:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   874     1     r—–    714.2
xen1.example.com                             1   128     1     -b—-     63.8
server1:~#

如果你想关闭虚拟机,请输入下列命令

xm shutdown xen1.example.com

如果你想虚拟机xen1.example.com在主机启动的时候自动启动,输入下列命令

ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

下面将为大家介绍几个重要的Xen命令

xm create -c /path/to/config –启动虚拟机

xm shutdown <name> -关闭虚拟机

xm destroy <name> -立刻关闭虚拟机,类似于直接关闭电源按钮

xm list列出所有运行的系统

xm console <name> -登入虚拟机

xm help – 命令说明列表

使用xen-create-image命令可以显示所有创建过的虚拟机的列表。

xen-list-images

server1:~# xen-list-images
Name: xen1.example.com
Memory: 128
IP: 192.168.0.101
server1:~#

5.创建LVM-Based虚拟机

在这一章将会说明怎样设置一个LVM-Based虚拟机而非使用磁盘镜像的虚拟机,使用磁盘镜像的虚拟机运行时十分慢,并增大了磁盘IO的负担。

在这个例子中,我使用一个带有LVM卷组大约50GB空间的/dev/vg0 Debian Etch主机,/dev/vg0 包含两个逻辑卷,dev/vg0/root 和 /dev/vg0/swap_1 另外剩余12Gb空间没有分配- 可以使我们自爱创建我们的虚拟机时创建逻辑卷。

Vgdisplay

server1:~# vgdisplay
— Volume group —
VG Name               vg0
System ID
Format                lvm2
Metadata Areas        1
Metadata Sequence No  3
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                2
Open LV               2
Max PV                0
Cur PV                1
Act PV                1
VG Size               49.52 GB
PE Size               4.00 MB
Total PE              12678
Alloc PE / Size       3072 / 12.00 GB
Free  PE / Size       9606 / 37.52 GB
VG UUID               iXaW0I-RkGD-WQlQ-dMaD-qfM5-xkvq-2w5uP5

server1:~#

lvdisplay

server1:~# lvdisplay
— Logical volume —
LV Name                /dev/vg0/root
VG Name                vg0
LV UUID                17thCh-CgS8-ZvrJ-FOai-B1AX-89sv-xxq12a
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                10.00 GB
Current LE             2560
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:0

— Logical volume —
LV Name                /dev/vg0/swap_1
VG Name                vg0
LV UUID                u2EZyP-3Vp5-Lr32-nquG-ub5a-f0U5-VI3WRN
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:1

server1:~#

现在我们编辑/etc/xen-tools/xen-tools.conf.这个文件包含了xen-create-image脚本使用的默认的参数,无需你在命令行中定义其他的参数。我改变下面的参数并且其他的都设置为默认。

vi /etc/xen-tools/xen-tools.conf

[...]

lvm = vg0

[...]

dist   = etch     # Default distribution to install.

[...]

gateway   = 192.168.0.1

netmask   = 255.255.255.0

broadcast = 192.168.0.255

[...]

passwd = 1

[...]

kernel      = /boot/vmlinuz-`uname -r`

initrd      = /boot/initrd.img-`uname -r`

[...]

mirror = http://ftp.de.debian.org/debian/

[...]

serial_device = hvc0 #default

[...]

disk_device = xvda #default

[...]

确保lvm这一行没有注销,并在这一行填入你的卷组(在我的试验中是vg0).同时确保dir这一行已被注销。

Dist确定将要在虚拟机里安装的版本(Debian Etch)(文件里有一个注释说明所有支持的版本)。

Passwd=1可以使你定义一个创建新的客户域时的root密码。

Mirror定义离你最近的Debian镜像

确保你定义了网关,子网掩码和广播地址。如果你不这样做的话,当你使用xen-create-image命令时,即使你确定了一个IP地址,你的客户域也不能正常工作。

最重要的是在文件中需添加serial_device = hvc0 (or serial_device = xvc0)这一行,否则你的虚拟机可能不能正常启动。

在我们继续下面的操作之前,我们需要创建虚拟机镜像存储文件的目录。

mkdir /home/xen

现在我们来创建我们的第一个客户域,xen1.example.com,所使用的Ip地址是192.168.0.101:

xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=128Mb –arch=i386 –role=udev

操作已经在/etc/xen-tools/xen-tools.conf文件中定义的命令,在操作你没有在/etc/xen-tools/xen-tools.conf定义的命令时,请确保你在命令中加入了–role=udev,否则你的虚拟机可能不能正常启动!

要学习更多的可用参数说明,请查看xen-create-image的man说明。

man xen-create-image

xen-create-image这时就会为我们创建xen1.example.com虚拟机,这将花费一些时间,输出的结果类似于下面所示。

server1:~# xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=128Mb –arch=i386 –role=udev

General Information
——————–
Hostname       :  xen1.example.com
Distribution   :  etch
Partitions     :  swap            256Mb (swap)
/               4Gb   (ext3)
Image type     :  full
Memory size    :  128Mb
Kernel path    :  /boot/vmlinuz-2.6.18.8-xen
Initrd path    :  /boot/initrd.img-2.6.18.8-xen

Networking Information
———————-
IP Address 1   : 192.168.0.101 [MAC: 00:16:3E:1C:B9:F3]
Netmask        : 255.255.255.0
Broadcast      : 192.168.0.255
Gateway        : 192.168.0.1

Creating swap on /dev/vg0/xen1.example.com-swap
Done

Creating ext3 filesystem on /dev/vg0/xen1.example.com-disk
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: udev
File: /etc/xen-tools/role.d/udev
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done

Logfile produced at:
/var/log/xen-tools/xen1.example.com.log
server1:~#

正如你从输出结果中看到的那样,xen-create-image已经在vg0卷组中为我们的虚拟机创建了一个新的逻辑卷,/dev/vg0/xen1.example.com-disk为vm的启动文件,用下面命令可以查看,

Lvdisplay

同时你也会看到另外一个逻辑卷/dev/vg0/xen1.example.com-swap作为vm的swap

server1:~# lvdisplay
— Logical volume —
LV Name                /dev/vg0/root
VG Name                vg0
LV UUID                17thCh-CgS8-ZvrJ-FOai-B1AX-89sv-xxq12a
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                10.00 GB
Current LE             2560
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:0

— Logical volume —
LV Name                /dev/vg0/swap_1
VG Name                vg0
LV UUID                u2EZyP-3Vp5-Lr32-nquG-ub5a-f0U5-VI3WRN
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                2.00 GB
Current LE             512
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:1

— Logical volume —
LV Name                /dev/vg0/xen1.example.com-swap
VG Name                vg0
LV UUID                No03G8-PzA3-67JH-m936-rUQY-rZFi-djIu21
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                256.00 MB
Current LE             64
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:2

— Logical volume —
LV Name                /dev/vg0/xen1.example.com-disk
VG Name                vg0
LV UUID                xDwpFO-XALQ-7I1N-TA3k-paYc-biG7-TjrNIM
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                4.00 GB
Current LE             1024
Segments               1
Allocation             inherit
Read ahead sectors     0
Block device           253:3

server1:~#

在这里/etc/xen/xen1.example.com.cfg就会出现xen1.example.com的配置文件,打开它并在文件底部添加下面的参数extra = ‘xencons=hvc0 console=hvc0′(或者extra = ‘xencons=xvc0 console=xvc0′如果你在etc/xen-tools/xen-tools.conf文件中配置的是serial_device = xvc0)

vi /etc/xen/xen1.example.com.cfg

#

# Configuration file for the Xen instance xen1.example.com, created

# by xen-tools 4.1 on Sun Feb  8 22:01:30 2009.

#


#

#  Kernel + memory size

#

kernel      = ‘/boot/vmlinuz-2.6.18.8-xen’

ramdisk     = ‘/boot/initrd.img-2.6.18.8-xen’


memory      = ’128′


#

#  Disk device(s).

#

root        = ‘/dev/xvda2 ro’

disk        = [

'phy:/dev/vg0/xen1.example.com-disk,xvda2,w',

'phy:/dev/vg0/xen1.example.com-swap,xvda1,w',

]



#

#  Physical volumes

#




#

#  Hostname

#

name        = ‘xen1.example.com’


#

#  Networking

#

vif         = [ 'ip=192.168.0.101,mac=00:16:3E:1C:B9:F3' ]


#

#  Behaviour

#

on_poweroff = ‘destroy’

on_reboot   = ‘restart’

on_crash    = ‘restart’


extra = ‘xencons=hvc0 console=hvc0′

如果你不加入这一行的话,你再使用xm console命令进入vm的终端时,启动进程就会被永远挂起了(但是事实上,vm正在正常运行,你可以使用ssh连接它)。

(如果你使用的是磁盘镜像而非逻辑卷,disk这一行是下面设置

disk = [ 'file:/path/to/xen1.example.com/disk.img,xvda1,w', 'file:/path/to/xen1.example.com/swap.img,xvda2,w' ])

(请注意:如果你有双核或者四核的cpu并且想在虚拟机中使用所有的核,请在配置文件中添加vcpus = ’2′ or vcpus = ’4′这一行)。

如果要启动虚拟机,运行

xm create /etc/xen/xen1.example.com.cfg

输入

xm console xen1.example.com

就会进入到了虚拟机(如果想返回dom0,在console时敲入CTRL+],在putty时敲入CTRL+5),或者你使用SSh的客户端进入(192.168.0.101).

(如果在vm系统启动进程中看到下列信息

EXT3-fs: mounted filesystem with ordered data mode.

***************************************************************
***************************************************************
** WARNING: Currently emulating unsupported memory accesses  **
**          in /lib/tls glibc libraries. The emulation is    **
**          slow. To ensure full performance you should      **
**          install a ’xen-friendly’ (nosegneg) version of   **
**          the library, or disable tls support by executing **
**          the following as root:                           **
**          mv /lib/tls /lib/tls.disabled                    **
** Offending process: modprobe (pid=1757)                    **
***************************************************************
***************************************************************

Continuing…

在vm中运行下列命令

mv /lib/tls /lib/tls.disabled

想得到正在运行的虚拟机的列表,输入下列命令

xm list

得到的结果应该如下所示:

server1:~# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   874     1     r—–   1367.1
xen1.example.com                             2   128     1     ——     33.3
server1:~#

如果你想关闭虚拟机,请输入下列命令

xm shutdown xen1.example.com

如果你想虚拟机xen1.example.com在主机启动的时候自动启动,输入下列命令

ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

下面将为大家介绍几个重要的Xen命令

xm create -c /path/to/config –启动虚拟机

xm shutdown <name> -关闭虚拟机

xm destroy <name> -立刻关闭虚拟机,类似于直接关闭电源按钮

xm list列出所有运行的系统

xm console <name> -登入虚拟机

xm help – 命令说明列表

使用xen-create-image命令可以显示所有创建过的虚拟机的列表。

xen-list-images

server1:~# xen-list-images
Name: xen1.example.com
Memory: 128
IP: 192.168.0.101
server1:~#

想学习如果使用xen-tools的更多的知识,请访问http://www.howtoforge.com/xen_tools_xen_shell_argo

6 相关链接

使用vzdump克隆/备份/恢复OpenVZ虚拟机

2009年10月15日 2 条评论

版本 1.0

源地址:http://www.howtoforge.com/clone-back-up-restore-openvz-vms-with-vzdump

原作者: Falko Timme <ft [at] falkotimme [dot] com>

翻译者:Topkey<http://www.unixbar.net>

最后编辑日期: 11/20/2008

使用说明:蓝色字体为链接、红色字体为shell中的命令、棕色字体为文件中的内容、灰色字体为正文

Vzdump是一款OpenVZ虚拟机的备份和恢复工具,这篇教程将会教会你怎样使用Vzdump克隆/备份/恢复虚拟机。

这篇文章我已经测试成功!

1 前言

我在这篇教程中使用两个OpenVZ服务器:

Server1.example.com:IP 192.168.0,100

Server2.example.com:IP 192.168.0.101

(两台都使用的是Debian Etch的系统,设置的过程大家可以参考这篇教程Installing And Using OpenVZ On Debian Etch-但是vzdump同时也支持其他版本的linux)

我在server1.example.com服务器上运行着一个主机名为test.example.com的虚拟机,它的ip地址是192.168.1.102且他的VEID是102.我想备份这个虚拟机,并把它恢复在server2.example.com这台服务器上。

我们可以原封不动的把虚拟机恢复在server2.example.com的服务器上(例如相同的ip地址和主机名),但是运行克隆在server2的虚拟机时,我们必须停止在server1.example.com服务器上的虚拟机。否则的话,ip地址和主机名将会冲突;第二种方法我们在恢复虚拟机之前,使用vzctl set命令改变一些参数例如ip地址和主机名。这样的话,我们可以同时运行两个虚拟机(原本运行在server1.example.com上的虚拟机和克隆在server2.example.com)第二种方法是克隆虚拟机的最好的方法。

2.准备OpenVz服务器

首先我们必须安装Vzdump和它所依赖的rsync,在debian系统中,命令如下:


server1/server2:

apt-get install vzdump rsync

3创建一个虚拟机的备份

这一章仅需要在server1服务器上操作就可以了

在server1.example.com上,想创建一个VEID为102的虚拟机的备份,先看一下vzdump的帮助

man vzdump

来学习下如何使用vzdump.

要备份你服务器上所有的虚拟机,你可以使用下列命令

vzdump –compress –dumpdir /home/backup –stop –all

–compress 意思是: 压缩备份的文件 (压缩为一个.tgz文件).

–dumpdir确定你想存储备份的文件夹,如果你不定义一个dumpdir,默认为/vz/dump或者/var/lib/vz/dump(依赖你的版本)。

–stop 停止虚拟机,常见备份,然后启动虚拟机。如果你使用—stop你的虚拟机将会停掉几分钟.一个更快的方案是你使用…

–suspend:挂起虚拟机,虚拟机备份这时会拷贝via rsync到一个临时文件.虚拟机将会在定调几秒后立刻得以恢复,然后这个dump被创建使用的是临时文件夹下的拷贝。我推荐使用这种方法如果你不想等太久的话。

你也可以省去–stop 和 –suspend直接备份一个正在运行的虚拟机,大多数情况下这是没有问题的,但是可能会使备份不同意,因此请慎用!

–all创建所有可用虚拟机的备份,如果你想备份一个特定虚拟机的备份,使用虚拟机的VEID来替换。

要想把创建VEID为102的虚拟机备份在/home/backup,并且想在备份的时候停止虚拟机,使用下列命令

vzdump –compress –dumpdir /home/backup –stop 102

要想创建一个dump到默认文件夹(/vz/dump or /var/lib/vz/dump),使用命令

vzdump –compress –stop 102

输出结果将会如下所示

server1:/vz/dump# vzdump –compress –stop 102
INFO: starting backup for VPS 102 (/var/lib/vz/private/102)
INFO: starting first sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp9009
INFO: stopping vps
Stopping container …
Container was stopped
Container is unmounted
INFO: final sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp9009
INFO: restarting vps
Starting container …
Container is mounted
Adding IP address(es): 192.168.0.102
Setting CPU units: 1000
Configure meminfo: 65536
Set hostname: test.example.com
File resolv.conf was modified
Container start in progress…
INFO: vps is online again after 15 seconds
INFO: Creating archive ‘/var/lib/vz/dump/vzdump-102.tgz’ (/var/lib/vz/dump/tmp9009/102)
Total bytes written: 340428800 (325MiB, 11MiB/s)
INFO: backup for VPS 102 finished successful (1.37 minutes)
server1:/vz/dump#

不像停止,仅仅挂起虚拟机,使用命令

vzdump –compress –suspend 102

输出结果如下所示

server1:~# vzdump –compress –suspend 102
INFO: starting backup for VPS 102 (/var/lib/vz/private/102)
INFO: starting first sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp10842
INFO: suspend vps
Setting up checkpoint…
suspend…
get context…
Checkpointing completed succesfully
INFO: final sync /var/lib/vz/private/102 to /var/lib/vz/dump/tmp10842
INFO: resume vps
Resuming…
INFO: vps is online again after 4 seconds
INFO: Creating archive ’/var/lib/vz/dump/vzdump-102.tgz’ (/var/lib/vz/dump/tmp10842/102)
Total bytes written: 340428800 (325MiB, 24MiB/s)
INFO: backup for VPS 102 finished successful  (1.57 minutes)
server1:~#

在备份之后,我们看一下dump的目录…

ls -l /vz/dump/

你将会看到一个以.tgz为后缀的文件:

server1:~# ls -l /vz/dump/
total 147864
-rw-r–r– 1 root root      1170 2008-11-20 17:40 vzdump-102.log
-rw-r–r– 1 root root 151249685 2008-11-20 17:40 vzdump-102.tgz
server1:~#

你现在就可以拷贝这个dump到其他的OpenVZ服务器上了,使用scp把/vz/dump/vzdump-102.tgz这个备份拷贝到server2.example.com的/home文件夹下);

scp /vz/dump/vzdump-102.tgz root@192.168.0.101:/home

4.恢复一个虚拟机

(这一章仅仅是针对server2的!)

在server2.example.com,你现在就可以恢复这个虚拟机了,使用下列命令….

vzdump –restore /home/vzdump-102.tgz 250

在这里250是恢复虚拟机新的VEID-你也可以使用任何在server2.example.com上没有被使用的VEID-你甚至可以再次使用102,如果server2.example.com上没有使用的话。

如果你不想修改虚拟机的设置(例如。Ip地址,主机名),你现在就可以启动它了,但是请确认在server1.example.com上的原始的虚拟机已经停止,否则会导致ip冲突。

vzctl start 250

如果你想同时运行两个虚拟机(原始的和克隆的),你必须克隆虚拟机启动前改变其ip地址和主机名.

要设置一个新的主机名,运行下列命令:


vzctl set 250 –hostname test2.example.com –save

要设置一个新的ip地址,我们必须先删除原来的。

vzctl set 250 –ipdel 192.168.0.102 –save

然后我们设置一个新的

vzctl set 250 –ipadd 192.168.0.250 –save

最后我们就可以启动克隆的虚拟机了。

vzctl start 250

5 相关链接

分类: Debian, Virtualization 标签: ,

在Debian Lenny上为Apache2安装mod_geoip模块

2009年10月14日 1 条评论

版本 1.0

源地址:http://www.howtoforge.com/installing-mod_geoip-for-apache2-on-debian-lenny
原作者: Falko Timme <ft [at] falkotimme [dot] com>
翻译者:Topkey www.txtbar.cn

最后编辑日期 08/04/2009

使用说明:蓝色字体为链接、红色字体为shell中的命令、棕色字体为文件中的内容、灰色字体为正文

这篇教程为你展示怎样在一个Debian Lenny系统上设置带有mod_geoip的Apache2服务器。mod_geoip可以查询终端客户的ip地址,它允许你重定向或者阻止某个国家的用户。你也可以用它来配合你的OpenX(前身为OpenAds 或phpAds)广告服务器进行地理定位。

我测试没有任何问题!

1 初步说明

在这里我假设你已经安装了一个可以运行Apache2的Debian Lenny系统,如果你们有安装,可以参考下面的教程The Perfect Server – Debian Lenny (Debian 5.0) [ISPConfig 2]安装。

2 安装 mod_geoip

我们运行下列命令来安装mod_geoip:

aptitude install libapache2-mod-geoip

然后我们打开/etc/apache2/mods-available/geoip.conf,取消GeoIPDBFile这一行的评注,并修改成下面的形式。

vi /etc/apache2/mods-available/geoip.conf

<IfModule mod_geoip.c>

GeoIPEnable On

GeoIPDBFile /usr/share/GeoIP/GeoIP.dat

</IfModule>

下面我们重启Apache:

/etc/init.d/apache2 restart

一切就绪!

3 一个简单的测试

我们可以创建在我们的web空间(例如/var/www)里创建一个小型的PHP文件,来检测mod_geoip是否正常工作,

vi /var/www/geoiptest.php

<html>

<body>

<?php

$country_name = apache_note(“GEOIP_COUNTRY_NAME”);

print “Country: ” . $country_name;

?>

</body>

</html>

在浏览器里访问这个文件,就可以看到你所在的国家了(需要注意的是,你需要从公网IP访问,而非本地)。

4 用例

你可以使用mod_geoip来重定向或者阻止允许基于某个国家的用户。你可以在这里来找到一些有用的例子。: http://www.maxmind.com/app/mod_geoip

如果你想配合OpenX/OpenAds/phpAdsNew 使用mod_geoip,这里有可作为教程的PDF: http://www.maxmind.com/openads_geoip.pdf

5 相关链接

分类: Apache, Debian 标签: , ,

在Debian Etch系统中设置支持TLS的ProFTPd服务器

2009年10月14日 没有评论

版本 1.0

源地址:http://www.howtoforge.com/proftpd-tls-debian-etch

原作者: Falko Timme <ft [at] falkotimme [dot] com>

翻译者:Topkey <tinybiz[at]163.com>

最后一次编辑时间 12/03/2007

使用说明:蓝色字体为链接、红色字体为shell中的命令、棕色字体为文件中的内容、黑色字体为正文

FTP是一个非常不安全的协议因为所有的密码和数据都是以明文的形式传输的。通过使用TLS,整个的传输过程都会被加密,因此可以是FTP变得更加的安全。这篇文章将会说明如何在你的Debian Etch系统中设置支持TLS的ProFTPd服务器。

我做这篇教程不能保证完全适合你!

1.前言

在这篇教程中我使用的主机名是server1.example.com,IP地址是192.168.0.100.这些设置可能与你的系统有所不同,所以你可以做适当的修改。

2.安装ProFTPd和OpenSSL

TLS需要使用OpenSSL,要安装ProFTPd和OpenSSL,我们运行下列命令:

apt-get install proftpd openssl

你将会回答下列的提问

Run proftpd from inetd or standalone? <– standalone

接下来打开/etc/proftpd/proftpd.conf文件并且修改UseIPv6从on状态到off状态;否则你将会在启动ProFTPd时出现下列警告:

Starting ftp server: proftpd – IPv6 getaddrinfo ‘server1.example.com’ error: Name or service not known

vi /etc/proftpd/proftpd.conf

[...]

DefaultRoot ~

IdentLookups off

ServerIdent on “FTP Server ready.”

[...]

由于安全的原因,你也可以在你的/etc/proftpd/proftpd.conf文件中添加以下几行(感谢Reinaldo Carvalho的文章;我在这里找到了更多的安全设置说明http://proftpd.org/localsite/Userguide/linked/userguide.html

vi /etc/proftpd/proftpd.conf

[...]

DefaultRoot ~

IdentLookups off

ServerIdent on “FTP Server ready.”

[...]

3.为TLS创建SSL的证书

要使用TLS,我们必须创建一个SSl证书,我把它创建在/etc/proftpd/ssl文件夹下,所以我们要先创建这个文件夹。

mkdir /etc/proftpd/ssl

然后,我们使用下列命令创建SSL证书

openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Country Name (2 letter code) [AU]: <– 输入你的国家的名字 (例如, “DE”).
State or Province Name (full name) [Some-State]: <– 输入你的省或者县市的名字.
Locality Name (eg, city) []: <– 输入你的城市名.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <– 输入你的组织名(例如., 你公司的名字).
Organizational Unit Name (eg, section) []: <–输入你组织的部门名(例如”IT 部门”).
Common Name (eg, YOUR name) []: <– 输入你的服务器的域名(例如 “server1.example.com”).
Email Address []: <– 输入你的EMAIL地址.

4 使ProFTPd支持TLS

要使ProFTPd支持TLS,打开/etc/proftpd/proftpd.conf文件并且找到这以<IfModule mod_tls.c>开头的部分

vi /etc/proftpd/proftpd.conf

在类似这里的地方

[...]


<IfModule mod_tls.c>


TLSEngine off


</IfModule>


[...]

修改上面的参数为

[...]

<IfModule mod_tls.c>

TLSEngine on

TLSLog /var/log/proftpd/tls.log

TLSProtocol SSLv23

TLSOptions NoCertRequest

TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem

TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem

TLSVerifyClient off

TLSRequired on

</IfModule>

[...]

如果你的配置中TLSRequired 是on的,你的FTP服务器只支持TLS的链接(这样的话将会阻止任何所有的老的不支持TLS的FTP客户端);注销掉这一行或者把TLSRequired设置为off的话,TLS和不支持TLS的链接都将会被允许,依赖你的FTP客户端的支持。

然后重启ProFTPd

/etc/init.d/proftpd restart

做到这一步,你就可以用FTP客户端试着连接服务器,你应该配置你的FTP客户端使用TLS模式(如果你设置TLSRequired on的话这一步是必不可少的)看下一章节我们如何用FileZilla来做到这一点的。

如果你在使用TLS的过程中遇到问题,你可以查看TLS的日志文件/var/log/proftpd/tls.log.

5 配置FileZilla支持TLS

要使用FTP的TLS功能,你需要你的客户端支持TLS,例如FileZilla.

在FileZilla中,打开服务器管理器:

filezilla

filezilla

选择服务器使用ProFTPd支持TLS;在服务器类型的下拉菜单中,选择文件而非默认的FTP:

2

现在你可以连接你的服务器.如果你第一次这样做,你必须接受服务器的新的SSL证书。

3

如果一切正常的话,你将会登录到服务器

4

6 链接

分类: Debian, FTP, Security 标签: , ,