使用Apache搭建Web网站服务器

本文涉及的产品
RDSClaw,2核4GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介:

使用Apache搭建Web网站服务器

一:实验目标

 apache服务器常见概念

 apache服务器安装及相关配置文件

1:为公司内网搭建一个web服务器

2使用rpm搭建lamp 环境

3:修改网根目录及对应参数,设置访问权限

4,使用别名,引用网站根目录以外的路径。

5:打开软链接功能。 通过软件链接直接引用网站根目录以外的内容

6:当一个目录下没有默认首页时,访问http://192.168.1.63/phpmyadmin/禁止显示目录列表

7:通过用户认证的方式,对网站下/usr/local/phpmyadmin/目录进行保护。

8配置apache虚拟主机,实现在一台服务器上运行多个网站

 

二:实验环境

服务端:xuegod63.cn   IP:192.168.1.63

客户端:xuegod64.cn   IP:192.168.1.64

三:实验步骤

一:相关服务概述

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

WEB服务器也称为WWW(WORLD WIDE WEB,万维网)服务器,主要功能是提供网上信息浏览服务。

模式: B/S 模式,服务的端口为:80: http  443:https

  Apache中,其配置文件目录为“/etc/httpd/conf/httpd.conf”,这里面包括设置网站资源的存放目录及一些相关的配置。

 

二:服务安装及相关配置详解

1:安装httpd服务器

1.1:安装服务器端:httpd及测试工具

[root@xuegod63 ~]# yum install httpd -y

[root@xuegod63 ~]# yum install elinks  -y

[root@xuegod63 ~]# yum install httpd-devel -y

[root@xuegod63 Packages]# yum install elinks  -y

1.2启动服务

[root@xuegod63 ~]# service httpd restart

[root@xuegod63 ~]# chkconfig httpd on

1.3:查看端口

[root@xuegod63 ~]# netstat -anutp | grep 80

tcp        0      0 :::80            :::*            LISTEN      3854/httpd

 

2:服务相关配置文件

2.1:查看目录下相关文件作用

[root@xuegod63 httpd]# pwd

/etc/httpd

[root@xuegod63 httpd]# ls

conf  conf.d  logs  modules  run

注释:

Conf 是存放服务的主配置文件

conf.d 是存放apache的主页面信息

2.2:查看配置信息

[root@xuegod63 ~]#vim /etc/httpd/conf/httpd.conf

1)apache服务器的外部相关配置内容

ServerRoot "/etc/httpd"  #apache配置文件的根目录

Timeout 60  #超时时间,即连接服务端在60秒内没有任何操作,即自动断开

Listen 80   #监听的端口

ServerAdmin root@localhost  #设置管理员,e-mail 地址

ServerName www.example.com:80  #服务器主机名.

2)apache服务器的主配置内容

DocumentRoot "/var/www/html"   #网站页面根目录,存放文档的地方

<Directory "/var/www/html">  

Options Indexes FollowSymLinks #O目录浏览 #Followsymlinks:可以用连接要是想要禁止显示文件目录,可以直接在‘indexes’前加‘-’。

    AllowOverride None

    Order allow,deny #目录与访问的控制

    Allow from all 

</Directory>

注释:Allow,Deny都会读取,如果有冲突和未说明的时候按照Order选项逗号后面的那个为准。

谁写到后面,谁的优先级高。

3)别名功能,引用网站根目录以外的路径。

Alias /icons/ "/var/www/icons/" #别名和别名目录

<Directory "/var/www/icons">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

</Directory>

4)网站没有默认首页的时候显示的内容

</Directory> Options Indexes  #当一个目录没有默认首页时,允许显示此目录列表

<Directory />

    Options FollowSymLinks

    AllowOverride None

</Directory>

DirectoryIndex index.html index.html.var #指定默认首页

AddDefaultCharset UTF-8   #设置服务器的默认编码为: UTF-8

 

三:实战

实战1:

1:实验要求

首先取消apache默认欢迎页,改为“welcome to www.xuegod.cn”,使用rpm搭建lamp 环境,修改网根目录及对应参数,设置访问权限,允许1.0网段和百度来访问,不允许2.0网段访问。使用别名功能,引用网站根目录以外的路径。将/usr/local/phpmyadmin 目录通过虚拟目录功能添加到网站根目录。当访问http://192.168.1.63/phpmyadmin/ 时,就可以访问目录/usr/local/phpmyadmin中的内容。

2:实验步骤

1:为公司内网搭建一个web服务器  

1apache默认欢迎页如下图所示,其欢迎页的默认目录为“/etc/httpd/conf.d/welcome.conf

wKioL1j9bk7D5ubPAADKpoQWeE8798.png 

2取消apache默认欢迎页:它会显示目录,列表,图标

[root@xuegod63 ~]# vim /etc/httpd/conf.d/welcome.conf

#<LocationMatch "^/+$">   #把红色内容注释

#    Options -Indexes

#    ErrorDocument 403 /error/noindex.html

#</LocationMatch>

[root@xuegod63 ~]# service httpd restart

wKiom1j9blvD9Ql6AAAxt8VctnA462.png 

3重新创建首页并重启服务

[root@xuegod63 conf.d]# echo 'welcome to www.xuegod.cn!' > /var/www/html/index.html

[root@xuegod63 ~]# service httpd restart

试:

wKiom1j9bmfzy5i-AABH0W6Bpmw088.png 

 

 

2:使用rpm搭建lamp 环境

LAMP 环境是由多个数据包共同搭建完成的,LAMP = linux+apache+mysql数据库+php,搭建完成之后,最终会支持php

1:安装相应的软件包

[root@xuegod63 ~]# yum install httpd  mysql-server php php-mysql -y

[root@xuegod63 ~]# service mysqld start

[root@xuegod63 ~]# chkconfig mysqld on

2:编写php首页文档

[root@xuegod63 html]# cd  /var/www/html/

[root@xuegod63 html]# vim index.php

<?php

phpinfo();

?>

[root@xuegod63 html]# service httpd restart

3:测试apache是否支持php

wKioL1j9bneDmfhqAADYayCAkiQ923.png 

 

3:修改网页根目录及对应参数,设置访问权限

1):创建目录并拷贝数据

[root@xuegod63 html]# mkdir bbs

[root@xuegod63 html]# cp -r /boot/grub/ bbs/

[root@xuegod63 bbs]# cp /etc/passwd   /var/www/html/bbs/

 

2):修改Apache主配置文件,给其权限

[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf

改:#DocumentRoot /var/www/html

为:DocumentRoot /var/www/html/bbs

 

<Directory "/var/www/html/bbs">      

    Options  FollowSymLinks

    Order allow,deny

    #Allow from all

    allow from 192.168.1.0/24

    deny from 192.168.2.0/24

    allow from .baidu.com

</Directory>

#Allow,Deny都会读取,如果有冲突和未说明的时候按照Order选项逗号后面的那个为准。

谁写到后面,谁的优先级高。

 

3)重启测试

[root@xuegod63 conf]# service httpd restart

wKiom1j9boaARojkAABzDhGnUmI357.png 

4:使用别名功能,引用网站根目录以外的路径

在这里/phpmyadmin/ "/usr/local/phpmyadmin/ 引用别名功能,实现访问别名直接能够充分从网页根目录进行访问。所谓的别名功能指的就是跳板原理,将网站根目录与新创建的目录关联起来。当方位新目的之手,直接从新目录跳转到网站的根目录,从而访问到网站的根目录。

   创建别名目录,拷贝数据并创建网页首页面

[root@xuegod63 ~]# mkdir /usr/local/phpmyadmin

[root@xuegod63 ~]# cp -r /boot/grub/ /usr/local/phpmyadmin/

[root@xuegod63 ~]# echo "wecome to my test" > /usr/local/phpmyadmin/test.html

 

修改Apache服务器的主配置文件

[root@xuegod63 ~]# vim /etc/httpd/conf/httpd.conf

wKioL1j9bqSDDl05AAB8vEgx6Uw641.png 

注:Alias /phpmyadmin/ "/usr/local/phpmyadmin/"     #/phpmyadmin/ 可以随意起。比如改/phpmyadmin/ /php/  则访问链接: http://192.168.1.63/php

 

测试

[root@xuegod63 ~]# service httpd restart

wKioL1j9brXRadolAABadB_7y28944.png

wKiom1j9brbQdFV2AABdxofGPAc829.png

 

 

注释:这里做的时候即使不显示内容,也是正常的。

 

实战2

5:打开软链接功能。 通过软件链接直接引用网站根目录以外的内容

6,当一个目录下没有默认首页时,访问http://192.168.1.63/phpmyadmin/禁止显示目录列表

7:通过用户认证的方式,对网站下/usr/local/phpmyadmin/目录进行保护。

1:实验要求

当一个目录下没有默认首页时,访问http://192.168.1.63/phpmyadmin/禁止显示目录列表

修改配置文件。在打开软链接功能。 通过软件链接直接引用网站根目录以外的内容。通过用户认证的方式,对网站下/usr/local/phpmyadmin/目录进行保护。 设置/usr/local/phpmyadmin/目录,只能通过用户名密码方式访问。

 

2:实验步骤

1)禁止显示目录列表

[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf  # 修改红色标记内容

Alias /phpmyadmin/ "/usr/local/phpmyadmin/"

<Directory "/usr/local/phpmyadmin/">

    Options -Indexes FollowSymLinks   #在Indexes 前加-减号,此目录下没有默认首页时,禁止显示目录

    AllowOverride None

Order deny,allow

    Allow from all

</Directory>

测试

[root@xuegod63 ~]# service httpd restart

wKiom1j9bsXSJFuBAABF11kesgY621.png 

3)通过软件链接直接引用网站根目录以外的内容

[root@xuegod63 html]# mkdir /web2

[root@xuegod63 html]# echo "welcome to the test1" > /web2/b.html

[root@xuegod63 html]#  ln -s /web2   /var/www/html/web2 #ln创建软连接,s指原目标

[root@xuegod63 html]#  vim /etc/httpd/conf/httpd.conf

<Directory "/var/www/html/bbs">

    Options Indexes FollowSymLinks #默认开启

</Directory>

 

测试

[root@xuegod63 ~]# service httpd restart

wKioL1j9btHQtVt6AAA_Dn7zxmQ785.png 

3)通过用户认证的方式

方法一:

[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf   #在需要使用用户验证的目录的相关Directory段落添加以下红色标记内容:

 

Alias /phpmyadmin/ "/usr/local/phpmyadmin/"

<Directory "/usr/local/phpmyadmin/">

    Options Indexes FollowSymLinks

    AllowOverride None

    Order deny,allow

    Allow from all

    authtype basic

    authname "MySQL admin software......."

    authuserfile /etc/httpd/conf/passwd.secret

    #require user tom

    #require user tom bob

    require valid-user

</Directory>

 

参数说明:

authtype basic  # 1)authtype命令:指定认证类型为:basic。

authname "MySQL admin software......."   #请不要动我的奶酪

#  AuthName命令:指定认证区域名称。区域名称是在提示要求认证的对话框中显示给用户的。如

wKioL1j9buHibfx0AACF2y-31Cw991.png 

authuserfile /etc/httpd/conf/passwd.secret  #AuthUserFile命令:指定一个包含用户名和密码的文本文件,每行一对。

require命令:指定哪些用户才能被授权访问。如:

require user user1 user2(只有用户user1和user2可以访问)

require valid-user (在AuthUserFile指定的文件中任何用户都可以访问)

 

利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文

[root@xuegod63 phpmyadmin]# htpasswd -h   #查看参数

-c  Create a new file.

-m  Force MD5 encryption of the password.

[root@xuegod63 conf]# htpasswd -cm 存放用户名和密码的文件名 用户名

[root@xuegod63 conf]# htpasswd -cm /etc/httpd/conf/passwd.secret tom

New password: 123456

Re-type new password: 123456

Adding password for user tom

#第一个生成用户名和密码,需要创建文件,因此需要加-c参数

[root@xuegod63 conf]# htpasswd -m /etc/httpd/conf/passwd.secret bob

New password: 123456

Re-type new password: 123456

Adding password for user bob

 

测试:

[root@xuegod63 conf]# service httpd restart

http://192.168.1.63/phpmyadmin/

wKiom1j9bu-jRisTAAB814i5w6w886.png 

注释:这里记得把之前写的“禁止显示目录列表”的‘-’给去掉。

 

 

方法二:

#vim httpd.conf    #在需要使用用户验证的目录的相关Directory段落添加

Alias /phpmyadmin/ "/usr/local/phpmyadmin/"

<Directory "/usr/local/phpmyadmin/">

    Options Indexes FollowSymLinks

    AllowOverride None

    Order deny,allow

    Allow from all

    AllowOverride AuthConfig

 

</Directory>

# AllowOverride AuthConfig一行表示允许对/usr/local/phpmyadmin/目录下的文件进行用户认证。

 

在要保护的目录下创建一个存放进行用户认证信息的文件:

[root@xuegod63 conf]# vim /usr/local/phpmyadmin/.htaccess  #写入以下内容

authtype basic

authname "MySQL admin software by .htaccess"

authuserfile /etc/httpd/conf/passwd.secret

#require user tom

require valid-user

 

利用Apache附带的程序htpasswd,生成包含用户名和密码的文本文

[root@xuegod63 conf]# htpasswd -cm /etc/httpd/conf/passwd.secret tom

New password: 123456

Re-type new password: 123456

Adding password for user tom

 

[root@xuegod63 conf]# htpasswd -m /etc/httpd/conf/passwd.secret bob

New password: 123456

Re-type new password: 123456

Adding password for user bob

[root@xuegod63 conf]# cat /etc/httpd/conf/passwd.secret   #查看内容

tom:$apr1$WJicnaIz$ejqYMmcqukEMsAVEjLcKf.

bob:$apr1$S8pXfxJh$tletPNMKd33WZXqdkSLFy0


[root@xuegod63 conf]# service httpd restart

测试:

http://192.168.1.63/phpmyadmin/

wKiom1j9bvuj65UmAAB7N6X5aBA107.png 

 

8 ,配置apache虚拟主机,实现在一台服务器上运行多个网站

apache虚拟主机实现有三种方法:

1、通过不同的IP地址

2、通过不同的域名

3、通过不同的端口号

 

三种都需要把虚拟主机功能打开:

[root@xuegod63 html]# vim /etc/httpd/conf/httpd.conf  

改:#NameVirtualHost *:80

为:NameVirtualHost *:80

 

方法1:1、通过不同的IP地址,解析不同域名

1)给服务器增加IP(另一个域名解析出来的那个IP)

[root@xuegod63 ~]##ifconfig eth0:1 192.168.1.56 netmask 255.255.255.0

[root@xuegod63 ~]## mkdir  /var/www/html/bbs/

[root@xuegod63 ~]# echo "bbs.xuegod.cn"  > /var/www/html/bbs/index.html

[root@xuegod63 ~]# echo "www.xuegod.cn"  > /var/www/html/index.html

 

2)修改httpd.conf

#vim httpd.conf   在文件的最后,添加以下内容

<VirtualHost 192.168.1.63:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/

    ServerName dummy-host.example.com

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost 192.168.1.56:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/bbs/

    ServerName dummy-host.example.com

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

 

3)测试:

[root@xuegod63 conf]# service httpd restart

http://192.168.1.56/  bbs.xuegod.cn

http://192.168.1.63/  www.xuegod.cn

 

方法二:通过不同域名:

在域名管理后台,修改DNS配置,www.xuegod.com与bbs.xuegod.com解析成相同的IP。

 

1)修改httpd.conf

#vim httpd.conf

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/

    ServerName www.xuegod.cn

    ErrorLog logs/www.xuegod.cn-error_log

    CustomLog logs/www.xuegod.cn-access_log common

</VirtualHost>

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/bbs/

    ServerName bbs.xuegod.cn

    ErrorLog logs/bbs.xuegod.cn-error_log

    CustomLog logs/bbs.xuegod.cn-access_log common

</VirtualHost>

 

2)添加主机域名

[root@xuegod63 ~]# vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.63   xuegod63.cn

192.168.1.63   www.xuegod.cn

192.168.1.63   bbs.xuegod.cn

192.168.1.64   xuegod64.cn

 

3)测试:

[root@xuegod63 conf]# service httpd restart

[root@xuegod63 ~]# elinks www.xuegod.cn

[root@xuegod63 ~]# elinks bbs.xuegod.cn

 

wKiom1j9bxCxvrImAAA7oz_m2pE231.png

wKiom1j9bxCQbchyAAAmCklGN7E340.png

 

 

方法:基于端口配置虚拟主机:

[root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf   

改: Listen   80  
为:Listen   80  

    Listen   81  #  更改为你要添加的多个端口

 

1)再建立两个虚拟主机: 

   [root@xuegod63 conf]# vim /etc/httpd/conf/httpd.conf   #  在文件的最后添加

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/

    ServerName www.example.com

    ErrorLog logs/www.example.com-error_log

    CustomLog logs/www.example.com-access_log common

</VirtualHost>

<VirtualHost *:81>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/bbs/

    ServerName bbs.example.com

    ErrorLog logs/bbs.example.com-error_log

    CustomLog logs/bbs.example.com-access_log common

</VirtualHost>

 

2)

测试:

[root@xuegod63 conf]# service httpd restart

http://192.168.1.63/

http://192.168.1.63:81/










本文转自 于学康 51CTO博客,原文链接:http://blog.51cto.com/blxueyuan/1918749,如需转载请自行联系原作者

目录
相关文章
|
移动开发 数据挖掘 开发者
服务器发送事件(SSE)在现代Web开发中的关键作用
服务器发送事件(SSE)是HTML5标准协议,用于服务器主动向客户端推送实时数据,适合单向通信场景。相比WebSocket,SSE更简洁高效,基于HTTP协议,具备自动重连、事件驱动等特性。常见应用场景包括实时通知、新闻推送、数据分析等。通过Apipost等工具可轻松调试SSE,助力开发者构建高效实时Web应用。示例中,电商平台利用SSE实现秒杀活动通知,显著减少延迟并简化架构。掌握SSE技术,能大幅提升用户体验与开发效率。
|
Java 网络安全 Apache
SshClient应用指南:使用org.apache.sshd库在服务器中执行命令。
总结起来,Apache SSHD库是一个强大的工具,甚至可以用于创建你自己的SSH Server。当你需要在服务器中执行命令时,这无疑是非常有用的。希望这个指南能对你有所帮助,并祝你在使用Apache SSHD库中有一个愉快的旅程!
885 29
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
405 0
|
Web App开发 前端开发 JavaScript
Web开发者必收藏的10个实用网站,你还没收藏吗?
将这些网站收藏起来,定期访问,使它们成为您日常工作的一部分,助您在快速发展的 Web 开发领域保持领先。
517 2
Web开发者必收藏的10个实用网站,你还没收藏吗?
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
369 3
|
人工智能 搜索推荐 PHP
PHP在Web开发中的璀璨星辰:构建动态网站的幕后英雄###
【10月更文挑战第25天】 本文将带您穿越至PHP的宇宙,揭示其作为Web开发常青树的奥秘。通过生动实例与深入解析,展现PHP如何以简便、高效、灵活的姿态,赋能开发者打造动态交互式网站,同时不忘探讨其在新时代技术浪潮中面临的挑战与机遇,激发对技术创新与应用的无限思考。 ###
223 1
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
226 3
WK
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
577 0
|
6月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
563 4

推荐镜像

更多
下一篇
开通oss服务