1.安装:
[root@mrzhang conf.d]# yum provides httpd
[root@mrzhang conf.d]# yum install -y httpd-2.4.6-88.el7.centos.x86_64
[root@mrzhang conf.d]# systemctl start httpd
[root@mrzhang conf.d]# systemctl status httpd // 查看状态信息
[root@mrzhang conf.d]# rpm -qc httpd // 查看对应的配置文件列表
[root@mrzhang conf.d]# rpm -ql httpd // 查看httpd安装过程中产生的文件信息
2.httpd常见配置选项
[root@mrzhang conf.d]# rpm -qc httpd //下面对应的是访问列表信息
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf // 对应的是默认的欢迎页面的配置操作实现
/etc/httpd/conf.modules.d/00-base.conf // 下面对应的是模块文件的配置文件
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf // 主要的配置文件
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd
下面是创建的指令的配置操作
1)Listen :指明服务器监听的端口和主机,使用用法如下
Listen [IP-address:]portnumber [protocol]
可以配置监听到两个不同的端口上的或者是一个主机上两个不同的端口的
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
Listen 192.170.2.1:8443 https // 还可以指明监听的协议文件信息
可以如下操作测试
[root@mrzhang conf.d]# ip addr add 192.168.8.139 dev ens33 // 增加ip地址
[root@mrzhang conf.d]# cd /etc/httpd/conf.d
[root@mrzhang conf.d]# vim listen.conf
增加如下的配置:
Listen 192.168.8.139:8000 // 增加监听端口
[root@mrzhang conf.d]# httpd -t // 修改配置文件进行语法测试
[root@mrzhang conf.d]# getenforce // 查看selinux的级别信息,selinux开启之后,httpd对应的只能配置监听如下的端口 80, 81, 443, 488, 8008, 8009, 8443, 9000
Permissive
[root@mrzhang conf.d]# systemctl restart httpd // 服务重启
[root@mrzhang conf.d]# ss -tan | grep -E '80|8080' // 查看监听端口信息
2)ServerName:修改主机名称信息使用方式如下:
ServerName [scheme://]fully-qualified-domain-name[:port]
ServerName mrzhang:80 // 做出如下修改
[root@mrzhang conf.d]# systemctl restart httpd // 服务重启
[root@mrzhang conf.d]# systemctl status httpd // 查看信息的时候,此时不会提示域名的信息的
3)动态加载模块:LoadModule,对应的使用语法如下:
LoadModule module filename
查看可以加载的模块列表信息
[root@mrzhang conf.modules.d]# httpd -M // 查看已加载的静态和动态模块
查看可以使用的模块信息
[root@mrzhang modules]# vim /etc/httpd/conf.modules.d/00-proxy.conf
增加如下的配置文件信息
LoadModule status_module modules/mod_status.so
[root@mrzhang conf.modules.d]# httpd -t // 进行测试
[root@mrzhang conf.modules.d]# systemctl restart httpd // 重启服务
[root@mrzhang conf.modules.d]# systemctl status httpd // 查看状态信息
4)DocumentRoot:指定访问的根路径映射信息,使用用法如下:
DocumentRoot directory-path
下面是使用示例信息 : vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/test/html" // 修改了访问路径信息的话,必须要对应的修改Directory标签的
AllowOverride None
# Allow open access:
Require all granted
[root@mrzhang html]# systemctl restart httpd
此时访问的话,可以看到对应的主页的信息发生了变化的。
5)设置默认字符集AddDefaultCharset :使用如下
AddDefaultCharset UTF-8
6)设置默认访问页面:
DirectoryIndex index.html // 一般的是位于不同的条件信息下的
如下 :
DirectoryIndex index.html
7)配置错误日志信息:ErrorLog
如下示例信息: ErrorLog "logs/error_log" ,对应的日志记录的格式信息可以查看LogFormat
8)设置用户访问控制
授权操作需要使用到如下的指令信息: htpasswd
对应的使用用法信息如下:
htpasswd passwdfile username
htpasswd -b passwdfile username password
htpasswd -nb username password
[root@mrzhang conf.modules.d]# mkdir -pv /etc/httpd/users // 创建目录信息
[root@mrzhang conf.modules.d]# htpasswd -c /etc/httpd/users/.htpasswd tom // 创建用户和密码
[root@mrzhang conf.modules.d]# htpasswd -b /etc/httpd/users/.htpasswd jerry jerry // 创建用户和密码
修改配置 vim /etc/httpd/conf/http.conf
AllowOverride None
# Allow open access:
Options None // 禁用相关的选项信息
AuthType Basic // 认证类型
AuthName "enter your password and name " // 认证名称信息
AuthUserFile "/etc/httpd/users/.htpasswd" // 认证比对的密码文件信息
Require user tom jerry // 认证用户
下面测试使用组认证的方式实现操作
[root@mrzhang users]# htpasswd -b /etc/httpd/users/.htpasswd good good // 创建用户
[root@mrzhang users]# htpasswd -b /etc/httpd/users/.htpasswd hello hello // 创建用户
创建组文件 :vim /etc/httpd/users/.htgroup
[root@mrzhang users]# cat .htgroup
test: tom jerry
ops: good hello
进行语法检查和重启过服务进行操作可以实现组检查操作的。
9)使用虚拟主机VirtualHost,使用用法如下:
首先需要注释main主机对应的标签信息
使用如下的命令执行操作
vim /etc/httpd/conf/http.conf
:/DocumentRoot/,$,s/DocumentRoot/#DocumentRoot/g //给DocumentRoot增加注释信息
:132,141,s/^/#/g //给DocumentRoot对应的路径的Directory增加注释信息
Servername www.mrzhang
DocumentRoot "/var/www/mrzhang"
Options None
AllowOverRide None
require all granted
//增加监听另外的主机的配置
Servername www.test
DocumentRoot "/var/www/test"
Options None
AllowOverRide None
require all granted
11)访问控制:实现指定的用户ip或者是网络可以实现访问
示例如下
Options None
AllowOverRide None
Order deny,allow
Deny from all
Allow from 172.116.0.0/16
这样操作的话,就可以实现指定的ip进行访问操作的。
12)路径别名:使用路径别名机制实现路径操作,使用路径别名可以实现将更多的更加是深入的路径进行简化访问。
vim /etc/httpd/conf/httpd.conf 增加如下的选项信息:
Alias /image /var/www/test/good/
进行语法检查和重启服务。浏览器输入 http://192.168.8.138:8000/image/ 既可以实现别名跳转机制的,需要注意的是指定的路径必须要位于已经指定的Directory对应的路径下面的,否则需要重新编写Directory路径来确定对应的权限信息的。
3.在httpd中使用ssl模块
第一步:安装ssl相关的模块信息。mod_ssl
[root@mrzhang good]# yum install -y mod_ssl
[root@mrzhang good]# rpm -qc mod_ssl // 查看对应的安装配置文件
/etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.modules.d/00-ssl.conf
vim /etc/httpd/conf.d/ssl.conf // 查看配置文件相关的参数信息
第二部:创建ca证书信息
对应的指令信息是:openssl
语法使用如下: openssl command [ command_opts ] [ command_args ]
或者是语法信息如下:
openssl [ list-standard-commands | list-message-digest-commands | list-cipher-commands | list-cipher-algorithms | list-message-digest-algorithms | list-public- key-algorithms]
即openssl +标准命令+加密算法
获取帮助信息:[root@mrzhang good]# openssl ? 或者是man openssl
常见的命令(标准命令):
gendsa(genpkey|genrsa):生成私钥信息
passwd:生成密码信息
rand:生成随机数信息
req:发送证书请求
verify:x509证书确认
x509:x509证书管理
加密算法:存在如下的加密算法sha256,md5....
编码和解码算法:base64....
下面创建私有ca(服务器端的证书,使用的是私有的自建的CA)
步骤一:安装openssl :yum install -y openssl
生成私钥信息,对应命令的使用用法如下:
openssl genrsa [-out filename] [-passout arg] [-aes128] [-aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
生成随机数的指令: rand,其使用用法如下:
openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
openssl rand -out /etc/pki/CA/private/rand -base64 16 // 创建随机数文件
//生成私钥文件
[root@mrzhang etc]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048 )
// 生成自签证书信息,命令信息为req,
[root@mrzhang CA]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
[root@mrzhang CA]# touch index.txt // 创建文件
[root@mrzhang CA]# echo 01 >/etc/pki/CA/serial // 创建文件
//配置文件: mod_ssl
[root@mrzhang CA]# rpm -qc mod_ssl
/etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.modules.d/00-ssl.conf
vim etc/httpd/conf.d/ssl.conf 增加如下的配置信息
SSLCertificateFile /etc/pki/CA/cacert.pem
SSLCertificateKeyFile /etc/pki/CA/private/cakey.pem
客户端申请证书和ca确认证书
(umask066;openssl genrsa -out /etc/pki/CA/private/test.key2048)
openssl req -new -key /etc/pki/CA/private/test.key -out /etc/pki/tls/test.csr // 客户端创建证书
scp /etc/pki/tls/[email protected]:/tmp // 上传证书
openssl ca -in /tmp/test.csr -out /etc/pki/CA/certs/test.crt -days 365 // 服务端签署证书
下面从服务器拷贝证书到客户端然后执行基于ssh的通讯的操作的
[root@mrzhang certs]# scp [email protected]:/etc/pki/CA/certs/test.crt /etc/pki/CA/certs/
测试通讯操作(存在问题,绑定到443端口之后,无法无法启动,这是应为服务无法起订的,测试的时候存在无法访问的的问题,还有就是httpd使用ssh服务的操作需要实现)
[root@mrzhang private]# openssl s_client -connect 192.168.8.111:80 -cert test.key
unable to load certificate
139990631049120:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: TRUSTED CERTIFICATE