Linux部署Apache 网站服务器(httpd服务)
一、项目导入:
某学院组建了校园网,建设了学院网站。现需要架设Web服务器来为学院网站安家,同时在网站上传和更新时,需要用到文件上传和下载,因此还要架设FTP服务器,为学院内部和互联网用户提供WWW、FTP等服务。本项目先实践配置与管理Apache服务器。
二、职业能力目标要求(即学习目标):
认识Apache重点
掌握Apache服务的安装和启动方法重点
掌握Apache服务的主配置文件重点
学会创建基于用户的个人网站难点
学会创建基于域名访问的虚拟主机难点
学会创建基于端口访问的虚拟主机难点
学会创建基于TLS加密的虚拟主机(443/TCP)难点
三、理论学习:
Apache(或httpd)是Internet上使用最多的Web服务器技术之一,使用的传输协议是http(Hypertext Transfer Protocol),超文本传输协议,这是一个基于超文本的协议,用于通过网络连接来发送和接受对象。http通过线路以明文形式发送,默认情况下使用80/TCP(也可以使用其他端口),此协议还有一个加密的版本,称为https,默认情况下使用端口443/TCP。同学们在学习服务配置之前,需要记住以下三个重要知识点:
- http -> 超文本传输协议 -> 80/TCP
- https -> 经TLS/SSL安全加密的超文本传输协议 -> 443/TCP
- 网站内容默认存放路径 -> /var/www/html
四、Apache服务搭建流程分析:
c/s架构
五、任务一:配置简单的默认的httpd服务
#子任务1——安装httpd服务
yum -y install httpd
#子任务2——启动httpd服务
systemctl restart httpd
systemctl enable httpd
#子任务3——配置防火墙
firewall-cmd --permanent --add-service=http
#子任务4——测试默认的httpd服务
客户端firefox http://server 或者 curl http://server
六、任务二:学习Apache主配置文件


子任务3——学习Directory标签
<Directory "/var/www/html">
AllowOverride None -> 设置.htaccess文件中的指令类型,None表示禁止使用.htaccess,该参数一般不改
Require all granted -> 设置权限,默认开启所有客户机访问权限
</Directory>
七、任务三:配置基于用户的个人网站
#子任务1——修改基于用户的httpd配置文件
vim /etc/httpd/conf.d/userdir.conf
-> UserDir enabled -> 开启
-> UserDir public_html -> 去#注释
#子任务2——新建一个用户(网站基于该用户)
useradd user0
#子任务3——做user0的网页文件
cd /home/user0/
mkdir public_html
echo "this is website for user0">>index.html
#子任务4——修改用户网页文件的访问权限
chmod o+x /home/user0
#子任务5——重启服务
systemctl restart httpd
#子任务6——客户端测试
firefox http://server/~user0
或者 curl http://server/~user0
# 请思考:为什么会出现访问错误的页面?尝试排错方法如下:
#子任务7——修改selinux权限:
getsebool -a|grep home
setsebool httpd_enable_homedirs
小插曲:实现个人主页密码认证
(一)生成密码
有时,我们在配置完成个人主页功能后,还希望能够对个人主页在登录时进行密码认证。
我们使用htpasswd命令生成密码,具体命令如下:
htpasswd -c /etc/httpd/passwd user0
如果我们是第一次生成密码,则需要按照如上要求加上-c参数,如果我们想要修改已经配置过的密码,则不需要加上面的-c参数,后面的/etc/httpd/passwd是生成密码文件的存放位置,最后的user0是指定用户。
(二)配置文件修改
在生成密码后,我们需要修改/etc/httpd/conf.d/userdir.conf的配置文件,打开该文件后,在模块中,大约在最后面,删除或注释掉原有的以下两行:
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
然后添加下面行:
<Directory /home/*/public_html>
AllowOverride AuthConfig
AuthName "My privately website"
AuthUserFile /etc/httpd/passwd
Authtype basic
Require user user0
</Directory>
然后保存退出并重启httpd
systemctl restart httpd
(三)效果验证
在我们完成上述配置后,重启服务,发现再次访问时会出现提示输入密码的框,此时表示我们已经配置成功!

八、任务四:配置基于域名访问的虚拟主机
#搭建的虚拟主机域名如下:
www.one.com
www.two.com
#子任务1——新建虚拟主机的网页文件
mkdir /www/
chmod o+x /www
cd /www
mkdir one two
cd one
echo "this is a web for virtual host www.one.com">>index.html
cd two
echo "this is a web for virtual host www.two.com">>index.html
#子任务2——配置虚拟主机的文件
cd /etc/httpd/conf.d
vim one.conf
-> <Directory /www/one>
Require all granted
</Directory>
<VirtualHost 192.168.100.10>
ServerName www.one.com
DocumentRoot /www/one/
</VirtualHost>
vim two.conf
<Directory /www/two>
Require all granted
</Directory>
<VirtualHost 192.168.100.11>
ServerName www.two.com
DocumentRoot /www/two/
</VirtualHost>
#子任务3——做域名解析文件
server/client -> vim /etc/hosts ->
192.168.100.10 www.one.com
192.168.100.11 www.two.com
#子任务4——重启服务
systemctl restart httpd
#子任务5——使用浏览器访问
http://www.one.com
http://www.two.com
# 请思考:为什么会出现访问错误的页面?尝试排错方法如下:
#子任务6——修改虚拟主机网页文件的selinux上下文类型:
semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
restorecon -RFv /www
九、任务五:配置基于端口访问的虚拟主机
#搭建的虚拟主机域名和端口如下:
www.z.com:8088
www.z.com:8089
#子任务1——新建虚拟主机的网页文件
mkdir /www/8088
echo "this is port 8088 for website www.z.com">>index.html
mkdir /www/8089
echo "this is port 8089 for website www.z.com">>index.html
#子任务2——配置虚拟主机的文件
cd /etc/httpd/conf.d
vim 8088.conf
-> <Directory /www/8088/>
Require all granted
</Directory>
<virtualHost 192.168.100.10:8088>
DocumentRoot /www/8088/
</virtualHost>
vim 8089.conf
<Directory /www/8089/>
Require all granted
</Directory>
<virtualHost 192.168.100.10:8089>
DocumentRoot /www/8089/
</virtualHost>
cd /etc/httpd/conf/
vim httpd.conf
-> 在Listen 80后添加以下两行:
Listen 8088
Listen 8089
#子任务3——重启服务
systemctl restart httpd
#子任务4——使用浏览器访问
http://192.168.100.10:8088
http://192.168.100.10:8089
# 请思考:
1)为什么会出现访问错误的页面?是因为selinux设置的问题吗?尝试排错方法如下:
#子任务5——将8088和8089加入httpd服务端口类型
semanage port -a 8088 -t http_port_t -p tcp
semanage port -a 8089 -t http_port_t -p tcp
semanage port -l | grep http
进入客户端浏览器测试
2)为什么还是会出现访问错误的页面?是因为防火墙设置的问题吗?尝试排错方法如下:
#子任务6——将8088和8089加入firewalld端口放行列表中
firewall-cmd --permanent --add-port=8088
firewall-cmd --permanent --add-port=8089
firewall-cmd --reload
firewall-cmd --list-all
进入客户端浏览器测试
十、任务五:配置基于TLS加密的虚拟主机(443/TCP)
#子任务1——安装TLS加密软件,网站内容不用明文传输
yum -y install mod_ssl
#子任务2——生成密钥
openssl genrsa >tlsweb.key
#子任务3——生成证书请求文件
openssl req -new -key tlsweb.key > tlsweb.csr
#子任务4——生成证书文件
openssl req -x509 -days 365 -key tlsweb.key -in tlsweb.csr >tlsweb.crt
#子任务5——修改ssl.conf配置文件
vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/tlsweb.crt
SSLCertificateKeyFile /etc/pki/tls/private/tlsweb.key
#子任务6——把证书文件拷贝到ssl.conf配置文件里的对应路径下面
cp tlsweb.crt /etc/pki/tls/certs/
#子任务7——把秘钥文件拷贝到ssl.conf配置文件里的对应路径下面
cp tlsweb.key /etc/pki/tls/private/
#子任务8——重启服务
systemctl restart httpd
#子任务9——使用浏览器访问
https://192.168.100.10
Linux部署Apache 网站服务器(httpd服务)的更多相关文章
- CentOS7 实战源码部署apache网站服务器
简介:实战演练apache网站服务器的搭建 Apache简介: Apache软件基金会的一个开源免费的网页服务器,也是目前世界上使用最广泛的一种web server , apache最出名的是它跨平台 ...
- Linux更改Apache网站目录出错:Document root must be a directory解决
Linux更改Apache网站目录出错:Document root must be a directory解决 修改 DocumentRoot <Directory " ...
- Linux环境中Apache也就是httpd服务的启动,查看版本等操作
本机是虚拟机,装的redhat Linux版本,默认是安装了httpd的 打开terminal 切换到root用户 cd到/etc/rc.d/init.d/目录,并列出该目录下的所有文件,看看是否有h ...
- CentOS7 实战源码部署nginx网站服务器
简介:实战演练nginx网站服务器的搭建 nginx 简介: Nginx是一款高性能的 HTTP 和反向代理服务器 Nginx的优点: 1.高并发量:根据官方给出的数据,能够支持高达 50,000 ...
- Linux部署apache
一.我们使用源码安装 官网:https://httpd.apache.org/文档:https://httpd.apache.org/docs/2.4/ 下载源码包 httpd-2.4.20.tar. ...
- CentOS7 实战部署tomcat网站服务器
简介:实战演练tomcat网站服务器的搭建 Tomcat:是一个开源免费的Web应用服务器,性能稳定,是目前比较流行的Web应用服务器 tomcat官网下载: https://tomcat.apa ...
- 记服务器 httpd 服务无法启动
httpd 服务无法重启 ,网上查到的资料都是端口号冲突 ,记录一下自己的解决办法 !!! 首先查看 服务状态 : service status httpd / systemctl status h ...
- 部署Apache网站访问统计-AWStats分析系统
环境根据:http://www.cnblogs.com/zzzhfo/p/5925786.html 1.安装AWStats软件包 将软件包解压到httpd服务器中的/usr/lcoal/目录下 [ro ...
- Linux下Apache网站目录读写权限的设置
网站目录文件权限的设置对网站的安全至关重要,下面简单介绍网站目录文件权限的基本设定. 我们假设http服务器运行的用户和用户组是www,网站用户为centos,网站根目录是/home/centos/w ...
- Linux部署Apache Solr5.5.2+Apache Zookeeper3.4.6
一.官网下载所需包. solr-5.5.2.tgz 下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/5.5.2/ zookee ...
随机推荐
- https://codeforces.com/gym/496137
AB略. C:想复杂了. 只要判断最大的那个能不能继续吃即可. D:我的做法是建完全图然后跑生成树. 实际上可以这么考虑:和a[1]不同的直接连,相同的就和上一轮和a[1]不同的店去连可以O(n). ...
- #扩展域并查集,线段树分治#CF576E Painting Edges
题目链接 题目翻译 给定一张 \(n\) 个点 \(m\) 条边的无向图. 一共有 \(k\) 种颜色,一开始,每条边都没有颜色. 定义合法状态为仅保留染成 \(k\) 种颜色中的任何一种颜色的边,图 ...
- #模拟#U137456 数字
题目 牛牛和他的小伙伴们高高兴兴的吃完了蛋糕,吃完蛋糕之后就到了牛牛和他的小伙伴们最喜欢的环节了--猜数 字, 这次是牛牛的生日,大家决定让牛牛来制定规则,由于牛牛的生日是4月7日,所以牛牛特别喜欢数 ...
- MCM箱模型建模方法及大气O3来源解析
OBM箱模型可用于模拟光化学污染的发生.演变过程,研究臭氧的生成机制和进行敏感性分析,探讨前体物的排放对光化学污染的影响.箱模型通常由化学机理.物理过程.初始条件.输入和输出模块构成,化学机理是其核心 ...
- 润乾报表如何从 mongodb 中取数
MongoDB 属于 NoSql 中的基于分布式文件存储的文档型数据库,是非关系数据库当中功能最丰富,最像关系数据库的.它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较 ...
- vue3 快速入门系列 —— 组件通信
vue3 快速入门系列 - 组件通信 组件通信在开发中非常重要,通信就是你给我一点东西,我给你一点东西. 本篇将分析 vue3 中组件间的通信方式. Tip:下文提到的绝大多数通信方式在 vue2 中 ...
- 力扣1083(MySQL)-销售分析Ⅲ(简单)
题目: Table: Product Table: Sales 编写一个SQL查询,报告2019年春季才售出的产品.即仅在2019-01-01至2019-03-31(含)之间出售的商品. 以 任意顺序 ...
- 力扣1773(java&python)-统计匹配检索规则的物品数量(简单)
题目: 给你一个数组 items ,其中 items[i] = [typei, colori, namei] ,描述第 i 件物品的类型.颜色以及名称. 另给你一条由两个字符串 ruleKey 和 r ...
- 力扣451(java)-根据字符出现频率排序(中等)
题目: 给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 .一个字符出现的 频率 是它出现在字符串中的次数. 返回 已排序的字符串 .如果有多个答案,返回其中任何一个. 示例 1: 输入 ...
- 面试官:在原生input上面使用v-model和组件上面使用有什么区别?
前言 还是上一篇面试官:来说说vue3是怎么处理内置的v-for.v-model等指令? 文章的那个粉丝,面试官接着问了他另外一个v-model的问题. 面试官:vue3的v-model都用过吧,来讲 ...