Linux——搭建Apache(httpd)服务器
阅读原文时间:2021年11月22日阅读:1

一、基本概念

Apache(或httpd)是Internet上使用最多的Web服务器技术之一,使用的传输协议是http超文本传输协议(一个基于超文本的协议),用于通过网络连接来发送和接受对象。

有两个版本:

  • http:超文本传输协议,通过线路以明文形式发送,默认情况下使用80/TCP(也可以使用其他端口)
  • https:经TLS/SSL安全加密的超文本传输协议,默认情况下使用端口443/TCP

二、了解Apache的配置文件

在Linux系统中配置服务,其实就是修改服务的配置文件,httpd服务程序的主要配置文件及存放位置如下:

配置文件的名称

存放位置

服务目录

/etc/httpd

主配置文件

/etc/httpd/conf/httpd.conf

网站数据目录

/var/www/html

访问日志

/var/log/httpd/access_log

错误日志

/var/log/httpd/error_log

主配置文件/etc/httpd/conf/httpd.conf

参数

用途

ServerRoot

服务目录

ServerAdmin

管理员邮箱

User

运行服务的用户

Group

运行服务的用户组

ServerName

网站服务器的域名

DocumentRoot

文档根目录(网站数据目录)

Directory

网站数据目录的权限

Listen

监听的IP地址与端口号

DirectoryIndex

默认的索引页页面

ErrorLog

错误日志文件

CustomLog

访问日志文件

Timeout

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

<Directory "/var/www/html">
    AllowOverride None  #设置.htaccess文件中的指令类型,None表示禁止使用.htaccess,该参数一般不改
    Require all granted #设置权限,默认开启所有客户机访问权限
</Directory>

三、如何配置Apache服务器

1、更改主机名:

[root@localhost ~]# hostnamectl set-hostname $主机名
[root@localhost ~]# bash    #环境变量重载

2、配置网络

(1)虚拟交换机、网络适配器选择仅主机模式,并且配置为192.168.100.0网段;

(2)编辑网络配置文件:

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改:    BOOTPROTO=static    #改为静态IP地址
    ONBOOT=yes      #改为开机自启
    IPADDR=192.168.100.10
    PREFIX=24  或者  NETMASK=255.255.255.0

(3)重启网络服务:

[root@localhost ~]# systemctl restart network

3、配置yum源

(1)先在VMware里面把系统镜像文件连接到虚拟机的光驱上;

(2)挂载光驱里的镜像:

[root@localhost ~]# mount /dev/cdrom /media

(3)修改yum源配置文件:

[root@localhost ~]# vim /etc/yum.repos.d/local.repo
    [rhel]
    name=rhel
    baseurl=file:///media
    enabled=1
    gpgcheck=0

(4)清空yum源缓存信息:

[root@localhost ~]# yum clean all

(5)检索当前yum源信息:

[root@localhost ~]# yum repolist

1、安装httpd服务

[root@server ~]# yum -y install httpd

2、启动httpd服务

[root@server ~]# systemctl restart httpd
[root@server ~]# systemctl enable httpd

3、配置防火墙

[root@server ~]# firewall-cmd --permanent --add-service=http
[root@server ~]# firewall-cmd --reload

4、关闭SELinux

[root@server ~]# setenforce 0

5、客户端测试

[root@client ~]# firefox http://IP地址  或者  curl http://IP地址

注意:该用户必须在Linux系统中存在

1、新建一个用户(网站基于该用户)

[root@server ~]# useradd user0
[root@server ~]# passwd user0

2、修改用户的家目录权限,使其他用户具有读取和执行的权限

[root@server ~]# chmod -R 705 /home/user0

3、创建存放用户个人主页空间的目录,写user0的网页文件

[root@server ~]# mkdir /home/user0/public_html
[root@server ~]# cd /home/user0/public_html
[root@server ~]# echo "this is user0's web">>index.html

4、修改基于用户的httpd配置文件

[root@server ~]# vim  /etc/httpd/conf.d/userdir.conf
修改:    UserDir enabled     #开启,表示让httpd服务程序开启个人用户主页功能
    UserDir public_html #去注释,UserDir参数表示网站数据在用户家目录中的保存目录名称

5、配置防火墙(同上)

[root@server ~]# firewall-cmd --permanent --add-service=http
[root@server ~]# firewall-cmd --reload

6、修改selinux权限

[root@server ~]# getsebool -a|grep home
[root@server ~]# setsebool httpd_enable_homedirs

7、重启服务

[root@server ~]# systemctl restart httpd

8、客户端测试

[root@client ~]# firefox http://IP地址/~username  或者curl http://IP地址/~username

1、新建虚拟主机的网页文件

[root@server ~]# mkdir /www/one /www/two
[root@server ~]# cd  /www/one
[root@server ~]# echo "this is a web for virtual host  one">>index.html
[root@server ~]# cd /www/two
[root@server ~]# echo "this is a web for virtual  host  two">>index.html
[root@server ~]# chmod o+x /www

2、配置虚拟主机的文件

[root@server ~]# cd /etc/httpd/conf.d
[root@server ~]# vim vhost.conf
    <Directory /www/one>        #设置网站目录权限
        Require all granted #开启所有客户机访问权限
    </Directory>
    <VirtualHost 192.168.100.10>        #虚拟主机
        ServerName one.example.com  #定义服务器名称
        DocumentRoot /www/one/      #网站数据目录
    </VirtualHost>
    <Directory /www/two>
        Require all granted
    </Directory>
    <VirtualHost 192.168.100.11>
        ServerName two.example.com
        DocumentRoot /www/two/
    </VirtualHost>

3、做域名解析文件

server/client

[root@server ~]# vim /etc/hosts
    192.168.100.10 one.example.com
    192.168.100.11 two.example.com

4、配置防火墙(同上)

[root@server ~]# firewall-cmd --permanent --add-service=http
[root@server ~]# firewall-cmd --reload

5、修改虚拟主机网页文件的selinux上下文类型

[root@server ~]# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
[root@server ~]# restorecon -RFv /www

6、重启服务

[root@server ~]# systemctl restart httpd

7、使用浏览器访问

http://one.example.com

http://two.example.com


1——新建虚拟主机的网页文件

[root@server ~]# mkdir  /www/8088
[root@server ~]# echo "this is a web for port 8088 ">>index.html
[root@server ~]# mkdir  /www/8089
[root@server ~]# echo "this is a web for port 8089 ">>index.html

2——配置虚拟主机的文件

[root@server ~]# cd /etc/httpd/conf.d
[root@server ~]# vim vhost.conf
    <Directory /www/8088/>
        Require all granted
    </Directory>
    <virtualHost 192.168.100.10:8088>
        DocumentRoot /www/8088/
    </virtualHost>
    <Directory /www/8089/>
        Require all granted
    </Directory>
    <virtualHost 192.168.100.10:8089>
        DocumentRoot /www/8089/
    </virtualHost>

3、配置防火墙

[root@server ~]# firewall-cmd --permanent --zone=public --add-port=8089/tcp
[root@server ~]# firewall-cmd --permanent --zone=public --add-port=8088/tcp
[root@server ~]# firewall-cmd --reload

4、关闭SELinux

[root@server ~]# setenforce 0

5、重启服务

[root@server ~]# systemctl restart httpd

6、使用浏览器访问

http://192.168.100.10:8088

http://192.168.100.10:8089


注意:经TLS/SSL安全加密的超文本传输协议,默认情况下使用端口443/TCP

1、安装TLS加密软件,网站内容不用明文传输

[root@server ~]# yum -y install mod_ssl

2、生成密钥

[root@server ~]# openssl genrsa >tlsweb.key

3、生成证书请求文件

[root@server ~]# openssl req -new -key tlsweb.key > tlsweb.csr

4、生成证书文件

[root@server ~]# openssl req -x509 -days 365 -key tlsweb.key -in tlsweb.csr >tlsweb.crt

5、修改ssl.conf配置文件

[root@server ~]# vim /etc/httpd/conf.d/ssl.conf
    SSLCertificateFile /etc/pki/tls/certs/tlsweb.crt
    SSLCertificateKeyFile /etc/pki/tls/private/tlsweb.key

6、把证书文件拷贝到ssl.conf配置文件里的对应路径下面

[root@server ~]# cp tlsweb.crt /etc/pki/tls/certs/

7、把秘钥文件拷贝到ssl.conf配置文件里的对应路径下面

[root@server ~]# cp tlsweb.key /etc/pki/tls/private/

8、使用浏览器访问

https://192.168.100.10