配置服务文件参数

  • 服务目录 /etc/httpd
  • 配置文件 /etc/httpd/conf/httpd.conf
  • 网站数据目录 /var/www/html
  • 访问目录 /var/log/httpd/access_log
  • 错误日志 /var/log/httpd/access_log

参数

  • ServerRoot 服务目录
  • ServerAdmin 管理员邮箱
  • User 运行服务的用户
  • Group 运行服务的用户组
  • ServerName 网站服务器的域名
  • DocumentRoot 网站数据目录
  • Listen 监听的IP地址与端口号
  • DirectoryIndex 默认的索引页面
  • ErrorLog 访问日志文件
  • CustomLog 访问日志文件
  • Timeout 网页超时时间,默认为300秒。
  • Include 需要加载的其他文件

安装Apache

#yum install -y pcre pcre-devel apr apr-devel[root@localhost mysql]# cd /usr/local/src/
[root@localhost src]# wget http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz

解压:

[root@localhost src]# tar zxvf httpd-2.2.16.tar.gz

配置编译参数:

[root@localhost src]# cd httpd-2.2.16
[root@localhost httpd-2.2.16]# ./configure \
--prefix=/usr/local/apache2 \
--with-included-apr \
--enable-so \
--enable-deflate=shared \
--enable-expires=shared \
--enable-rewrite=shared \
--with-pcre

–prefix 指定安装到哪里, --enable-so 表示启用DSO [1] --enable-deflate=shared 表示共享的方式编译deflate,后面的参数同理。如果这一步你出现了这样的错误:

--prefix 指定安装到哪里, --enable-so 表示启用DSO [1] --enable-deflate=shared 表示共享的方式编译deflate,后面的参数同理。如果这一步你出现了这样的错误:

扩展

./configure --prefix=/usr/local/apache2.2 --enable-deflate --enable-expires  --enable-headers  --enable-modules=most --enable-so  --with-mpm=worker --enable-rewrtie

备注含义:
–enable-deflate \压缩
–enable-expires \ -缓存内容过期时间
-enable-headers \ 激活http头模块
–enable-modules=most 激活大多数模块
–with-mpm=worker \ 在worker模式下工作,该模式支持的并发会大点

/usr/local/apache2.2/bin/apachectl   -l   查看当前加载的模块
/usr/local/apache2.2/bin/apachectl  graceful  平滑重启

解决办法是:

yum install -y zlib-devel

编译:

[root@localhost httpd-2.2.16]# make

安装:

[root@localhost httpd-2.2.16]# make install

以上两个步骤都可以使用 echo $? 来检查是否正确执行,否则需要根据错误提示去解决问题。

# echo $?

默认的网站数据时存放在/var/www/html目录中的,首页名称是index.html,写一个文件替换默认页面

#echo "Welcome To www.linuxprobe.com">/var/www/index.html

再次打开浏览器,输入http://127.0.0.1

#firefox

编辑Apache服务程序的主配置文件

#vi /etc/httpd/conf/httpd.conf

将在119行的DocumentRoot参数修改为"/home/wwwroot",再把在123行的"/var/www"修改为/home/wwwroot
建立网站数据目录

#mkdir /home/wwwroot
#echo "The New Web Directory" >/home/wwwroot/index.html

重启Apache服务

#systemctl restart httpd

再次打开浏览器,输入http://127.0.0.1
#firefor
http://127.0.0.1/index.html

SELinux安全上下文设置

使用"ls -Z"命令检查下新旧网站数据目录的SELinux安全上下文有何不同

#ls -Zd /var/www/html
#ls -Zd /home/wwwroot


SELinux安全上下文是由冒号间隔的四个字段组成的,以原始网站数据目录的安全上下文为例分析下


修改网站数据目录的安全上下文

#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot

修改网站数据的安全上下文(*代表所有文件或目录)

#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/*

这样操作后查看到SELinux安全上下文依然没有改变,不要着急,再执行下restorecon命令即可

#restorecon -Rv /home/wwwroot

再来刷新浏览器后看到正常页面

#firefox

个人用户主页功能

1、开启个人用户主页功能

#vi /etc/httpd/conf.d/userdir.conf
将第17行的UserDir disabled前加一个#,代表该行被注释掉,不再起作用。
将第23行的UserDir pudic_html前的#号去除,表示该行被启用。

注意:UserDir参数表示的是需要在用户家目录中创建的网站数据目录的名称(即public_html)

重启Apache服务程序

# systemctl restart httpd

2、创建个人用户网站数据

#su linuxprobe

创建网站数据目录

#mkdir  public_html

写入首页文件内容

#echo "This linuxprobe's website" > public_html/index.html

给予网站目录755的访问权限

#chmod -Rf 755 ./

打开浏览器,访问地址http://127.0.0.1/~用户名,如果是报错页面,是SELinux服务在捣蛋。
3、设置SELinux允许策略
getsebool命令用于查询所有SELinux规划的布尔值,格式为 : “getsebool -a”
SELinux策略布尔值: 只有0/1两种情况,0或off为禁止,1或on为允许。

查看并搜索所有与家目录有关的SELinux策略

#getsebool -a |grep home

将个人用户网站功能策略设置为允许

#setsebool -P httpd_enable_homedirs=on

刷新浏览器访问linuxprobe用户个人网站
http:127.0.0.1/linuxprobe
4、增加密码安全验证
使用htpasswd命令生成密码数据库 (-c 参数用于第一次生成) :

#htpasswd -c /etc/httpd/paaswd linuxprobe
New password:
Re-type new password:
Adding password for user linuxprobe

编辑配置文件开启密码验证

#vi /etc/httpd/conf.d/userdir.conf


如果口令输入误会直接禁止访问 :
Unauthorized

虚拟网站主机功能

Apache的虚拟主机功能(Virtual Host)是可以让一台服务器基于IP、主机名或端口号实现多个网站访问的技术。

1、基于IP地址

一台服务器拥有多个IP地址,当用户访问不同IP地址时显示不同的网站页面

2、分别创建网站数据目录
在/home/wwwroot目录下分别创建三个网站数据目录

#mkdir -p /home/wwwroot/10
#mkdir -p /home/wwwroot/20
#mkdir -p /home/wwwroot/30

分别在这三个网站数据目录中写入主页文件,内容为该网站的IP地址 :

#echo "IP:192.168.10.10" > /home/wwwroot/10/index.html
#echo "IP:192.168.10.20" > /home/wwwroot/20/index.html
#echo "IP:192.168.10.30" > /home/wwwroot/30/index.html

3、在配置文件中描述基于IP地址的虚拟主机。


4、修改网站数据目录的SELinux安全上下文
需要分别修改网站数据目录以及网页文件的SELinux安全上下文:

#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*

立即恢复SELinux安全上下文 :

#restorecon -Rv /home/wwwroot

5、分别访问192.168.10.10/20/30验证结果 :

请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突
2、基于主机名
当服务器无法为每个网站都分配到独立IP地址时,可以试试让Apache服务程序自动识别来源主机名或域名然后跳转指定的网站。
第1步 : 配置网卡IP地址与hosts文件

hosts文件作用是定义IP地址与主机名的映射关系,即强制将某个主机名地址解析到指定的IP地址。

#vi /etc/hosts
//每行只能写一条,格式为IP地址+ 空格+主机名(域名)。
192.168.10.10 www.linuxprobe.com
192.168.10.20 bbs.linuxprobe.com
192.168.10.30 tech.linuxprobe.com

第2步 :分别创建网站数据目录

#mkdir -p /home/wwwroot/www
#mkdir -p /home/wwwroot/bbs
#mkdir -p /home/wwwroot/tech

分别在网站目录中写入不同的首页文件 :

#echo "WWW.linuxprobe.com" >/home/wwwroot/www/index.html
#echo "BBS.linuxprobe.com" >/home/wwwroot/www/index.html
#echo "TECH.linuxprobe.com" >/home/wwwroot/www/index.html

第3步 :在配置文件中描述基于主机名称的虚拟主机
编辑主配置文件(/etc/httpd/conf/httpd.conf),在主配置文件的末尾按下面格式定义虚拟主机信息 :


重启apache网站服务程序
把服务加到启动项 :systemctl enable httpd

第4步 :修改网站数据目录的SELinux安全上下文 :

#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/*
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/*
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/*

让新的SELinux安全上下文立即生效 :

#restorecon -Rv /home/wwwroot

第5步 :分别访问网站验证结果

请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突

2、基于端口号

让服务器开启多个服务端口后,然后让用户能够通过访问服务器的指定端口来找到想要的网站。
第1步 :配置服务器的IP地址

第2步 :分别创建网站数据目录
分别创建端口为6111,6222的网站数据目录 :

#mkdir -p /home/wwwroot/6111
#mkdir -p /home/wwwroot/6222

分别在网站数据目录中写入不同内容的主页文件 :

#echo "port:6111" > /home/wwwroot/6111/index.html
#echo "port:6111" > /home/wwwroot/6222/index.html

第3步 :在配置文件中描述基于端口号的虚拟主机。
编辑主配置文件(/etc/httpd/conf/httpd.conf),找到约在42行的Listen 80,并在下面追加 :
Listen 6111
Listen 6222
然后在主配置文件的末尾按下面格式定义虚拟主机信息 :

重启apache服务
报错了
这是因为SELinux服务检测到6111与6222端口原本并不属于Apache服务端口,但现在却被以Apache的名义监听了。
第4步 :修改网站数据目录的SELinux安全上下文并允许端口监听。
修改网站数据目录的安全上下文:

#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222
#semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/*

让新的SELinux安全上下文立即生效 :

#restorecon -Rv /home/wwwroot

使用semanage命令搜索在SELinux系统中有关http服务的端口号 :

再次尝试启动Apache网站服务程序就没问题了:

#systemctl restart httpd

第5步 :分别访问网站验证结果

请注意,当你完成实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突

Apache的访问控制

基于主机名、IP地址以及客户端特征做Apache网页资源的访问控制,常用的指令有 :
Order(排序) , Allow(允许), Deny(拒绝),Satisfy(满足) 。
其中Order指令用于定义Allow或Deny起作用的顺序,分别实现了允许或者拒绝某个主机访问服务器网页资源。
比如说 "Order Allow,Deny"则代表着先将客户端与允许规则进行对比,若匹配成功则允许访问,反之则直接拒绝。

创建网站数据目录和首页文件

#mkdir /var/www/html/server
#echo "Successful" > /var/www/html/server/index.html

根据浏览器的变量特征,只允许IE浏览器访问网站数据。

#vi /etc/httpd/conf/httpd.conf
//在大约129行的地方添加参数
<Directory "/var/www/html/server">
SetEnvIf User-Agent "Internet Explorer" ie=1
Order allow,deny
Allow from env=ie

保存配置文件后,重启服务systemctl restart httpd,然后用浏览器测试访问网站页面

如果希望仅允许火狐浏览器访问页面,请将配置文件修改为 :

<Directory "/var/www/html/server">
SetEnvIf User-Agent "Firefox" ff=1
Order allow,deny
Allow from env=ff
</Directory>

根据来访源地址,仅限192.168.10.10的主机访问网站。
此时我们需要两台主机来完成实验,请配置主机IP地址后能够互相通信。

#vi /etc/httpd/conf/httpd.conf
//在大约129行的地方添加参数。
Order allow,deny
Allow from 192.168.10.10

保存配置文件后,重启服务systemctl restart httpd,然后用浏览器测试访问网站页面

然后再使用远程主机 (192.168.10.20) 尝试访问页面,顺利的成功了:

YUM安装Apache

1、Apache在yum里的名称为httpd,所以先在机器中查询有没有安apache

rpm -qa | grep httpd

如果没有数据返回,那就是没有安装

2、查询没有安装Apache后,来进行安装

yum install httpd


3、开启httpd的服务

#service httpd start
或
#systemctl enable httpd开机自启
#chkconfig --add httpd

4、现在就可以来测试一下apache是否已经可以成功访问了,只需要用浏览器输入linux服务器的IP地址来访问就可以了

当出现上图这个测试页时,就说明已经安装成功了

5、Apache的主目录在cd /var/www/html 下,可以将需要发布的网页放在这个目录下

6、如果不想把网站主目录,而是想放到别的目录,就需要设置虚拟目录
首先确定好需要设置哪个目录为虚拟目录,然后进入配置文件

vi /etc/httpd/conf/httpd.conf

然后搜索Alias,找到下图的位置

在上图绿色箭头所指的位置,后面跟上你所要设置虚拟目录的目录位置
然后保存退出

7、然后再重启一下httpd

service httpd restart

8、这样配置好了之后,还是不可以访问的,访问时会提示没有权限,不过不是权限的问题,而是linux内核防火墙SELinux的问题
输入setup然后回车

在上图中选择第二项“Firewall configuration”

然后在”SELinux“的选项中,选择”Disabled“来关闭

这样还是没办法访问的,还需要输入命令来进行关闭,命令如下

setenforce 0

9、现在再来访问一下虚拟目录里的网站,就可以发现成功访问了!

扩展

编写apache启动脚本

[root@linux ~]# cd /etc/init.d/
[root@linux init.d]# touch httpd
[root@linux ~]# vim httpd.sh
#!/bin/bash
#chkconfig:345 85 15
#description:Start and stop the Apache HTTP Serverfunction httpd_start(){/usr/local/apache/bin/apachectl start
}function httpd_stop(){/usr/local/apache/bin/apachectl stop
}case $1 in
start)
httpd_start
;;
stop)
httpd_stop
;;
restart)
httpd_stop
httpd_start
;;
*)
echo "Usage: httpd start|stop|restart!"
;;
esac
注意:以下两行内容是服务能够在chkconfig里添加的必要代码
#chkconfig:345 85 15
#description:Start and stop the Apache HTTP Server

把编写的启动脚本赋予执行权限,(添加到系统服务中)

[root@linux ~]# chmod +x httpd
[root@linux ~]# ll
-rwxr-xr-x 1 root root 496 Jul 18 10:12 httpd

重新加载守护进程,启动服务

[root@linux ~]# systemctl daemon-reload #先加载守护进程,否则无法启动服务
[root@linux ~]# systemctl start httpd
[root@linux ~]# netstat -lnpt|grep http
tcp6 0 0 :::80 :::* LISTEN 1077/httpd

设置开机自启动

[root@linux ~]# chkconfig --add httpd

查看开机自启动结果:

[root@linux ~]# chkconfig --list|grep httpd

扩展

通过 APACHE 访问日志 access.log 统计 IP 和每个地址访问的次数,列出访问量前 10 名的 IP 地址,写出具体命令

awk '{print $1}' access.log|uniq -c|sort -rn |head -10





参考链接
Poll的笔记
链接:https://www.cnblogs.com/maybe2030/p/4781555.html:

Apache服务器的安装与配置 : https://mp.weixin.qq.com/s/NXZgAhXQJQJ5yqQi-0_Kaw

Windows下安装安装Web服务器Apache :https://mp.weixin.qq.com/s/y8ksS-WXwR8OBxA_jlcjHw

编译安装apache添加开机自启动 :https://blog.51cto.com/1283684/2511576

CentOS下Apache服务器的安装与配置相关推荐

  1. Ubuntu12.04下apache服务器的安装也配置

    安装步骤 1.下载httpd http://httpd.apache.org/ 2.解压缩httpd tar vxzf httpd-2.4.6.tar.gz 3.安装httpd 进入解压缩后的目录 c ...

  2. CentOS 6.3下rsync服务器的安装与配置[转]

    CentOS 6.3下rsync服务器的安装与配置 一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以 ...

  3. linux防火墙添加udp 123,centos下的ntp的安装和配置 (注意 防火牆的udp 123要打開,不然會不能用)...

    centos下的ntp的安装和配置安装 yum install ntp 配置文件 /etc/ntp.conf restrict default kod nomodify notrap nopeer n ...

  4. Linux Centos下SQL Server 2017安装和配置

    Linux Centos下SQL Server 2017安装和配置 原文:Linux Centos下SQL Server 2017安装和配置 我们知道在Linux下安装服务有很多方式,最为简单的也就是 ...

  5. Server_Windows 下apache 下载、安装、配置(apache下载、apache 安装、apache 配置);

    apache 下载.安装.配置 一.Apache 的安装说明 1.下载 首先打开Apache官网,进入Windows版本的下载地址页面:http://archive.apache.org/dist/h ...

  6. CentOS 7 Apache服务的安装与配置(转)

    https://blog.51cto.com/13525470/2070375 一.Apache简介 Apache 是一个知名的开源Web服务器. 早期的Apache服务器由Apache Group来 ...

  7. Linux centos 下apache(httpd)编译安装

    1,下载apache(httpd)源码: https://httpd.apache.org/ 2,检查当前系统中是否已安装过apache,如安装过,则需要先卸载: 3,需要依赖APR,所以要先安装AP ...

  8. 【CentOS】NFS服务器的安装与配置

    一.系统环境 [root@C58-NFS-Client mnt]# cat /etc/redhat-release CentOS release 5.8 (Final) [root@C58-NFS-C ...

  9. CentOS 6.3下rsync服务器的安装与配置

    一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录. Rsy ...

最新文章

  1. AI技术在安防市场上的应用主要还存有几个挑战
  2. Cocos2d-x3.1颗粒使用
  3. Ch -- 一个 C/C++ 解释器
  4. 15条走红网络的手机摄影技巧
  5. mysql 查找字符位置_MySQL数据库中如何查看一个字符串在另一个字符串中第一次出现的位置呢?...
  6. latex 参考文献没有显示_甜甜的磕盐路 | LaTeX论文排版小贴士
  7. 转:J2SE5中的最新注释功能SuppressWarnings
  8. laravel常用响应操作
  9. 【不吹不黑】详解容器技术架构、网络和生态
  10. RocketMQ这样做,压测后性能提高30%
  11. 信息学奥赛一本通C++语言——1104:计算书费
  12. Win11延迟高怎么办?Win11延迟高的解决方法
  13. html点击发送qq邮箱_qq邮箱怎么发送文件夹
  14. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_23-页面预览-页面预览开发
  15. POJ 2431 Expedition (贪心+优先队列)
  16. 学习Java随记之swing编程(2)
  17. 身份证归属地查询接口
  18. 计算机毕业设计论文资料查找
  19. idea回到上一个光标位置
  20. c语言期末考试-小题

热门文章

  1. 笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!
  2. BCELoss忽视某个类别
  3. pytorch常见问题之cpu占满
  4. 使用严苛模式打破Android4.0以上平台应用中UI主线程的“独断专行”
  5. Data Guard组件等相关介绍
  6. emq数据储存到mysql,规则引擎示例 - 保存数据到 MySQL - 《EMQ X Enterprise v4.0 中文文档》 - 书栈网 · BookStack...
  7. kettle-连接控件
  8. Android——最全的系统对话框(AlertDialog)详解
  9. 飞思卡尔9S12X系列双核中的协处理器XGATE使用方法
  10. 初学Java,第一段代码