使用Apache搭建Web网站服务器

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

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

目录
相关文章
|
10天前
|
弹性计算 运维 Ubuntu
使用阿里云服务器自动搭建WordPress网站流程,超简单by系统运维管理OOS
本教程介绍如何使用阿里云服务器(ECS)和系统运维管理OOS自动搭建WordPress网站,支持Ubuntu、CentOS及Alibaba Cloud Linux等操作系统。前提条件包括ECS实例处于运行中、有公网IP且安全组已开启80端口。安装步骤简单:进入ECS快速购买控制台选择预装WordPress,确认下单后通过管理控制台查看实例详情并开放安全组端口。最后,通过实例公网IP访问,出现WordPress登录页即表示安装成功。
|
2月前
|
安全 Linux 应用服务中间件
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
本文详细介绍了如何准备原料、搭建基础环境、进行安全防护、建设网站、管理证书以及开启BBR优化网络性能。主要内容包括获取健康云服务器、配置SSH登录、创建非root用户、启用密钥认证、安装Nginx、申请TLS证书、配置HTTPS自动跳转及优化网络性能等步骤。通过本文,读者可以掌握从零开始搭建个人网站的全过程。
55 2
从零开始启动、配置、保护你的云服务器并搭建一个简单的网站
|
1月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
2月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
63 3
|
2月前
|
安全 数据挖掘 网络安全
网站建站如何选择合适的服务器配置
建站初期应进行长期数据分析与预测,合理选择服务器配置。主要依据同时在线人数、CPU性能、内存大小及带宽类型,同时考虑安全防护,如选择带防火墙的高防服务器,确保网站稳定运行与良好用户体验。
60 0
|
3月前
|
域名解析 缓存 网络协议
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?
|
3月前
|
弹性计算 关系型数据库 MySQL
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
|
1月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
323 33
The Past, Present and Future of Apache Flink
|
3月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
913 13
Apache Flink 2.0-preview released
|
3月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
128 3

推荐镜像

更多