Apache的管理及优化web
一、Apache的作用
1.环境配置
hostnamectl set-hostname westosa.westos.org #修改虚拟机名称
cd /etc/sysconfig/network-scripts/
vim /etc/sysconfig/network-scripts/ifcfg-ens3 #配置网卡
nmcli connection reload #重启网卡服务
nmcli connection up System\ ens3
cd /etc/yum.repos.d/
vim westos.repo #配置软件仓库
init 3 #开启无图形
ssh -root@172.25.254.119 #主机连接配置好的172.25.254.119虚拟机
二、Apache的安装
dnf list httpd #查看httpd服务
dnf install httpd.x86_64 -y #安装httpd服务
三、Apache的启用
systemctl enable --now httpd #开启httpd服务
systemctl status httpd #查看httpd服务
firewall-cmd --permanent --add-service=http #将http 加入防火墙白名单
firewall-cmd --reload #重启防火墙
firewall-cmd --list-all #查看防火墙允许的服务
dnf install httpd-manual -y #安装apache手册
systemctl restart httpd #重启httpd服务
在网页上浏览172.25.254.119成功共享的服务
四、Apache的基本信息
服务名称:httpd
配置文件: /etc/httpd/conf/httpd.conf ##主配置文件
/etc/httpd/conf.d/*.conf ##子配置文件
默认发布目录: /var/www/html
默认发布文件: index.html
默认端口:80 #http
443 #https
用户: apache
日志: /etc/httpd/logs
五、Apache的基本配置
1.Apache的端口修改
cd /var/www/html/
vim index.html #编写index.html文件
cat index.html #查看内容
vim /etc/httpd/conf/httpd.conf #修改端口为8080
systemctl restart httpd #重启httpd服务
netstat -antlupe | grep httpd #查看端口
firewall-cmd --permanent --add-port=8080/tcp #端口加入防火墙
firewall-cmd --reload # 重启防火墙
在浏览器访问
2.修改默认发布文件
vim westos.html #编写westos.html文件
cat westos.html #查看内容
vim /etc/httpd/conf/httpd.conf #修改默认发布文件
systemctl restart httpd #重启服务
在浏览器访问
3.修改发布目录
mkdir -p /var/www/westos/
cd /var/www/westos/
vim index.html #在/var/www/westos/目录下编写 westos.html文件
vim /etc/httpd/conf/httpd.conf #修改默认发布目录为/var/www/westos/
systemctl restart httpd #重启服务
mv /var/www/westos /var/ #移动/var/www/westos目录到/var目录下 安全上下级不会因为目录的移动而改变,在那个目录下创建的安全上下级跟随那个目录
systemctl restart httpd
ls -Z /var/westos/ #查看目录安全上下级
六、Apache的访问控制
1.基于用户ip的访问控制
cd /var/www/html
mkdir westos/ #创建在/var/www/html下的westos目录
cd westos/
vim index.html #编写html格式文件
cat index.html #查看内容
vim /etc/httpd/conf/httpd.conf #修改黑名单ip为172.25.254.119的不能访问
systemctl restart httpd #重启httpd服务
curl http://172.25.254.119/westos/index.html #查看能否访问
curl http://172.25.254.119/westos/index.html #在ip为172.25.254.19的机器上查看能否访问
vim /etc/httpd/conf/httpd.conf #修改白名单只有172.25.254.19可以访问
systemctl restart httpd #重启服务
curl http://172.25.254.119/westos/index.html #在ip为172.25.254.19的机器上查看能否访问
白名单设定后
只有白名单可访问。
2.生成认证文件 .htpasswd 访问控制
cd /etc/httpd/
htpasswd -cm .htpasswd admin #生成认证文件
cat .htpasswd #查看文件内容
htpasswd -m .htpasswd jwl #添加认证用户
cat .htpasswd
vim /etc/httpd/conf/httpd.conf #修改为只有admin用户可以访问
systemctl restart httpd #重启服务
在浏览器访问,只有输入admin用户密码才可以访问
vim /etc/httpd/conf/httpd.conf #修改为认证文件里存在的所有用户都可以访问
systemctl restart httpd #重启服务
在浏览器访问,任何加密用户都可以访问
七、Apache的虚拟主机
在虚拟机westosa上 ip:172.25.254.119
mkdir /var/www/vhost/{linux,java,python} -p #创建3个目录linux、java、python
vim /var/www/vhost/linux/index.html #在linux目录下编写index.html
vim /var/www/vhost/java/index.html #在java目录下编写index.html
vim /var/www/vhost/python/index.html #在python目录下编写index.html
cat /var/www/vhost/python/index.html #查看文件内容
cat /var/www/vhost/java/index.html #查看文件内容
cat /var/www/vhost/linux/index.html #查看文件内容
cd /etc/httpd/conf.d/
vim vhost.conf #配置
<VirtualHost *:80>
ServerName linux.westos.org
DocumentRoot /var/www/vhost/linux
CustomLog logs/linux.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName java.westos.org
DocumentRoot /var/www/vhost/java
CustomLog logs/java.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName python.westos.org
DocumentRoot /var/www/vhost/python
CustomLog logs/python.log combined
</VirtualHost>
systemctl restart httpd #重启httpd服务
测试:
在主机ip:172.25.254.19
vim /etc/hosts #配置172.25.254.119 www.westos.org python.westos.org linux.westos.org java.westos.org
cat /etc/hosts #查看内容
浏览器输入:www.westos.org
浏览器输入:linux.westos.org
浏览器输入:java.westos.org
浏览器输入:python.westos.org
八、Apache的语言支持
1.php
vim /var/www/html/index.php #在/var/www/html目录下编写index.php文件
配置内容:
<?php
phpinfo();
?>
dnf install php -y #安装php
systemctl restart httpd #重启httpd服务
firefox http://192.168.0.11/index.php
2.cgi
mkdir /var/www/html/cgidir
vim /var/www/html/cgidir/index.cgi #在/var/www/html目录下编写index.cgi文件
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
vim /etc/httpd/conf.d/vhost.conf #修改配置文件
配置内容
<Directory "/var/www/html/cgidir">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
firefox http://192.168.0.11/cgidir/index.cgi
3.wsgi
vim /var/www/html/wsgi/index.wsgi #在/var/www/html目录下编写index.wsgi文件
def application(env, westos):
westos(‘200 ok’,[(‘Content-Type’, ‘text/html’)])
return [b’hello westos ahhahahahah!’]
dnf install python3-mod_wsgi
systemctl restart httpd #重启httpd服务
vim /etc/httpd/conf.d/vhost #修改配置文件
<VirtualHost *:80>
ServerName wsgi.westos.org
WSGIScriptAlias / /var/www/html/wsgi/index.wsgi
</VirtualHost><VirtualHost *:80>
ServerName wsgi.westos.org
WSGIScriptAlias / /var/www/html/index.wsgi
</VirtualHost>
dnf inastall python3-mod_wsgi #安装wsgi相关软件
systemctl restart httpd #重启httpd服务
测试:
cd /var/www/html
vim index.php #在/var/www/html目录下编写index.php文件
vim index.cgi #在/var/www/html目录下编写index.cgi文件
vim index.wsgi #在/var/www/html目录下编写index.wsgi文件
dnf search php #搜索php相关软件
dnf install php.x86_64 -y #安装php
dnf search wsgi #搜索wsgi相关软件
dnf install python3-mod_wsgi.x86_64 -y #安装wsgi相关软件
cd /etc/httpd/conf.d/
vim /etc/httpd/conf.d/vhost.conf #修改配置文件
dnf install php.x86_64 -y #安装php
dnf search wsgi #搜索wsgi相关软件
dnf install python3-mod_wsgi.x86_64 -y #安装wsgi相关软件
chmod +x index.cgi #给予index.cgi可执行权限
systemctl restart httpd #重启httpd服务
ls -Rl index.cgi #查看权限
setenforce 0 #
getenforce #
systemctl restart httpd #重启httpd服务
在主机172.25.254.19上
vim /etc/hosts #配置主机解析
cat /etc/hosts #查看配置内容
浏览器输入:172.25.254.119/index.php
浏览器输入:172.25.254.119/index.cgi
浏览器输入:wsgi.westos.org
九、Apache的加密访问
1.安装加密插件
cd /etc/pki/
cd tls
cd certs/
ls /etc/pki/tls/private/ #查看目录内容
dnf install mod_ssl -y #安装加密插件
systemctl restart httpd #重启httpd服务
ls /etc/pki/tls/certs/ #查看加密插件
systemctl restart httpd #重启httpd服务
firewall-cmd --permanent --add-service=https #把https加入防火墙白名单
firewall-cmd --reload #重启防火墙
2.生成证书
openssl req --newkey rsa:2048 -nodes -sha256 -keyout /etc/httpd/westos.org.key -x509 -days 365 -out /etc/httpd/westos.org.crt #生成证书
Generating a RSA private key
...................................................+++++
.............................+++++
writing new private key to '/etc/httpd/westos.org.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:www.westos.org
Email Address []:root@westos.org
cd /etc/httpd/conf.d/
vim ssl.conf #修改
systemctl restart httpd #重启httpd服务
cd /var/www/vhost/
mkdir login #创建login目录
cd login/
vim index.html #在login目录下编写index.html文件
vim /etc/httpd/conf.d/vhost.conf #修改配置不加密(http)跳转到加密(https)
systemctl restart httpd #重启httpd服务
vim ssl.conf #修改
index.html文件内容
测试:在主机172.25.254.19上
vim /etc/hosts #配置主机解析
cat /etc/hosts #查看配置内容
浏览器输入:login.westos.org
十、Squid+Apache
1.squid正向代理
实验环境:
单网卡主机设定ip不能上网
双网卡主机设定ip1可以连接单网卡主机,设定ip2可以上网
实验效果
让单网卡主机不能上网但浏览器可以访问互联网页
操作:
在双网卡主机中
dnf install squid -y
vim /etc/squid/squid.conf
59 http_access allow all
65 cache_dir ufs /var/spool/squid 100 16 256
systemctl restart squid
firewall-cmd --permanent --add-port=3128/tcp
firewall-cmd --reload
在单网卡专辑中选择
NetWork Proxy
172.25.254.30 3128
测试:
在单网卡主机中
ping www.baidu.com 不通
在浏览器中访问www.baidu.com可以
2.squid反向代理
实验环境:
172.25.254.20 ##Apache服务器
172.25.254.30 ##squid,没有数据负责缓存
vim /etc/squid/squid.conf
http_port 80 vhost vport ##vhost 支持虚拟域名 vport 支持虚拟端口
#当172.25.254.30的80端口被访问会从172.25.254.20的80端口缓存数据
cache_peer 172.25.254.20 parent 80 0 proxy-only
systemctl restart squid
测试:
firefox http:/172.25.254.30
访问看到的时172.25.254.20上的数据