一、Apache 简介
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部。也是一个基金会的名称、一种武装直升机等等。
Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。它可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用。
企业中常用的web服务,用来提供http://(超文本传输协议)
二、Apache的安装部署
1.安装apache软件
yum install httpd -y
2.安装apache的手册
yum install httpd-manual -y
3.开启apache服务并设为开机自启动
[root@apache-server ~]# systemctl start httpd
[root@apache-server ~]# systemctl enable httpd
4.设置火墙永久允许http,htpps
[root@apache-server ~]# firewall-cmd --permanent --add-service=http
[root@apache-server ~]# firewall-cmd --permanent --add-service=https
[root@apache-server ~]# firewall-cmd --reload
[root@apache-server ~]# firewall-cmd --list-all
5.重启服务
6.打开浏览器测试(在浏览器中输入测试端ip,看到apache已经开启)
查看apache的帮助手册
7.在默认发布目录:/var/www/html下建立发布文件
[root@apache-server ~]# cd /var/www/html/
[root@apache-server html]# vim index.html
写入:
测试:在浏览器中输入测试端ip,可以看到相应的文件内容
三、apache的基本信息修改
apache的基础信息
主配置目录: /etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目录:/etc/http/conf.d
子配置文件:/etc/httpd/conf.d/*.conf
默认发布目录:/var/www/html
默认发布文件:index.html
默认监听端口:80
默认安全上下文:httpd_sys_content_t
程序开启默认用户: apache
错误日志 :/var/httpd/log/error_log
一、修改默认端口
1.查看默认监听端口是80
2.编辑主配置文件
默认端口80
将默认端口改为8080
重新启动服务
查看端口修改成功
3.打开浏览器进行访问(修改的8080端口无法访问)
4.在火墙中允许8080端口
图形方式添加
列出火墙信息,8080端口已经添加成功
5.再次测试:8080端口可以进行访问
6.再次编辑主配置文件,修改端口为6666
7.当重新启动服务时失败,查看selinux状态,如果为强制模式,则重启服务会失败
8.当将selinux改为警告模式下则重启成功
9.这是因为selinux只允许几个特定的端口
10.给selinux添加6666端口
11.火墙中允许6666端口
12.重新启动服务测试:6666端口可以访问文件:
13.测试:6666端口可以访问文件
二、修改默认发布文件
在做实验先把端口修改成默认端口80,方便测试
1.在默认发布目录下建立一个新的发布文件
[root@apache-server html]# vim westos.html
2.重新启动服务
3.测试 ;(发现默认发布文件没有改变)
只有在ip后添加新发布的文件名才能看到相应内容
4.编辑主配置文件
[root@apache-server html]# vim /etc/httpd/conf/httpd.conf
在164 行将westos.html 写在前面
5.重新启动服务
[root@apache-server html]# systemctl restart httpd.service
6.测试 (默认发布文件修改成功)
7.如果将westo.html删除掉,则默认发布文件又是index.html
三、修改默认发布目录
1.新建一个目录
[root@apache-server html]# mkdir /westos/web/html -p
2.新建目录下编辑一个发布文件
[root@apache-server html]# vim /westos/web/html/westos.html
3.编辑主配置文件
[root@apache-server html]# vim /etc/httpd/conf/httpd.conf
修改默认发布文件
修改默认发布目录,给默认发布目录提供所有权限
4.测试:不成功
查看报错,是由于selinux的安全上下文的问题
5.修改安全上下文为httpd_sys_content_t
[root@apache-server html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
[root@apache-server html]# restorecon -RvvF /westos/
重新启动服务
[root@apache-server html]# systemctl restart httpd.service
6.测试成功:
四、apache的虚拟主机
虚拟主机的配置:
1.清空之前的实验环境
[root@apache-server ~]# rm -fr /etc/httpd/conf/httpd.conf
[root@apache-server ~]# yum reinstall httpd -y
2.在测试端主机做好本地解析
3测试:此时输入三个不同的网址,看到的文件都相同
4.在/var/www目录下建立指定访问news和music的访问目录
[root@apache-server ~]# cd /var/www/
[root@apache-server www]# mkdir westos.com/news/html -p
[root@apache-server www]# mkdir westos.com/music/html -p
5.在访问目录下写入默认发布文件
[root@apache-server www]# vim westos.com/news/html/index.html
[root@apache-server www]# vim westos.com/music/html/index.html
6.创建编辑子配置文件
(1)编辑默认站点的子配置文件
[root@apache-server www]# cd /etc/httpd/conf.d/
[root@apache-server conf.d]# vim a_default.conf 编辑
写入
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
(2)编辑news.westos.com站点的子配置文件
[root@apache-server conf.d]# vim news.conf 编辑
写入
<VirtualHost *:80>
ServerName news.westos.com 访问域名
DocumentRoot /var/www/westos.com/news/html 访问域名时读取的发布文件
CustomLog logs/news.log combined logs相当于 /etc/httpd/logs
</VirtualHost>
<Directory "/var/www/westos.com/news/html"> 子配置文件的默认目录,给该目录权限才可以访问
Require all granted
</Directory>
(3)编辑music.westos.com站点的子配置文件
[root@apache-server conf.d]# cp news.conf music.conf
[root@apache-server conf.d]# vim music.conf 编辑
写入
<VirtualHost *:80>
ServerName music.westos.com
DocumentRoot /var/www/westos.com/music/html
CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/westos.com/music/html">
Require all granted
</Directory>
7.重新启动服务
[root@apache-server conf.d]# systemctl restart httpd.service
8.测试 在真实主机打开网页测试
输入www.westos.com
hello westos
输入news.westos.com
news's page
输入music.westos.com
music's page
五、apache的访问控制
基于ip的访问控制
添加禁止访问的ip
指定ip访问 不允许ip为172.25.254.3的客户端访问,其他用户可以访问
[root@apache-server conf.d]# vim a_default.conf
写入
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
Order Allow,Deny
Allow from all
Deny from 172.25.254.3
</Directory>
[root@apache-server conf.d]# systemctl restart httpd.service 重新启动服务
测试:主机172.25.254.3 访问失败
主机172.25.254.103 访问成功
添加允许访问的ip
指定ip为172.25.254.3客户端可以访问,其他用户不能访问
[root@apache-server conf.d]# vim a_default.conf
顺序访问Deny和Allow(Allow会覆盖掉Deny的设置)只允许ip为172.25.254.3的主机访问
写入:
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
Order Deny,Allow
Allow from 172.25.254.3
Deny from all
</Directory>
[root@apache-server conf.d]# systemctl restart httpd.service 重新启动服务
测试: 主机172.25.254.3 访问成功
主机172.25.254.103 访问失败
基于用户的访问控制
有用户身份的可以访问,没有的不可以访问
1.新建用户admin
[root@apache-server conf.d]# htpasswd -cm http_userlist admin
"-cm中的c是覆盖性创建"
新建一个用户admin1时,如果用-c参数,则会覆盖掉admin用户
所以在已有用户前提下,创建新用户不要使用-c参数
2.在配置文件中添加用户认证
[root@apache-server conf.d]# vim a_default.conf 编辑
写入:
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
AuthUserFile /etc/httpd/conf.d/http_userlist 创建用户的文件
AuthName "Please input username and password !!"
AuthType basic 认证方式为最基本认证
Require valid-user 对文件下的所有用户有效
</Directory>
[root@apache-server conf.d]# systemctl restart httpd.service 重新启动服务
测试:
在浏览器中输入服务端ip,则提示要输入用户认证信息
登陆用户 admin 密码ls
认证成功
六、apache支持的语言
1.html 上述为html的例子
2.php
1> 编写php测试页
[root@apache-server html]# vim index.php
写入
<?php
phpinfo( );
?>
2.安装php
[root@apache-server html]# yum install php -y
此时可以看到子配置目录下有php.conf这个文件
[root@apache-server html]# systemctl restart httpd.service 重新启动服务
测试:输入172.25.254.103/index.php
3.cgi
1.在/var/www/cgi-bin/目录下建立并编辑访问文件
2.给文件添加可执行的权限
3测试:
1.在其他目录下新建并编辑访问文件
2.测试:测试的时候脚本不执行
3.编辑配置文件
[root@apache-server html]# cd /etc/httpd/conf.d/
[root@apache-server conf.d]# vim a_default.conf
写入:
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
[root@apache-server conf.d]# systemctl restart httpd.service
测试:172.25.254.103/cgi/index.cgi
这是因为安全上下问的问题
修改安全上下文和/var/www/cgi-bin/的安全上下文一致
给文件添加可执行权限
重新启动服务
测试:172.25.254.103/cgi/index.cgi
4.python
1.将写好的python脚本放在/var/www/cgi-bin/目录下
2.查看python脚本内容
3.给该文件添加执行权限
4.安装mod_wsgi
5.进入子配置目录,编辑子配置文件webapp.conf
5.在测试端主机添加相应的解析信息
6.重新启动服务
测试:在测试端主机输入webapp.westos.com,会显示脚本执行结果
七、HTTPS
https概念
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是 SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。
HTTPS和HTTP的区别
一、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
二、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
三、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
https的实现
1.安装mod_ssl软件
[root@apache-server html]# yum install mod_ssl -y
此时子配置目录下会有ssl.conf文件
3.重启服务
4.测试:在浏览器中输入的ip前加https://,可以实现.
5.获得加密key 点Advanced 点击Add Exception
点Get Certificate 结束后 点 Confirm Security Exception
此时,再次输入测试ip,就会自动转入加密形式
但是,点开这个锁,会发现这个加密key是由apache提供的,这样不安全
删除加密key
点击浏览器右上角三横杠 点开后点击齿轮
进入改界面点击 View Certificates
选中刚才获得的加密key,点delete删除掉
自主提供加密key
1.安装 crypto-utils
2.进入目录 /etc/httpd/conf.d下,生成加密文件
执行genkey命令后,我们需要操作几步来获取证书:
生成随机数时, 需要敲击我们在虚拟机敲击键盘,使其进行下去
3.查看生成的加密key信息
4.编辑子配置目录下的ssl.conf文件
[root@apache-server conf.d]# vim ssl.conf
将加密key信息写入(将原有的可以先注释掉)
5.重启服务[root@apache-server conf.d]# systemctl restart httpd.service
6.测试 并添加https://172.25.254.103
重新获取加密key
此时查看到获取的加密key就是我们自己提供的
普通访问自动转换加密访问方式
1.我们发现,在输入一个网址的时候,必须在网址前添加http://才能转换到加密访问的方式
2.实现自动转化,设定https虚拟主机并设定网页重写
1.进入/var/www/westos.com目录下,创建目录/login/html
[root@apache-server westos.com]# mkdir login
[root@apache-server westos.com]# mkdir login/html
2.在新建目录下添加访问文件
编辑[root@apache-server westos.com]# vim login/html/index.html
写入<h1>login's page</h1>
3.编辑主配置文件
[root@apache-server conf.d]# vim login.conf
<VirtualHost *:443>
SSLEngine on
ServerName login.westos.com
DocumentRoot /var/www/westos.com/login/html
CustomLog logs/login.log combined
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory "/var/www/westos.com/login/html">
Require all granted
</Directory>
<VirtualHost *:80>
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
^(/.*)$ 客户在浏览器地址栏中输入的所以字符
https:// 强制客户加密访问
%{HTTP_HOST} 客户请求主机
$1 $1表示 ^(/.*)$的值
[redirect=301] 永久重写 302临时转换
重新启动服务
[root@apache-server conf.d]# systemctl restart httpd.service
测试:
在测试端的主机添加相应的解析信息
编辑[root@foundation3 ~]# vim /etc/hosts
清空浏览器缓存
ctrl+shift+delete
输入 login.westos.com
直接调转至 https://login.westos.com
八、搭建论坛
1.编写子配置文件bbs.conf
[root@apache-server conf.d]# cp music.conf bbs.conf
[root@apache-server conf.d]# vim bbs.conf
在命令模式下:%s/music/bbs/g 将全文的music都转换成bbs
2.创建发布目录
[root@apache-server conf.d]# mkdir /var/www/westos.com/bbs/html -p
3.将主机上的搭建论坛的安装包传送到服务端的发布目录下
4.将安装包解压
[root@apache-server html]# unzip Discuz_X3.2_SC_UTF8.zip
解压完成之后会出现三个文件
5.可以进入readme/,查看readme.txt
[root@apache-server html]# cd readme/
[root@apache-server readme]# less readme.txt
可以看到安装的相应操作步骤
接下来提示步骤进行配置:
(1)进入/var/www/westos.com/bbs/html/upload
(2)给config和data目录添加权限(注意要加-R参数,表示递归)
[root@apache-server upload]# chmod -R 777 config
[root@apache-server upload]# chmod -R 777 data
(3)给uc_client 和 uc_server 目录添加权限
[root@apache-server upload]# chmod 777 uc_client uc_server -R
(4)重新启动服务
[root@apache-server upload]# systemctl restart httpd.service
(5)在服务端将selinux的状态修改为警告模式
(6)安装mariadb-server 和 php-mysql 安装数据库和数据库插件
[root@apache-server html]# yum install mariadb-server.x86_64 php-mysql.x86_64 -y
(7)开启mariadb,并设为开机自启动
(8)编辑配置文件关闭数据库在网络中对外的接口
[root@apache-server html]# vim /etc/my.cnf
(9)重启mariadb,接口关闭成功
[root@apache-server html]# systemctl restart mariadb
[root@apache-server html]# netstat -atnlupe | grep mysql
(10)数据库安全初始化
[root@apache-server html]# mysql_secure_installation 数据库初始化
(11)重新启动服务
[root@apache-server html]# systemctl restart httpd.service
(12)测试:
真实主机编辑写解析
编辑[root@foundation3 Desktop]# vim /etc/hosts
打开浏览器输入bbs.westos.com/upload/install进入安装向导
输入数据库密码,并设置管理员密码,点击下一步
完成安装,点击访问
论坛搭建成功
可以在右上角输入管理员用户名和信息进行登录