- A+
一、基本概念
Apache(或httpd)是Internet上使用最多的Web服务器技术之一,使用的传输协议是http超文本传输协议(一个基于超文本的协议),用于通过网络连接来发送和接受对象。
有两个版本:
- http:超文本传输协议,通过线路以明文形式发送,默认情况下使用80/TCP(也可以使用其他端口)
- https:经TLS/SSL安全加密的超文本传输协议,默认情况下使用端口443/TCP
二、Apache的配置文件
1、配置文件的分类
在Linux系统中配置服务,其实就是修改服务的配置文件,httpd服务程序的主要配置文件及存放位置如下:
配置文件的名称 | 存放位置 |
---|---|
服务目录 | /etc/httpd |
主配置文件 | /etc/httpd/conf/httpd.conf |
网站数据目录 | /var/www/html |
访问日志 | /var/log/httpd/access_log |
错误日志 | /var/log/httpd/error_log |
2、主配置文件的重要参数
主配置文件/etc/httpd/conf/httpd.conf
参数 | 用途 |
---|---|
ServerRoot | 服务目录 |
ServerAdmin | 管理员邮箱 |
User | 运行服务的用户 |
Group | 运行服务的用户组 |
ServerName | 网站服务器的域名 |
DocumentRoot | 文档根目录(网站数据目录) |
Directory | 网站数据目录的权限 |
Listen | 监听的IP地址与端口号 |
DirectoryIndex | 默认的索引页页面 |
ErrorLog | 错误日志文件 |
CustomLog | 访问日志文件 |
Timeout | 网页超时时间,默认为300秒 |
3、Directory标签
<Directory "/var/www/html"> AllowOverride None #设置.htaccess文件中的指令类型,None表示禁止使用.htaccess,该参数一般不改 Require all granted #设置权限,默认开启所有客户机访问权限 </Directory>
三、如何配置Apache服务器
注意:配置Apache服务器之前需要准备好:主机名、网络、yum源(可参考我之前的文章)
任务一:配置简单的httpd服务
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、配置防火墙(同上)
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、配置防火墙(同上)
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加密的虚拟主机
注意:经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