[原创]Debian从零搭建搭建服务器
debian squeezy测试通过。debian wheezy已经不对openvz支持,不知道在debian wheezy中,如何实现虚拟化。
ls命令多页显示:ls | more
查看分区情况:
cat /etc/fstab
blkid命令按照分区的UUID列出系统正在使用的设备信息
安装资源管理器:Midnight Commander(mc)
apt-get install mc
查看当前系统提供的服务
tasksel --list-tasks
在显示的结果中,u表示未安装,i表示已安装。
dpkg命令
dpkg -l <packname>
检查包packname是否已经安装
dpkg -L <pagename>
检查软件包中都包含哪些文件,软件包中包含的文件较多时,加上 | more 参数就可以分页来显示了。
dpkg-reconfigure
重新配置已安装的软件包。
ifconfig
查看ip信息
/etc/network/interface
网络配置文件
/etc/resolv.conf
DNS配置文件
/etc/hosts
host配置文件
fdisk -l
查看硬盘信息
ntp时间同步
1)安装ntpdate:apt-get install ntpdate
2)创建文件:sudo nano /etc/cron.daily/timeupdate
3)文件中写入:ntpdate pool.ntp.org
如果担心依赖一个服务器,获取时间会失败,那么增加多个时间更新服务器,可以写为 ntpdate ntp.ubuntu.com pool.ntp.org,多个服务器之间用空格隔开即可。
4)保存文件后,赋予该文件可执行权限: sudo chmod 755 /etc/cron.daily/timeupdate
这里也可以直接执行命令来同步时间:
ntpdate pool.ntp.org
SSHD远程管理服务器
1)安装SSH Server:sudo apt-get install openssh-server
2)修改默认端口22为其他,例如3322:nano /etc/ssh/sshd_config
3)如果在windows操作系统下远程连接服务器进行管理下载putty进行连接;如果在linux系统中,则可以安装openssh-client:sudo apt-get install openssh-client
虚拟化的准备工作----运行带有OpenVZ补丁的Linux内核
1)将默认shell由dash修改为bash
sudo ln -sf /bin/bash /bin/sh
2)禁用apparmor
sudo /etc/init.d/apparmor stop
sudo update-rc.d -f apparmor remove
sudo apt-get remove apparmor apparmor-utils
3)安装OpenVZ
apt-get install linux-image-openvz-amd64 vzdump vzctl vzquota
ln -s /var/lib/vz /vz
4)调整内核参数
sudo nano /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
5)使其立即生效
sudo sysctl -p
6)修改VE全局配置
sudo nano /etc/vz/vz.conf
将NEIGHBOUR_DEVS设置为all
7)修改vps.basic配置文件
sudo nano /etc/vz/conf/ve-vps.basic.conf-sample
这一步,我在debian 6.05没有找到这个文件,名称应该为:ve-basic.conf-sample
sudo nano /etc/vz/conf/ve-basic.conf-sample
在配置文件中,将部分值修改大一些,可能会避免很多小麻烦。
最后,在配置文件后加入
CAPABILITY="CHOWN:on DAC_READ_SEARCH:on SETGID:on SETUID:on NET_BIND_SERVICE:on NET_ADMIN:on SYS_CHROOT:on SYS_NICE:on"
记得保存。
8)重启
9)查看当前的内核
sudo uname -r
可以看到如下信息:
2.6.32-5-openvz-amd64
说明服务器已经在运行带有OpenVZ补丁的内核了。
虚拟机的创建
1) 在OpenVZ安装完成后首选需要建立虚拟机,最简单的方法是直接下载OpenVZ官方提供的各种Linux发行版的虚拟机模板使用(下载地址:http://wiki.openvz.org/Download/templates/precreated),通过模板来建立虚拟机。
cd /var/lib/vz/template/cache
wget http://download.openvz.org/template/precreated/debian-6.0-x86_64.tar.gz
或者:
wget http://download.openvz.org/template/precreated/contrib/debian-6.0-amd64-minimal.tar.gz
另外几个备用,如果使用相关内核可以使用它们:
http://download.openvz.org/template/precreated/ubuntu-12.04-x86_64.tar.gz (205M)
http://download.openvz.org/template/precreated/debian-6.0-x86_64.tar.gz(151M)
http://download.openvz.org/template/precreated/contrib/debian-6.0-amd64-minimal.tar.gz (74.3M)
http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz (211M)
下载好之后,将下载好的虚拟机模板移动到/var/lib/vz/template/cache目录备用。
sudo mv /home/ode/debian-6.0-x86_64.tar.gz /var/lib/vz/template/cache/
2)创建虚拟机
我不是用root用户登录的,在创建虚拟机之前可能需要修改模板文件的权限
chmod 775 debian-6.0-amd64-minimal.tar.gz
下面的命令创建虚拟机
sudo vzctl create 200 --ostemplate debian-6.0-amd64-minimal
参数200是VE的ID,简称VEID(虚拟机的编号,以后会比较常用),需要注意的是100以下的ID是OpenVZ内部使用的,我也没有试用了会是什么后果。
创建完成后会显示如下的信息:
虚拟机创建后,它的配置文件在 /etc/vz/conf/200.conf,默认情况下,虚拟机被创建在 /var/lib/vz/private/200/ 目录下,看看它的目录,与普通安装的linux一模一样:
修改虚拟机的配置
修改虚拟机的配置,可以直接修改配置文件,也可以用vzctl命令来修改,vzctl命令所作的修改可以实时生效,如果在修改配置的同时保存配置,需要加上 --save 选项。
设置虚拟机的主机名:
sudo vzctl set 200 --hostname test.mydomain.com --save
设置虚拟机的IP地址:
sudo vzctl set 200 --ipadd 192.168.0.3 --save
设置虚拟机的DNS服务器地址:
sudo vzctl set 200 --nameserver 61.232.206.103 --nameserver 61.234.145.102 --save
设置虚拟机允许的socket数量为480:
sudo vzctl set 200 --numothersock 480 --save
虚拟机的启动、停止、进入、删除操作
启动虚拟机
sudo vzctl start 200
进入虚拟机
sudo vzctl enter 200
启动虚拟机后,就可以为虚拟机安装需要的软件了。不过首先要给root用户设置密码:使用passwd命令即可。
返回到主机
exit
停止虚拟机(关机)
sudo vzctl stop 200
删除虚拟机
sudo vzctl destroy 200
虚拟机中搭建FTP 文件服务器
1)安装Pure-FTPd
sudo apt-get install pure-ftpd-mysql mysql-server
2)配置Pure-FTPd
首先添加ftp的用户和组
sudo groupadd -g 2001 ftpgroup
sudo useradd -u 2001 -s /bin/false -d /dev/null -c "Pure-FTPd User" -g ftpgroup ftpuser
上面的命令中,将/bin/false作为shell,使得该用户无法登陆到服务器的shell环境,避免了很多安全问题;将HOME目录设置为 /dev/null,使该用户在操作系统环境中无处安身。
另外将ftp用户限制在chroot环境中:
在配置目录 /etc/pure-ftpd/conf/下面创建一个名为 ChrootEveryone的文件,并将内容设置为:
sudo sh -c "echo 'yes' > /etc/pure-ftpd/conf/ChrootEveryone"
这样每个FTP用户自己的HOME目录就成了他的root目录,他无法到达上层目录中,也就无法浏览其它目录下的文件了。
下面为Pure-FTPd创建mysql数据库
mysql -u root -p
mysql>CREATE DATABASE ftpusers;
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON ftpusers.* TO 'ftpadmin'@'localhost' IDENTIFIED BY 'ftpadminPassword';
mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON ftpusers.* TO 'ftpadmin'@'localhost.localdomain' IDENTIFIED BY 'ftpadminPassword';
mysql>FLUSH PRIVILEGES;
在数据库中创建users表
mysql>USE ftpusers;
mysql> CREATE TABLE IF NOT EXISTS users(
User varchar(16) NOT NULL default '',
Password varchar(32) NOT NULL default '',
Uid int(11) NOT NULL,
Gid int(11) NOT NULL,
Dir varchar(128) NOT NULL default '',
QuotaFiles int(10) NOT NULL default '500',
QuotaSize int(10) NOT NULL default '30',
ULBandwidth int(10) NOT NULL default '80',
DLBandwidth int(10) NOT NULL default '80',
Ipaddress varchar(15) NOT NULL default '*',
Comment tinytext,
Status enum('0','1') NOT NULL default '1',
ULRatio smallint(5) NOT NULL default '1',
DLRatio smallint(5) NOT NULL default '1',
PRIMARY KEY (User),
UNIQUE KEY User (User)
) ENGINE=MyISAM;
这里应该还要对该表进行字符设置等,mysql不太熟悉,先跳过。
mysql>quit
接下来,配置Pure-FTPd的mysql.conf
备份配置文件:sudo cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
配置:sudo nano /etc/pure-ftpd/db/mysql.conf
这一步配置的内容太多,参考《Ubuntu Server 最佳方案》222页。
AND Status="1" AND (Ipaddress="*" OR Ipaddress LIKE "\R")
修改该文件权限,防止其他用户和组读取:
chmod g=o= /etc/pure-ftpd/db/mysql.conf
重启后Pure-FTPd配置完成
sudo /etc/init.d/pure-ftpd-mysql restart
搭建php运行环境
1)安装apache及php5
sudo apt-get install apache2 libapache2-mod-php5 php5-mysql mysql-server
2)有必要的话安装memcached来做缓存
sudo apt-get install php5-memcache
3)重启apache2使其生效
sudo apache2ctrl restart
4)在 /var/www/ 目录中创建一个测试文件phpinfo.php
用nano或其他工具写一些测试html进去,加上这句:
<?php phpinfo(); ?>
就可以完整的显示php服务器的相关信息了。
完成后,在浏览器中输入http://192.168.0.176,应该可以看到
至此,php已经可以运行了。
实现ftp的用户的web管理
1)首先下载user manager for PureFTPd,其官方网址为:http://machiel.generaal.net/
下载地址为:http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz
执行以下命令,下载解压:
cd /var/www/
sudo wget http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz
sudo tar xfvz ftp_v2.1.tar.gz
2)配置user manager for PureFTPd
sudo nano /var/www/ftp/config.php
3)为web管理配置管理员
在浏览器中访问:http://192.168.0.176/ftp/index.php
会有数据库中不存在admin表的错误提示,这时应该对web管理设置管理员帐号。
mysql -u root -p
mysql>USE ftpusers;
mysql> CREATE TABLE IF NOT EXISTS admin(
Username varchar(35) NOT NULL default '',
Password char(32) NOT NULL default '',
PRIMARY KEY (Username)
) ENGINE=MyISAM;
插入一条管理员记录:
mysql>INSERT INTO admin (Username,Password) VALUES('ftpadmin',MD5('ftpadminPassword'));
访问:http://192.168.0.176/ftp/index.php
这时应该可以看到如下界面了:
输入设定好的管理员密码:ftpadminPassword,就可以进入ftp管理界面了:
在这里,配置完成后,在web管理界面新增加的用户只有读权限,是不能写入的,写入需要修改ftpuser或ftpgroup组对ftp目录的权限。
配置邮件服务器(没有成功)
1)安装服务器软件
可能需要先安装postfix:sudo apt-get install postfix
会有一个设置界面,因为目前没有域名转向过来,所以临时设为local only了。
sudo apt-get install postfix-mysql mysql-server dovecot-pop3d dovecot-imapd amavisd-new libclass-dbi-mysql-perl
2)安装内容过滤工具
sudo apt-get install spamassassin clamav-daemon razor pyzor cpio arj zoo nomarch lzop cabextract pax lha unrar
我在debian wheezy中安装他们,lha好像已经被废弃了......暂时跳过。
3)安装web界面工具
sudo apt-get install squirrelmail squirrelmail-locales php5-imap
作者:vincent zhang
出处:http://ode.cnblogs.com http://odevincent.blog.51cto.com
Email:wensheng.zhang#postgres.cn
本作品由vincent zh创作,采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可。