老铁们,大家好,相信还有很多朋友对于ubuntu搭建web服务器和如何在Ubuntu上搭建一台安全的Apache的相关问题不太懂,没关系,今天就由我来为大家分享分享ubuntu搭建web服务器以及如何在Ubuntu上搭建一台安全的Apache的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
一、ubuntu服务器怎么搭建网站
如果想用Ubuntu作为网站的服务器,一些基本的服务是必备的。本文对环境的搭建做一个简单的整理。
Appach
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全*被广泛使用,是最流行的Web服务器端软件之一。
安装
sudo apt-get install apache2
大概5M左右,安装完成后服务器会自动启动
在浏览器里输入或者是或者输入IP,如果看到了It works!,那就说明Apache就成功的安装了,Apache的默认安装,会在/var下建立一个名为的目录,这个就是Web目录了,所有要能过浏览器访问的Web文件都要放到这个目录里。
如果更改配置重新启动命令如下:
sudo/etc/init.d/apache2 restart
到这里,如果只是单纯的跑一些静态网页的话这儿就够了,只需要将设计的html文件放入/var/目录即可
到这里我遇到一个问题没解决就是根目录下的二级目录无法访问,重新安装多次,都是同样的问题。
PHP
PHP支持同样是很多网站必备之一,安装命令如下:
sudo apt-get install libapache2-mod-php5 php5
需要6M左右安装包。安装扩展:
sudo apt-get install libapache2-mod-php5 php5
Mysql
sudo apt-get install mysql-server mysql-client
需要26M左右的安装包,等待安装完成,弹出设定密码界面:
输入数据库root密码,按tab键选择确定。接下来会要求重复密码,重复同样操作。
数据库安装完成后,为了方便管理和操作,继续安装phpmyadmin。
sudo apt-get install phpmyadmin
需要6M左右的安装包,安装完成后进入设置界面,
tab键选择是,进行安装,在安装过程中会要求选择Web server:apache2或ligd,使用空格键选定apache2,按tab键然后确定。接下来要求输入密码,输入在上一步中设置的密码,需要输入两次,完成安装。
然后将phpmyadmin与apache2建立连接,目录在/var/,phpmyadmin在/usr/share/phpmyadmin目录,所以就用命令:
sudo ln-s/usr/share/phpmyadmin/var/
建立。
phpmyadmin测试:在浏览器栏中打开就能够进入登录界面,输入前面配置的用户名和密码进行登录,如下图所示。
登录后界面如图所示。
FTP
要想对网站和数据进行管理,少不了的是ftp,通过ftp可以很方便的上传/文件,实现管理,因此需要安装ftp管理工具。
sudo apt-get install vsftpd
二、如何在Ubuntu上搭建一台安全的Apache***Web服务器
本教程假设你已有一台在运行的Ubuntu服务器,网络方面已设置好,而且可以通过SSH进行访问。
Apache2是许多安装的Linux发行版使用的默认Web服务器。它不是对所有环境来说唯一可用的Web服务器,也不是最佳的Web服务器,但是它适合许多使用场景。在安装过程中,系统可能会询问你哪个Web服务器要自动重新配置。选择“apache2”即可。
安装Apache2
使用下面这个命令,安装Apache2及其他库。
$ sudo apt-get-y install apt-get install apache2 apache2.2-mon apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-mon php5-gd php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt libapache2-mod-suphp libopenssl-ruby libapache2-mod-ruby
更新时区(TimeZone)和检查正确时间
为了减小共享数据或镜像数据方面的混淆,所有服务器在运行时都应该尽可能接近同步状态。一些加密密钥管理系统需要准确的时间。最后,就企业服务器而言,《萨班斯-奥克斯利法案》(Sarbanes-Oxley)和《健康保险可携*及责任*法案》(HIPAA)的安全规则要求正确的时间戳机制。
$ sudo apt-get-y install openntpd tzdata
$ sudo dpkg-reconfigure tzdata
$ sudo service openntpd restart
禁止AppArmor冲突
虽然AppArmor这个套件的确提供了一层额外的安全,但在我看来,需要为每个系统创建自定义配置文件。这不是本教程所探讨的内容。所以眼下,我们会禁用AppArmor,防止与任何默认的配置发生冲突。
$ sudo/etc/init.d/armor stop
$ sudo update-rc.d-f armor remove
$ sudo apt-get remove armor armor-utils
注意:如果是生产环境下的Web服务器,不建议禁用AppArmor。如果有些人想创建自定义的AppArmor配置文件,请参阅官方说明文档()。
阻止分布式拒绝服务(DDoS)攻击
DDoS攻击是一种分布式拒绝服务攻击。有一个Apache模块可以阻止这类攻击。
$ sudo apt-get-y install libapache2-mod-evasive
$ sudo mkdir-p/var/log/apache2/evasive
$ sudo chown-R -data:root/var/log/apache2/evasive
把下面这个命令添加到mod-evasive.load的末尾处。
$ sudo nano/etc/apache2/mods-*ailable/mod-evasive.load DOSHashTableSize 2048
DOSPageCount 20#请求同一页面的最大数量
DOSSiteCount 300#同一侦*上同一客户端IP请求任何对象的总数量
DOSPageInterval 1.0#页面数量阈值的间隔
DOSSiteInterval 1.0#站点数量阈值的间隔
DOSBlockingPeriod 10.0#客户机IP被阻止的时间段
DOSLogDir“/var/log/apache2/evasive”
DOSEmailNotify
阻止Slowloris攻击
还有一个Apache模块可以阻止Slowloris攻击,不过模块名称取决于你使用的Ubuntu的具体版本。如果是Ubuntu 12.10或以后版本:
$ sudo apt-get-y install libapache2-mod-qos
然后,检查qos.conf中的配置:
$ sudo nano/etc/apache2/mods-*ailable/qos.conf
##服务质量方面的设置
#处理来自多达100000个不同IP的连接
QS_ClientEntries 100000
#只允许每个IP仅50条连接
QS_SrvMaxConnPerIP 50
#活动TCP连接的最大数量限制在256条
MaxClients 256
#当70%的TCP连接被占用时,禁用保持活动连接状态
QS_SrvMaxConnClose 180
#最小请求/响应速度(拒绝阻塞服务器的慢速客户端,即slowloris保持连接开启,不提出任何请求):
QS_SrvMinDataRate 150 1200
#并限制请求标题和主体(注意,这还限制了上传和发帖请求):
# LimitRequestFields 30
# QS_LimitRequestBody 102
注意:如果你运行12.04之前的Ubuntu版本,改而使用下面这个命令:
$ sudo apt-get-y install libapache2-mod-antiloris
检查antiloris.conf中的配置
$ sudo nano/etc/apache2/mods-*ailable/antiloris.conf
#每个IP处于READ状态的最大并行连接数量
IPReadLimit 5
阻止DNS注入攻击
Spamhaus这个模块使用域名系统黑名单(DNSBL),目的是为了阻止通过Web表单实现的垃圾邮件转发,防止URL注入攻击,阻止来自机器人程序的 DDoS攻击,通常保护服务器,远离已知的恶意IP。
$ sudo apt-get-y install libapache2-mod-spamhaus
$ sudo touch/etc/spamhaus.wl Append the config to apache2.conf
$ sudo nano/etc/apache2/apache2.conf
MS_METHODS POST,PUT,OPTIONS,CONNECT
MS_WhiteList/etc/spamhaus.wl
MS_CacheSize 256
重启Apache装入新模块
$ sudo service apache2 restart
现在Web服务器已安装完毕,并在正常运行。将Web浏览器指向你的域,即可看到证明你一切正常的默认消息。作为最后的检查机制,运行下面这个命令,看看你的服务器有没有任何错误信息。要是有错误信息,你需要上谷歌搜索一下,立马解决这些错误。
$ sudo tail-200/var/log/syslog
三、怎么搭建本地Ubuntu镜像服务器
一.需求分析
最近公司软件Team有个需求是这样的:能不能在局域网搭建一个Ubuntu镜像服务器,
这样作的好处是可以节省Ubuntu某些常用工具的安装时间。
二.部署过程
2.1测试环境
目前在公司内有一台能连接到外网的Ubuntu机器, IP: 192.168.8.173,
Ubuntu版本为Ubuntu 9.04 i686。
2.2搭建步骤
为了创建Ubuntu mirror服务器,最少需要60G硬盘空间,Ubuntu每个版本都有32 bit
和64 bit两个版本,有两组deb包。当然可以创建Ubuntu一个版本的32 bit和64 bit的
镜像服务器,也可以创建全部版本的镜像。
这里使用sohu公司的mirror作为本地Ubuntu Source服务器,使用sohu的原因是:
1. sohu的Ubuntu Source服务器速度相当快
2. sohu的ubuntu Source服务器每天会和Ubuntu官方服务器同步一次,这样可以保
证我们使用的是最新的软件包。
修改方式如下:
root@ms~: cat/etc/apt/sources.list
deb jaunty main restricted universe multiverse
deb jaunty-security main restricted universe multiverse
deb jaunty-updates main restricted universe multiverse
deb jaunty-proposed main restricted universe multiverse
deb jaunty-backports main restricted universe multiverse
deb-src jaunty main restricted universe multiverse
deb-src jaunty-security main restricted universe multiverse
deb-src jaunty-updates main restricted universe multiverse
deb-src jaunty-proposed main restricted universe multiverse
deb-src jaunty-backports main restricted universe multiverse
安装下面工具:
root@ms~: apt-get install apt-mirror
root@ms~: apt-get install apache2
下面就构建Ubuntu 9.04 32bit的本地Ubuntu mirror服务器为例子,来说明如何配置:
修改配置文件:
root@ms~: cat/etc/apt/mirror.list
############# config##################
#
# set base_path/var/spool/apt-mirror
#
# set mirror_path$base_path/mirror
# set skel_path$base_path/skel
# set var_path$base_path/var
# set cleanscript$var_path/clean.sh
# set defaultarch
# set postmirror_script$var_path/postmirror.sh
set run_postmirror 0
set nthreads 20
set _tilde 0
#
############# end config##############
deb-i386 jaunty main restricted universe multiverse
deb-i386 jaunty-security main restricted universe multiverse
deb-i386 jaunty-updates main restricted universe multiverse
#deb jaunty-proposed main restricted universe multiverse
#deb jaunty-backports main restricted universe multiverse
deb-src jaunty main restricted universe multiverse
deb-src jaunty-security main restricted universe multiverse
deb-src jaunty-updates main restricted universe multiverse
#deb-src jaunty-proposed main restricted universe multiverse
#deb-src jaunty-backports main restricted universe multiverse
#clean
备注:
deb-i386 表示32 bit版本的deb软件
deb 表示64bit版本的deb软件
jaunty表示Ubuntu 9.04的代号
设置完成后,输入下面命令:
root@ms~: apt-mirror
这时系统会启动20个线程运行wget到 下面相应的
deb包。时间比较的长,该命令执行完成后,/var/spool/apt-mirror目录下就有了所有需
要的deb包和相应的配置文件。
由于我是从sohu的,所以实际的文件在:
/var/spool/apt-mirror/mirror/mirrors.sohu./ubuntu目录下。
这样,本地就有了所有Ubuntu Source服务器所需要的文件,然后开启相应的服务:
这里使用apache2作为Web服务器,默认根目录在/var//,所以可以在该目录下做
个,如下所示:
root@ms~: cd/var/
root@ms~: ln/var/spool/apt-mirror/mirror/mirrors.sohu./ubuntu-s
开启web服务:
root@ms~: apache2ctl start
打开浏览器输入下面即可看到和sohu mirror一样的页面:
同时也可以使用crontab进行每天的更新,修改配置文件:
root@ms~: cat/etc/cron.d/apt-mirror
#
# Regular cron jobs for the apt-mirror package
#
#0 4*** apt-mirror/usr/bin/apt-mirror>/var/spool/apt-mirror/var/cron.log
把命令前面的“#”去掉即可,这样系统会自动使用apt-mirror去和sohu服务器更新。
最后,我们所要做得就是在客户端的机器上修改更新源配置文件,将改成本地
mirror服务器的即可,如下所示:
root@ms~: cat/etc/apt/sources.list
deb jaunty main restricted universe multiverse
deb jaunty-security main restricted universe multiverse
deb jaunty-updates main restricted universe multiverse
deb jaunty-proposed main restricted universe multiverse
deb jaunty-backports main restricted universe multiverse
deb-src jaunty main restricted universe multiverse
deb-src jaunty-security main restricted universe multiverse
deb-src jaunty-updates main restricted universe multiverse
deb-src jaunty-proposed main restricted universe multiverse
deb-src jaunty-backports main restricted universe multiverse
执行“apt-get update”来重建本地索引,这样以后就会使用本地的Mirror服务器进行更新