Linux——搭建Apache(httpd)服务器
一、什么是Apache?
Apache(或httpd)服务,通俗讲就是一个用于搭建网站的服务。
有两个版本:
- http:超文本传输协议,通过线路以明文形式发送,默认使用80端口/TCP
- https:经TLS/SSL安全加密的超文本传输协议,默认使用443端口/TCP协
二、Apache的配置文件
1、配置文件的位置
配置文件的名称 | 存放位置 |
---|---|
服务目录 | /etc/httpd |
主配置文件 | /etc/httpd/conf/httpd.conf |
虚拟主机的配置文件 | /etc/httpd/conf.d |
日志文件 | /etc/httpd/logs |
默认的网站数据目录 | /var/www/html |
2、主配置文件的重要参数
[root@server ~]# vim /etc/httpd/conf/httpd.conf
ServerRoot #服务目录
Listen #监听的IP地址与端口号
User #运行服务的用户
Group #运行服务的用户组
ServerAdmin #管理员邮箱
ServerName #网站服务器的域名
DocumentRoot #默认网站数据目录
Directory #文件目录的权限
DirectoryIndex #默认的索引页页面
ErrorLog #错误日志文件
三、如何搭建Apache服务器
首先准备:主机名、网络、yum源
参考以前的文章
(一)搭建一个简单的httpd服务
Server端配置:
1、安装httpd服务
[root@server ~]# yum -y install httpd
2、开启服务并设为开机自启
[root@server ~]# systemctl restart httpd
[root@server ~]# systemctl enable httpd
3、配置防火墙
[root@server ~]# firewall-cmd --permanent --add-service=http
[root@server ~]# firewall-cmd --reload
Client端测试:
[root@client ~]# firefox http://IP地址 #有图形化
或者
[root@client ~]# curl http://IP地址 #没有图形化
(二)搭建基于用户的个人网站
Server端配置:
1、新建一个用户(网站基于该用户)
[root@server ~]# useradd wzg
2、创建个人网页文件
[root@server ~]# mkdir /home/wzg/public_html
[root@server ~]# cd /home/wzg/public_html
[root@server public_html]# echo "this is wzg's web">>index.html
3、修改访问权限(使其他用户具有读取和执行的权限)
[root@server ~]# chmod -R 705 /home/wzg
4、修改基于用户的httpd配置文件
[root@server ~]# vim /etc/httpd/conf.d/userdir.conf
修改: UserDir enabled #开启,表示让httpd服务程序开启个人用户主页功能
UserDir public_html #去注释,表示网站数据在用户家目录中的保存目录名称
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 on
7、重启服务
[root@server ~]# systemctl restart httpd
Client端测试:
[root@client ~]# firefox http://IP地址/~username
或者
[root@client ~]# curl http://IP地址/~username
(三)搭建基于域名访问的虚拟主机
Server端配置:
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
2、修改访问权限(使其他用户具有可执行权限)
[root@server ~]# chmod o+x /www
3、配置虚拟主机的网页文件
[root@server ~]# cd /etc/httpd/conf.d
[root@server conf.d]# vim one.conf
#设置网站目录权限
Require all granted #开启所有客户机访问权限
#虚拟主机对应的IP
ServerName www.one.com #定义域名
DocumentRoot /www/one/ #网站主页文件的数据目录
[root@server conf.d]# vim two.conf
Require all granted
ServerName www.two.com
DocumentRoot /www/two/
4、做域名解析文件
Server端和Client端:
[root@server ~]# vim /etc/hosts
加入: 192.168.100.10 www.one.com
192.168.100.10 www.two.com
5、配置防火墙(同上)
[root@server ~]# firewall-cmd --permanent --add-service=http
[root@server ~]# firewall-cmd --reload
6、修改虚拟主机网页文件的selinux上下文类型
[root@server ~]# ll -dz /www #查看目录下文件的上下文类型
[root@server ~]# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'
#设置文件的上下文类型与默认的网站数据目录一致,包括/www下面的子文件
[root@server ~]# restorecon -RFv /www #以可视化模式强制递归刷新
7、重启服务
[root@server ~]# systemctl restart httpd
Client端使用浏览器访问:
http://www.one.com
http://www.two.com
(四)搭建基于端口访问的虚拟主机
Server端配置:
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 ~]# chmod o+x /www
3、配置虚拟主机的文件
[root@server ~]# cd /etc/httpd/conf.d
[root@server ~]# vim 8088.conf
Require all granted
DocumentRoot /www/8088/
[root@server ~]# vim 8089.conf
Require all granted
DocumentRoot /www/8089/
[root@server ~]# cd /etc/httpd/conf/
[root@server ~]# vim httpd.conf
在Listen 80后添加:
Listen 8088
Listen 8089
4、配置防火墙
[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
5、将端口加入httpd服务端口类型
semanage port -a 8088 -t http_port_t -p tcp
semanage port -a 8089 -t http_port_t -p tcp
semanage port -l | grep http
6、重启服务
[root@server ~]# systemctl restart httpd
Client端使用浏览器访问:
http://192.168.100.10:8088
http://192.168.100.10:8089
(五)搭建基于TLS加密的虚拟主机
注意:经TLS/SSL安全加密的超文本传输协议,默认情况下使用端口443/TCP
Server端配置:
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、重启服务
[root@server ~]# systemctl restart httpd
Client端使用浏览器访问:
https://192.168.100.10