Centos 7 Apache 服务安装及配置

学习中总结下自己遇到的问题:

  • Apache-httpd的简介
  • Apache-httpd的安装
  • Apache-httpd的配置
  • 遇到相关问题解决
  • *相关命令

实验环境

虚拟机安装的CentOS7(最小化安装,NAT网络模式,可直接联网),使用xshell远程操作:
~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.5.1804 (Core) 
Release:    7.5.1804
Codename:   Core

Apache简介

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性(尽管不断有新的漏洞被发现,但由于其开放源代码的特点,漏洞总能被很快修补。因此总合来说,其安全性还是相当高的。)。被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

Apache安装

[1]查看是否安装有httpd
~]# rpm -qa httpd  
[2]安装httpd
~]# yum install httpd* -y

Installed:
  httpd.x86_64 0:2.4.6-80.el7.centos.1                                                
  httpd-devel.x86_64 0:2.4.6-80.el7.centos.1                                          
  httpd-itk.x86_64 0:2.4.7.04-2.el7                                                   
  httpd-manual.noarch 0:2.4.6-80.el7.centos.1                                         
  httpd-tools.x86_64 0:2.4.6-80.el7.centos.1                                          

Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7_4.1            apr-devel.x86_64 0:1.4.8-3.el7_4.1         
  apr-util.x86_64 0:1.5.2-6.el7           apr-util-devel.x86_64 0:1.5.2-6.el7        
  cyrus-sasl.x86_64 0:2.1.26-23.el7       cyrus-sasl-devel.x86_64 0:2.1.26-23.el7    
  expat-devel.x86_64 0:2.1.0-10.el7_3     libdb-devel.x86_64 0:5.3.21-24.el7         
  mailcap.noarch 0:2.1.41-2.el7           openldap-devel.x86_64 0:2.4.44-15.el7_5    

Dependency Updated:
  openldap.x86_64 0:2.4.44-15.el7_5                                                   

Complete!
[3]此时可启动httpd服务,查看启动后的状态;
~]# systemctl start httpd.service
~]# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2018-09-15 15:50:29 CST; 34s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1427 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1427 /usr/sbin/httpd -DFOREGROUND
           ├─1428 /usr/sbin/httpd -DFOREGROUND
           ├─1429 /usr/sbin/httpd -DFOREGROUND
           ├─1430 /usr/sbin/httpd -DFOREGROUND
           ├─1431 /usr/sbin/httpd -DFOREGROUND
           └─1432 /usr/sbin/httpd -DFOREGROUND

Sep 15 15:50:28 adobe.com systemd[1]: Starting The Apache HTTP Server...
Sep 15 15:50:29 adobe.com httpd[1427]: AH00558: httpd: Could not reliably determi...ge
Sep 15 15:50:29 adobe.com systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
[4]此时打开浏览器,输入虚拟机IP地址:192.168.245.162,即可看到apache的默认界面;
[5]停止httpd服务命令:
~]# systemctl stop httpd.service

Apache的配置

apach 的应用服务

服务目录

/etc/httpd

主配置文件

/etc/httpd/conf/httpd.conf

网站数据目录

/var/www/html

访问日志

/var/log/httpd/access_log

错误日志

/var/log/httpd/error_log

在httpd服务程序主配置文件中最为常用的参数如下:

ServerRoot

服务目录

ServerAdmin

管理员邮箱

User

运行服务的用户

Group

运行服务的用户组

ServerName

网站服务器的域名

DocumentRoot

网站数据目录

Listen

监听的IP地址与端口号

DirectoryIndex

默认的索引页页面

ErrorLog

错误日志文件

CustomLog

访问日志文件

Timeout

网页超时时间,默认为300秒.

Include

需要加载的其他文件

新建一个index.html文件测试一下;

~]# vim /var/www/html/index.html
<h1>测试主页</h1>

此时刷新一下浏览器即可显示“测试主页”;

修改httpd服务目录:
新建一个httpd服务目录文件夹;
~]# mkdir /data/web/html -pv
mkdir: created directory ‘/data’
mkdir: created directory ‘/data/web’
mkdir: created directory ‘/data/web/html’
~]# vim /etc/httpd/conf/httpd.conf
119行"DocumentRoot "/var/www/html"修改为
"DocumentRoot "/data/web/html"
还有131行"# Further relax access to the default document root:
 <Directory "/var/www/html">"需要修改为
 <Directory "/data/web/html">
 修改完后,使用httpd -t检查语法是否有误;
 ~]# httpd -t
Syntax OK
 新建一个测试主页看一下效果;
 # vim /data/web/html/index.html 
<h1>测试主页更换目录</h1>
<h2>效果展示</h2>
 修改完毕需要重启httpd服务,
 ~]# systemctl restart httpd.service
 打开浏览器刷新再看效果;
 问题来了:无法显示index.html,而是显示默认apache欢迎界面;

httpd服务程序的功能就是让用户能够访问到网站内容,因此让SELinux对网页访问功能肯定是默认允许的,但刚刚把保存网站数据的默认路径修改为了/home/wwwroot目录,这似乎就产生问题了,也就是说现在httpd提供的网站服务却要去获取普通用户家目录中的数据了,这个行为触犯SELinux服务的监管项目。

解决问题
查看SELinux状态(如果SELinux status参数为enabled即为开启状态)
~]# /usr/sbin/sestatus -v 
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

Process contexts:
Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context:                   system_u:system_r:init_t:s0
/usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023

File contexts:
Controlling terminal:           unconfined_u:object_r:user_devpts_t:s0
/etc/passwd                     system_u:object_r:passwd_file_t:s0
/etc/shadow                     system_u:object_r:shadow_t:s0
/bin/bash                       system_u:object_r:shell_exec_t:s0
/bin/login                      system_u:object_r:login_exec_t:s0
/bin/sh                         system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0
/sbin/agetty                    system_u:object_r:getty_exec_t:s0
/sbin/init                      system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0
/usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
关闭SELinux:

1、临时关闭(不用重启机器):
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式

~]# setenforce 0

2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件

~]# vim /etc/selinux/config
第7行代码:SELINUX=enforcing
修改成:SELINUX=disabled
然后重启机器;