apache

Posted lyshark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache相关的知识,希望对你有一定的参考价值。

**********************************************************************************************************************
◆案例1◆ 源码安装Apache
**********************************************************************************************************************

**********************************************************
安装依赖
**********************************************************

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum -y install epel-release

yum install -y gcc openssl openssl-devel zlib zlib-devel pcre pcre-devel expat-devel libxml2-devel


**********************************************************
安装Apr -1.6.3
**********************************************************

wget http://www-eu.apache.org/dist//apr/apr-1.6.3.tar.gz

tar -xzvf apr-1.6.3.tar.gz

cd apr-1.6.3/

CC="gcc -m64" ./configure --prefix=/usr/local/apr

./configure --prefix=/usr/local/apr

make && make install

**********************************************************
安装Apr-util -1.6.1
**********************************************************

wget http://www-eu.apache.org/dist//apr/apr-util-1.6.1.tar.gz

tar -xzvf apr-util-1.6.1.tar.gz

cd apr-util-1.6.1/

./configure --prefix=/usr/local/apr-util \
--with-apr=/usr/local/apr

make && make install


**********************************************************
安装Apache -2.4.33
**********************************************************

wget http://www-eu.apache.org/dist//httpd/httpd-2.4.33.tar.gz

tar -xzvf httpd-2.4.33.tar.gz

cd httpd-2.4.33/

./configure --prefix=/usr/local/apache2 \
--enable-rewrite \
--enable-so \
--enable-headers \
--enable-expires \
--with-mpm=worker \
--enable-modules=most \
--enable-deflate \
--enable-ssl \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-pcre=/usr/local/pcre


make && make install

 

**********************************************************************************************************************
◆案例2◆ 打开网页实现身份验证 -- 用户名密码认证
**********************************************************************************************************************


1.编辑主配置文件

vim /usr/local/apache2/conf/httpd.conf


2.查找修改关键位置

定位特征:# It can be "All", "None", or any combi 偏移+3


查找AllowOverride none (约在235行)

修改为 AllowOverride all

 

3.在httpd配置文件目录 /usr/local/apache2/htdocs 下创建 .htaccess 并写入以下内容


vim /usr/local/apache2/htdocs/.htaccess

写入↓

authname "welcome to apache" #欢迎提示信息
authtype basic #认证类型
authuserfile /usr/local/apache2/htdocs/login.psd #认证文件存放位置
require valid-user #除认证用户其他用户不允许登陆

 

4.添加认证用户 -c 创建密码文件只能添加一个用户 –m 创建密码文件,是追加写入


添加<-c>认证用户,只能添加一个用户

/usr/local/apache2/bin/htpasswd -c /usr/local/apache2/htdocs/login.psd LyShark

添加<-m>认证用户LyShark,是追加写入,可以创建多个用户

/usr/local/apache2/bin/htpasswd -m /usr/local/apache2/htdocs/login.psd LyShark


**********************************************************************************************************************
◆案例3◆ 实现身份验证 – 客户端的验证
**********************************************************************************************************************

**********************************************************
允许个别IP地址访问网页,拒绝所有
**********************************************************

1.修改主配置文件

vim /usr/local/apache2/conf/httpd.conf


定位特征:# AllowOverride FileInfo AuthCon 偏移+3


写入(约在236行) 在<Directory>嵌套里写入以下下内容

<requireall>
require all granted
require ip 192.168.1.10 #允许访问的IP地址
</requireall>

#Require all granted #此行必须注释掉


**********************************************************
拒绝个别IP地址访问,允许所有
**********************************************************

1.修改主配置文件

vim /usr/local/apache2/conf/httpd.conf


定位特征:# AllowOverride FileInfo AuthCon 偏移+3


写入(大约在236行) 在<Directory>嵌套里写以下内容


<requireall>
require all granted
require ip 192.168.22.147 #拒绝访问的IP地址
</requireall>

#Require all granted #此行必须注释掉

 

**********************************************************************************************************************
◆案例4◆ 目录别名 - 减小目录深度
**********************************************************************************************************************

1.打开主配置文件


vim /usr/local/apache2/conf/httpd.conf


2.在配置文件行尾,追加写入

alias "/lyshark" "/user/local/apache2/htdocs/a/b/c/d"


含义:将访问路径由 http://IP地址/a/b/c/d 简化为 http://IP地址/lyshark


**********************************************************************************************************************
◆案例5◆ 配置虚拟主机(重点)
**********************************************************************************************************************

****************************************************************************
※基于IP的虚拟主机※ >>>实现一台服务器多个IP地址,搭建多个网站<<<
****************************************************************************

1.在eth0网卡添加一个子接口 eth0:0

ifconfig eth0:0 192.168.22.148 netmask 255.255.255.0


2.编辑主配置文件,开启虚拟主机选项(取消注释)


vim /usr/local/apache2/conf/httpd.conf

定位特征:# Local access to the Apache HTTP S 偏移-2

搜索关键字 Virtual hosts(约在463行)

Include conf/extra/httpd-vhosts.conf #取消此行注释


3.修改主配置文件添加虚拟主机


vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

 

<VirtualHost 192.168.22.147:80>
DocumentRoot "/usr/local/apache2/htdocs/vhost1"
ServerName dummy-host.example.com
</VirtualHost>

<VirtualHost 192.168.22.148:80>
DocumentRoot "/usr/local/apache2/htdocs/vhost2"
ServerName dummy-host2.example.com
</VirtualHost>

 

4.分别创建vhost1 和vhost2目录,并放入两个index.html文件

mkdir /usr/local/apache2/htdocs/vhost1
mkdir /usr/local/apache2/htdocs/vhost2

echo "vhost1 test page">/usr/local/apache2/htdocs/vhost1/index.html
echo "vhost2 test page">/usr/local/apache2/htdocs/vhost2/index.html


5.重启服务,测试效果

/usr/local/apache2/bin/apachectl restart


****************************************************************************
※基于端口的虚拟主机※ >>>实现一台服务器多个端口,搭建多个网站<<<
****************************************************************************


1.编辑主配置文件,开启虚拟主机选项(取消注释)

vim /usr/local/apache2/conf/httpd.conf


定位特征:# Local access to the Apache HTTP S 偏移-2

搜索关键字Virtual hosts(大约在463行)


Include conf/extra/httpd-vhosts.conf #取消此行注释

 

2.修改主配置文件添加虚拟主机

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf


<VirtualHost 192.168.22.147:80>
DocumentRoot "/usr/local/apache2/htdocs/vhost1"
ServerName dummy-host.example.com
</VirtualHost>

<VirtualHost 192.168.22.147:8080>
DocumentRoot "/usr/local/apache2/htdocs/vhost2"
ServerName dummy-host2.example.com
</VirtualHost>


3.分别创建vhost1 和vhost2目录,并放入两个index.html文件

mkdir /usr/local/apache2/htdocs/vhost1
mkdir /usr/local/apache2/htdocs/vhost2

echo "vhost1 test page">/usr/local/apache2/htdocs/vhost1/index.html
echo "vhost2 test page">/usr/local/apache2/htdocs/vhost2/index.html


4.重启服务,测试

/usr/local/apache2/bin/apachectl restart

 

****************************************************************************
※基于域名的虚拟主机※ >>>实现一台服务器多个域名,搭建多个网站<<<
****************************************************************************

1.搭建dns服务器,实现正向解析,将解析地址指向同一个ip

 

2.打开主配置文件开启虚拟主机

vim /usr/local/apache2/conf/httpd.conf


定位特征:# Local access to the Apache HTTP S 偏移-2

搜索关键字:Virtual hosts (大约在463行)

Include conf/extra/httpd-vhosts.conf #取消注释开启功能


3.进入虚拟主机配置文件

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf


<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs/vhost1"
ServerName www.wang.com #wang.com解析到vhost1目录录下
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs/vhost2"
ServerName www.rui.com #rui.com解析到vhost2目录下
</VirtualHost>


4.在网页保存位置创建两个相应目录,并放入网站index.html


mkdir /usr/local/apache2/htdocs/vhost1
mkdir /usr/local/apache2/htdocs/vhost2

echo "vhost1 test page">/usr/local/apache2/htdocs/vhost1/index.html #创建测试页
echo "vhost2 test page">/usr/local/apache2/htdocs/vhost2/index.html

 

5.重启服务生效

/usr/local/apache2/bin/apachectl restart

 

**********************************************************************************************************************
◆案例6◆ 开启个人主页功能
**********************************************************************************************************************

----------------------------------------------------------------------------
实验要求:给予每个用户都有一个单独的网页空间
----------------------------------------------------------------------------

1.开启相应的模块

vim /usr/local/apache2/conf/httpd.conf

LoadModule userdir_module modules/mod_userdir.so #取消注释(大约在146行)


定位特征:# User home directories

Include conf/extra/httpd-userdir.conf #取消注释(大约在458行)


2.进入配置文件,不做修改退出

vim /usr/local/apache2/conf/extra/httpd-userdir.conf


3.创建用户并设置密码

useradd lyshark

passwd lyshark


4.进入用户家目录,创建相应文件,并赋予权限

mkdir -p /home/lyshark/public_html #在用户家目录创建public_html

echo “这是lyshark 的网页空间” >>/home/lyshark/public_html/index.html #创建测试页

chmod 755 /home/lyshark/public_html/index.html #赋予执行权限

chmod 755 /home/lyshark #赋予执行权限


5.通过浏览器访问测试

格式为:http://192.168.22.147/~lyshark


**********************************************************************************************************************
◆案例7◆ 启用地址跳转(重点)
**********************************************************************************************************************
----------------------------------------------------------------------------
实验要求:实现域名跳转www.xdl.com跳转到www.baidu.com
----------------------------------------------------------------------------
1.搭建dns服务器,实现正向解析,将解析地址指向同一个ip


2.编辑主配置文件开启相应功能(取消注释)


vim /usr/local/apache2/conf/httpd.conf

LoadModule vhost_alias_module modules/mod_vhost_alias.so #开启虚拟主机(约在141行)
LoadModule rewrite_module modules/mod_rewrite.so #开启网页重写(约在148行)
Include conf/extra/httpd-vhosts.conf #加载模块(约在464行)


3.改写虚拟主机配置文件

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

写入:

<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs/xdl"
ServerName www.xdl.com
</VirtualHost>

<Directory "/usr/local/apache2/htdocs/xdl">
Options indexes followsymlinks
Allowoverride all
Require all granted
</Directory>

<VirtualHost *:80>
DocumentRoot "/usr/local/apache2/htdocs/baidu"
ServerName www.baidu.com
</VirtualHost>

 

4.分别创建网页文件存储位置,和测试页

mkdir -p /usr/local/apache2/htdocs/xdl
mkdir -p /usr/local/apache2/htdocs/baidu

echo “XDL com” > /usr/local/apache2/htdocs/xdl/index.html
echo “BAIDU com” > /usr/local/apache2/htdocs/baidu/index.html


5.在要跳转的网页目录下创建. htaccess文件

写入

rewriteengine on #开启跳转功能
rewritecond %{HTTP_HOST} www.xdl.com #将www.xdl.com
rewriterule .* http://www.baidu.com #跳转到www.baidu.com


**********************************************************************************************************************
◆案例8◆ 启用HTTPS生成SSL证书
**********************************************************************************************************************


1.建立服务器私钥,过程中需要输入密码

openssl genrsa -des3 -out server.key 1024

----------------------------------------------------------------------------
注释:
Genrsa –des3 #加密类型
-out server.key #输出文件
-1024 #加密长度
----------------------------------------------------------------------------


2.建立证书,生成的csr文件交给CA签名后形成服务端自己的证书

openssl req -new -key server.key -out server.csr

----------------------------------------------------------------------------
注释:
req -new #新建证书
-key server.key #私钥文件
-out server.csr #输出文件

注:依次输入:国家 省 市 组织 机构 全称 EMAIL 是否要改变密码 是否改名称
----------------------------------------------------------------------------


3.转化成证书,这一步由证书CA机构来做的,这里只是实验.

openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out servernew.crt

 

4.配置服务器让其支持https

cp servernew.crt /usr/local/apache2/conf/server.crt #将证书复制到conf目录下
cp server.key /usr/local/apache2/conf/server.key #私钥也要放入conf目录下


vim /usr/local/apache2/conf/httpd.conf #打开http主配置文件


LoadModule ssl_module modules/mod_ssl.so #开启ssl功能(大约在129行)
Include conf/extra/httpd-ssl.conf #开启ssl模板,搜索SSLRandomSeed(大约在481行)


vim /usr/local/apache2/conf/extra/httpd-ssl.conf #打开ssl配置文件


定位特征码:# to use and second the expiring
搜索SSLSessionCache #将缓存设置注释掉(约在76行)

注释掉:
SSLSessionCache "dbm:/usr/local/apache2/logs/ssl_scache"
SSLSessionCache "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300


5.重启服务,输入密码

/usr/local/apache2/bin/apachectl restart

 














































































































































































以上是关于apache的主要内容,如果未能解决你的问题,请参考以下文章

apache

apache

LAMP源码安装

Dubbo集群-负载均衡

apache

Web基础