使用Apache搭建Web网站服务器

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

使用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,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
域名解析 弹性计算 安全
阿里云服务器安装宝塔面板、安装网站(新手图文教程)
本文详细介绍了从注册阿里云账号到使用宝塔面板安装网站的完整流程,包括阿里云账号的企业认证、服务器购买与安全规则配置、宝塔面板的安装及网站部署等步骤。通过图文并茂的方式,帮助用户轻松完成阿里云服务器的搭建和管理。适合新手快速上手,实现网站从零到有的全过程。如果觉得有用,别忘了点赞收藏!
1287 2
阿里云服务器安装宝塔面板、安装网站(新手图文教程)
|
2月前
|
缓存 PHP 数据库
WordPress网站服务器性能优化方法,站长必备。
最后,当你将这些方法组合起来并实施时,您将发现你的WordPress网站性能有了显著的提高。别忘了,这不是一次性的任务,要定期执行,保持你的车(网站)始终在轨道上飞驰。
113 21
|
2月前
|
前端开发 JavaScript 应用服务中间件
服务器如何设置可以提升网站打开速度?
首先关闭掉php版本中的输出详细错误信息功能;具体步骤为软件商店-对应php版本-设置-配置修改 找到“display_errors”参数,选择“关闭”保存即可。
80 1
|
3月前
|
自然语言处理 安全 开发工具
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
分享一个纯净无广、原版操作系统、开发人员工具、服务器等资源免费下载的网站
164 4
|
4月前
|
弹性计算 人工智能 API
基于ECS部署DeepSeek个人专属AI网站
本方案介绍了如何基于云服务器ECS集成百炼API和Open WebUI服务,一键部署体验DeepSeek个人专属AI网站。用户不仅可以以极低的成本,拥有个人专属的AI网站,进行稳定的AI对话,还能够切换DeepSeek-V3、DeepSeek-R1、Qwen-max等模型进行体验。同时Open WebUI还具备开源能力,支持定制工具的开发。您还可以创建其他子账号,将您的专属AI网站分享给他人使用。
|
3月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
|
3月前
|
域名解析 弹性计算 应用服务中间件
使用域名访问部署在ECS上的网站
本文为您介绍如何为网站配置域名并为域名配置HTTPS证书。
|
22天前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
3月前
|
关系型数据库 MySQL 数据库
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
TIS 是一款基于Web-UI的开源大数据集成工具,通过与人大金仓Kingbase的深度整合,提供高效、灵活的实时数据集成方案。它支持增量数据监听和实时写入,兼容MySQL、PostgreSQL和Oracle模式,无需编写复杂脚本,操作简单直观,特别适合非专业开发人员使用。TIS率先实现了Kingbase CDC连接器的整合,成为业界首个开箱即用的Kingbase CDC数据同步解决方案,助力企业数字化转型。
533 5
基于Flink CDC 开发,支持Web-UI的实时KingBase 连接器,三大模式无缝切换,效率翻倍!
|
3月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。

热门文章

最新文章

推荐镜像

更多