Linux下搭建Apache服务器(完整版)

Linux下搭建Apache服务器(完整版)

什么是Apache?

Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似

Apache主要特点

1、开放源代码、跨平台应用

2、支持多种网页编程语言

3、模块化设计 、运行稳定、良好的安全性

Apache软件版本

1.X

 1、目前最高版本是1.3,运行稳定

 2、向下兼容性较好,但缺乏一些较新的功能

2.X

 1、目前主要包括2.0和2.2两个版本

 2、具有更多的功能特性

 3、与1.X相比,配置管理风格存在较大差异

Apache编译安装的优点

1、具有较大的自由度,功能可定制

2、可及时获得最新的软件版本

3、普遍适用于大多数Linux版本,便于移植使用

 

一:实验要求

1:学会编译安装httpd服务器

2:熟悉httpd服务的部署过程及常见配置

3:学会构建AWStats日志分析系统

4:httpd服务的访问控制

客户机的地址限制

用户授权限制

5:构建虚拟WEB主机

基于域名的虚拟主机

基于IP地址、端口的虚拟主机

 

二:实验环境

1:需要的软件包

apr-1.5.2.tar.gz

apr-util-1.5.4.tar.gz

httpd-2.4.25.tar.gz

2:搭建服务器的环境

RHEL6.5版本

IP地址:192.168.1.63 255.255.255.0

配置好yum仓库

 

三:实验代码

第一块:搭建apache服务器

 

主要目录和文件:

服务目录:/usr/local/httpd/

主配置文件:/usr/local/httpd/conf/httpd.conf

网页目录:/usr/local/httpd/htdocs/

服务脚本:/usr/local/httpd/bin/apachectl

执行程序:/usr/local/httpd/bin/httpd

访问日志: /usr/local/httpd/log/access_log

错误日志: /usr/local/httpd/log/error_log

 

第1步:卸载httpd软件及相关软件包

[[email protected] ~]# rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps

注释:--nodeps是强制接触依赖关系

 

第2步:检查手工编译需要的4中软件包是否安装

[[email protected] ~]# rpm -q gcc

gcc-4.4.7-4.el6.x86_64

[[email protected] ~]# rpm -q gcc-c++

gcc-c++-4.4.7-4.el6.x86_64

[[email protected] ~]# rpm -q make

make-3.81-20.el6.x86_64

[[email protected] ~]# yum install pcre-devel -y

 

第3步:解压软件包

[[email protected] ~]# tar zxvf httpd-2.4.25.tar.gz -C /opt/

[[email protected] ~]# tar -zxvf apr-1.5.2.tar.gz -C /opt/

[[email protected] ~]# tar -zxvf apr-util-1.5.4.tar.gz -C /opt/

[[email protected] opt]# cp -r apr-1.5.2/ httpd-2.4.25/srclib/apr

[[email protected] opt]# cp -r apr-util-1.5.4/ httpd-2.4.25/srclib/apr-util

注释:解压后复制到httpd的srclib解压目录中(不带版本号)

 

第4步:源码编译安装Apache

[[email protected] ~]# cd /opt/httpd-2.4.25/

[[email protected] httpd-2.4.25]# ./configure \ #源码

--prefix=/usr/local/apache \

--enable-so \

--enable-rewrite \

--enable-mods-shared=most \

--with-mpm=worker \

--disable-cgid \

--disable-cgi

[[email protected] httpd-2.4.25]# echo $?

0

[[email protected] httpd-2.4.25]# make -j 4 #编译,将编译程序变为可执行程序

[[email protected] httpd-2.4.25]# make install #安装

参数解释:

--prefix=   //来指定安装路径

--enable-so  //该参数表示支持用mod_so模块提供的功能,用LoadModule在httpd.conf文件或包含的conf文件中动态加载某个模块。让 Apache 可以支持DSO模式

--enable-rewrite  //支持 URL 重写

--enable-mods-shared=most  //选项:告诉编译器将所有标准模块都动态编译为DSO模块。

--with-mpm=worker // 让apache以worker方式运行

--with-mpm=worker   //该参数是配置apache将以何种模式编译的。Apache网站文档指出不同操作系统下的不同的默认模式.

--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI脚本

--disable-cgi //禁止编译 CGI 版本的 PHP

 

第5步:命令链接到PATH变量并且管理service

[[email protected] httpd-2.4.25]# ls /usr/local/apache/bin/apachectl #检查apachectl命令

/usr/local/apache/bin/apachectl

[[email protected] httpd-2.4.25]# echo $PATH #查看PATH变量

/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

注释:Linux系统中所有的命令都是放在PATH变量中的,可以放在/usr/local//sbin或者/usr/local//bin下。

 

[[email protected] httpd-2.4.25]# ln -s /usr/local/apache/bin/* /usr/local/bin/

[[email protected] httpd-2.4.25]# ls -l /usr/local/bin/apachectl  /usr/local/bin/httpd

lrwxrwxrwx 1 root root 31 3月   9 17:32 /usr/local/bin/apachectl -> /usr/local/apache/bin/apachectl

lrwxrwxrwx 1 root root 27 3月   9 17:32 /usr/local/bin/httpd -> /usr/local/apache/bin/httpd

注释:优化路径,将/usr/local/apache/bin/下的所有命令内容链接到PATH变量中的路径下。

只有将命令链接到PATH变量的路径中,命令才可以被使用。

 

[[email protected] httpd-2.4.25]# grep -v "#" /usr/local/apache/bin/apachectl  > /etc/init.d/httpd

[[email protected] httpd-2.4.25]# vim /etc/init.d/httpd

#!/bin/sh

# chkconfig: 2345 85 15

# description: Apache is a World Wide Web server.

[[email protected] httpd-2.4.25]# chmod  +x  /etc/init.d/httpd  

[[email protected] httpd-2.4.25]# chkconfig --add httpd

[[email protected] httpd-2.4.25]# chkconfig --list httpd

httpd          0:关闭1:关闭2:关闭3:关闭4:关闭5:关闭6:关闭

注释:使程序可以使用service 管理,"service管理的命令都在/etc/init.d/这个目录下的"。如果是rpm命令安装的软件包就不需要使用service命令管理,可以直接执行service命令,但是手工源码编译的软件包,程序就不可以直接执行service命令。

 

第6步:将配置文件链接到/etc下

[[email protected] httpd-2.4.25]# ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf

[[email protected] httpd-2.4.25]# vim /etc/httpd.conf

ServerName www.example.com:80

[[email protected] httpd-2.4.25]# service httpd start #启动服务没有效果

[[email protected] httpd-2.4.25]# netstat -anutp | grep http #监听http服务

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

 

第7步:物理机验证http服务

[[email protected] httpd-2.4.25]# service iptables stop #关闭防火墙

[[email protected] httpd-2.4.25]# cd /usr/local/apache/ #

[[email protected] apache]# cat htdocs/index.html

<html><body><h1>It works!</h1></body></html>

注释:在/usr/local/apache/htdocs/下存放着apache服务自带的index。Html网页,用于验证,次服务是否启动成功,在此目录下,可以创建更多的网页文件。

 

[[email protected] htdocs]# vim a.html  创建一个新的网页

<html>

<body>

<h1>This is my first homepage!!!!------mobanche !</h1>

<h2>--------Welcome my homepage----------</h2>

</body>

</html>

 

 

第二块:Httpd服务访问控制

作用:

控制对网站资源的访问

为特定的网站目录添加访问授权

常用访问控制方式:

客户机地址限制

用户授权限制

 

 

第1步:共享虚拟目录

[[email protected] ~]# vim /etc/httpd.conf

Include conf.d/*.conf  #在主配置文件末尾增加。

注释:httpd.conf是apache服务器的主配置文件,由于内容过多,不易查看,因此初见一个子主配置文件,当主配置文件读完之后就开始读子主配置文件,所以直接在子配置文件中修改配置文件。

 

[[email protected] ~]# cd /usr/local/apache/ #切换至服务目录

[[email protected] apache]# mkdir conf.d #创建子主配置文件目录

[[email protected] apache]# cd conf.d/

[[email protected] conf.d]# vim vdir.conf #创建子主配置文件

Alias /doc/ "/usr/share/doc/"  #定义虚拟目录doc,物理共享路径在/usr/share/doc/

<Directory "/usr/share/doc">  #定义这个目录的权限如下内容

Options Indexes MultiViews FollowSymLinks  #固定模式

AllowOverride None  #固定的不允许重写

Order allow,deny   #先允许,后拒绝

Allow from all  #允许从任何客户机访问

Require all granted  #对这个目录给予授权,这是6.0手动编译安装的apache时,定义被访问目录的权限

</Directory>

[[email protected] conf.d]# service httpd restart

 

 

第2步:共享目录授权访问

[[email protected] conf.d]# vim vdir.conf #修改子主配置文件

Alias /man/ "/usr/share/man/" #共享出去的目录和共享出去的别名

<Directory "/usr/share/man/">

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

AuthName "**********welcome*********"  #定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示

AuthType Basic  #设置认证的类型,basic为基本的认证

AuthUserFile /usr/local/apache/user  #设置用于保存用户账号、密码的认证文件

路径(htpasswd)

require valid-user  #要求只有认证文件中的合法用户才能访问。valid-user表示所有合法用户#Require all granted  

</Directory>

 

[[email protected] conf.d]# htpasswd -c /usr/local/apache/user test  #创建用户认证的数据库

New password: 123456

Re-type new password:123456

Adding password for user test

注意:htpasswd命令指的是创建用户认证的数据库中的用户名称和密码,‘-c’指的是创建用户认证的数据库的路径。第一次创建需要加‘-c’,第二次以后就不需要了。

 

[[email protected] conf.d]# htpasswd /usr/local/apache/user jack

New password: 456789

Re-type new password:456789

Adding password for user jack

[[email protected] conf.d]# cat /usr/local/apache/user

test:$apr1$KQuygE7p$H7qBAPM5Z2V0SXrWfTFlo0

jack:$apr1$spCSLlRw$WYGcMNUbYqXUQZNkoMXcm1

 

[[email protected] conf.d]# service httpd restart

 

 

第三块:构建虚拟WEB主机

虚拟Web主机

在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机

httpd支持的虚拟主机类型

1、基于域名的虚拟主机

2、基于IP地址的虚拟主机

3、基于端口的虚拟主机

 

第1步:基于ip的虚拟主机

需求:

1:构建2个虚拟Web站点:

    www.benet.com,IP地址为 192.168.1.36

     www.accp.com,IP地址为 192.168.1.63

2:在浏览器中访问这两个域名时,分别显示不同的内容

分析:在虚拟机中添加网卡,给定网桥模式,修改添加网卡信息,并且将mack地址修改。

 

[[email protected] conf.d]# vim vhost.conf

<VirtualHost 192.168.1.63:80> #定义虚拟主机,给定IP地址

    ServerAdmin [email protected] #定义此虚拟主机的IP地址

    DocumentRoot /opt/accp/ #定义虚拟主机的归属目录

    ServerName www.accp.com #定义域名

    ErrorLog logs/accp.com-error_log #错误日志

    CustomLog logs/accp.com-access_log common

</VirtualHost>

<Directory "/opt/accp"> #定义虚拟主机的目录权限

    Options Indexes MultiViews FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    Require all granted

</Directory>

 

<VirtualHost 192.168.1.36:80>

    ServerAdmin [email protected]

    DocumentRoot /opt/benet/

    ServerName www.benet.com

    ErrorLog logs/benet.com-error_log

    CustomLog logs/benet.com-access_log common

</VirtualHost>

<Directory "/opt/benet">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    Require all granted

</Directory>

[[email protected] conf.d]# mkdir /opt/accp #创建虚拟主机的文件夹目录

[[email protected] conf.d]# mkdir /opt/benet

[[email protected] conf.d]# echo "<h1>welcome accp<h1>" > /opt/accp/index.html

[[email protected] conf.d]# echo "<h1>welcome benet<h1>" > /opt/benet/index.html #给定虚拟主机输入一些信息

[[email protected] conf.d]# service httpd restart

[[email protected] conf.d]# service iptables stop

 

 

 

第2步:基于端口地址的虚拟主机

 

[[email protected] conf.d]# vim vhost.conf

Listen 192.168.1.63:8080

<VirtualHost 192.168.1.63:8080>

    ServerAdmin [email protected]

    DocumentRoot /opt/accp/

    ServerName www.accp.com

    ErrorLog logs/accp.com-error_log

    CustomLog logs/accp.com-access_log common

</VirtualHost>

<Directory "/opt/accp">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    Require all granted

</Directory>

 

<VirtualHost 192.168.1.63:80>

    ServerAdmin [email protected]

    DocumentRoot /opt/benet/

    ServerName www.benet.com

    ErrorLog logs/benet.com-error_log

    CustomLog logs/benet.com-access_log common

</VirtualHost>

<Directory "/opt/benet">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    Require all granted

</Directory>

[[email protected] conf.d]# service httpd restart

 

 

第3步:基于域名的虚拟主机

 

[[email protected] conf.d]# vim vhost.conf

Listen 192.168.1.63:8080

<VirtualHost 192.168.1.63:8080>

    ServerAdmin [email protected]

    DocumentRoot /opt/accp/

    ServerName www.accp.com

    ErrorLog logs/accp.com-error_log

    CustomLog logs/accp.com-access_log common

</VirtualHost>

<Directory "/opt/accp">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    Require all granted

</Directory>

 

<VirtualHost 192.168.1.63:80>

    ServerAdmin [email protected]

    DocumentRoot /opt/benet/

    ServerName www.benet.com

    ErrorLog logs/benet.com-error_log

    CustomLog logs/benet.com-access_log common

</VirtualHost>

<Directory "/opt/benet">

    Options Indexes MultiViews FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    Require all granted

</Directory>

 

注释:hosts文件在C:\Windows\System32\drivers\etc下,hosts文件中添加以下内容,需要将此文件拖出到桌面修改,修改完之后再拖回去。

192.168.1.63 www.benet.com

192.168.1.63 www.accp.com

 

 

时间: 2024-10-18 18:23:58

Linux下搭建Apache服务器(完整版)的相关文章

Linux下搭建DHCP服务器

一.DHCP所需软件包dhcp-common-4.1.1-34.Pl.el6.centos.x86_64dhcp-4.1.1-34.pl.el6.centon.x86_64二.编辑主配置文件 vi/etc/dhcp/dhcpd.conf ddns-update-style interim; ignore client-updates; shared-network ifs {        option domain-name     "ifs.com";        option 

在mac下搭建Apache服务器

Apache作为最流行的Web服务器端软件之一,它的优点与地位不言而喻.下面介绍下在mac下搭建Apache服务器的步骤: (1)"前往" –>"个人"" (2)在你的个人目录下新建一个文件夹,改名为"Sites"(改完后可见到文件夹中有个指南针的图标).注意要放在个人用户的文件夹下,因为它和桌面.文稿等文件夹一样是你私人的文件夹,这个文件夹用来专门给外部网络访问的. (3)打开终端,切换到apache2的目录,再输入ls可以看到

Linux下搭建VPN服务器(CentOS_6_x86+VPS+Shaowsocks)

#Linux下搭建VPN服务器(CentOS_6_x86+VPS+Shaowsocks)前面所搭建Linux下搭建VPN服务器(CentOS_5.9_x86_64.PPTP),因延迟过高,无法满足业务需求,因此公司决定采用CentOS_56_x86+VPS+Shaowsocks方案 公司供给翻译的使用VPN,正常访问境外的网站和观看视频,eg:欧盟经济体新闻发布会下面所介绍的服务器是香港服务器[必须是境外的服务器,或者国内能访问国外网站服务器] 搬瓦工bandwagonhost简单而且性能非常不

Linux下搭建DNS服务器

一.修改Linux主机名 1.hostname 主机名 [[email protected] named]# hostname ifs.com 2.vi /etc/hosts [[email protected] named]# vi /etc/hosts 127.0.0.1 ns.ifs.com ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 ~ 3.vim /etc/sysconfi

linux下搭建samba服务器

服务器IP:192.168.4.5 1.安装samba服务软件包 [[email protected] 桌面]# yum -y install samba [[email protected] 桌面]# rpm -q samba samba-3.6.9-164.el6.x86_64 [[email protected] 桌面]# rpm -q samba-client 2.修改配置文件smb.conf 对配置文件做备份 [[email protected] 桌面]# cp /etc/samba/

linux下搭建SVN服务器

最近搞了一台云服务器,尝试部署一些服务器相关的东西,作为开发用服务器,首先考虑搭建的是SVN服务器.记录一下搭建的过程,方便以后查看. 一.安装svn软件,有些云服务器会有安装svn服务器,有些没有. # yum install -y subversion                        //在线安装svn # svnserve --version                                  //检查svn版本 二.创建svn版本库 1.创建一个项目的版本目录

Ubuntu下搭建apache服务器

本文遵守CC-BY. 前言: 其实在Ubuntu下搭建apache服务器异常简单,下面开始正文. 一.下载安装 其实这里有两种办法, 1.从官网下载源码到本地编译: 2.利用Ubuntn自带的apt-get: 其实两种方法我都用过,并且通过了,不过你没有什么高级的定制话需求的话,非常建议使用第二种方法. 1. 编译源码在官方网站上有详细的步骤,只要跟着他走就可以了 官方网站(这个里面的Compiling and Installing部分) 2. 下载安装 sudo apt-get install

Linux下搭建VPN服务器(CentOS、pptp)

本文介绍在安装CentOS操作系统的Xen VPS上,如何搭建PPTP VPN服务.包括PPTP的安装.配置,以及相应的iptables规则.本文暂时不涉及PPTP流量控制的部分,等抽空学明白了FreeRADIUS,再来写续篇.2011年7月20日更新:在安全建议这一部分,增加了使用不同的IP地址,分别提供VPN服务和Web等其他常规服务,以及使用不同IP地址时如何书写iptables规则的内容. 写在前面 在Godaddy一美元COM域名的怂恿下,这几天先是拿到了这个gnailuy.com,然

Linux下搭建VPN服务器(CentOS、pptp)转

先说我搭建过程中出现的问题吧: 按照 教程搭建好之后出现了619错误,查看日志:/var/log/messages: Nov 20 09:46:20 localhost pptpd[7498]: GRE: read(fd=6,buffer=8059680,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check