1、基础知识
主流的一般是apache nginx 公司的网站,其它一些是在上述基础上进行的二次开发。
apache:企业中常用的web服务,用来提供http://(超文本传输协议)
http:超文本传送协议(HyperText Transfer Protocol)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到wel浏览器。:
安装apache软件,就使主机提供超文本传输协议成为web服务器
浏览器默认访问接口80,默认访问目录/var/www/html,默认发布文件index.html
2、apache的安装部署
yum install httpd -y ##安装apache软件
yum install httpd-manual ##安装apache的手册
systemctl start httpd ##开启服务
systemctl enable httpd ##开启自启动服务
firewall-cmd --permanebt --add-service=http ##永久允许http
firewall-cmd --permanent --add-service=https ##永久允许https
firewall-cmd --reload ##火墙重新加载策略
firewall-cmd --list-all ##查看火墙策略
-
安装Apache软件和Apache的手册
-
开启自启动服务
-
火墙永久允许http
-
火墙重新加载策略
cd /var/www/html ##apache的/目录,默认发布目录 vim index.html ##apache的默认发布文件 <h1> hello world </h1> ##发布文件内容,<h1> </h1>表示文字大小
-
在Apache的默认发布目录下编辑内容
-
http://172.25.254.141/manual ##apache手册
添加,往哪个标签添加 ,协议,授权
3、 apache的基础信息
主配置目录: /etc/httpd/conf
主配置文件: /etc/httpd/conf/httpd.conf
子配置目录: /etc/httpd/conf.d/
子配置文件: /etc/httpd/conf.d/*.conf
默认发布目录: /var/www/html
默认发布文件: index.htmml
默认端口: 80
默认安全上下文: http_sys_content_t
程序开启默认用户: apache
apache日志: /etc/httpf/logs/*
-
修改默认端口:
netstat -antlupe | grep httpd ##查看httpd服务默认是80端口 vim /etc/httpd/conf/httpd.conf 42 Listen 8080 ##修改默认端口为8080 firewall-cmd --permanent --add-port=8080/tcp ##火墙允许8080端口通过 firewall-cmd --reload
(1)查看http服务的默认端口
(2)修改默认端口为8080
(3)更改火墙设置
(4)检测:172.25.254.160:8080
当selinux为警告状态时,可以随意修改为自己需要的端口号
当selinux为强制状态时,如果想要修改默认端口为6666,但是查看到的所有端口没有6666,那么做以上操作修改默认端口是不够的,还需要添加端口
setenforce 1 ##设置selinux为强制状态
firewall-cmd --permanent --add-port=6666/tcp ##在火墙策略中加入6666端口
firewall-cmd --reload
semanage port -l | grep httpd ##查看提供httpd服务的端口,没有6666,所以此时不能访问6666
semanage port -a -t http_port_t -p tcp 6666 ##添加6666端口
systemctl restart httpd ##重启http
(5)设置selinux为j警告状态
(6)在火墙策略中加入6666端口
(7)修改默认端口为6666
(8)重启服务后检测:172.25.254.160:6666,此时可以访问
(9)精sellinux改成强制状态
(10)此时重启服务出错
(11)因为查看提供httpd服务的端口,没有6666,所以此时不能访问6666,添加一个6666端口
(12)重启服务后就可以访问了
-
修改默认发布文件:
默认发布文件就是访问Apache时没有指定文件名称时默认访问的文件,这个文件可以指定多个,有访问顺序
实验前先讲默认端口恢复成80 : Listen 80vim /etc/httpd/conf/httpd.conf 164 DirectoryIndex westos.html index.html ##添加默认发布文件是westos.html,这个文件优先级大于index.html cd /var/www/html vim westos.html ##编辑默认发布文件 <h1>hello i am westos.html</h1> systemctl restart httpd
(1)添加默认发布文件是westos.html,这个文件优先级大于index.html
(2)编辑westos默认发布文件
(3)重启服务后检测:
172.25.254.160 可以查看到westos.html
当删除westos.html后172.25.254.160 可以查看到index.html的内容
-
修改默认发布目录
mkdir /westos/web/html -p ##新建目录,用于发布 vim /westos/web/html/westos.html ##在新建目录中新建默认发布文件 westos.html <h1>hello i am westos.html</h1> ##发布文件的内容 vim /etc/httpd/conf/httpd.conf 120 DocumentRoot "/westos/web/html" ##默认发布目录是/westos/web/html 121 <Directory "/westos/web/html"> ##认证, 给此目录授权,让其成为默认发布目录 122 Require all granted 123 </Directory> systemctl restart httpd semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?' ##因为selinux的作用,需要修改安全上下文 restorecon -RvvF /westos/
(1)在新建目录中新建默认发布文件: westos.html
(2)修改默认发布目录是/westos/web/html,并认证给此目录授权。
(3)修改安全上下文
(4)重启服务后检测:172.25.254.160 此时可以查看到westos.html
4、apache的虚拟主机
-
更改客户端解析文件 /etc/hosts/
172.25.254.160 www.westos.com news.westos.com music.westos.com
-
服务端还原实验环境:
rm -fr /etc/httpd/conf/httpd.conf
yum reinstall httpd -y
-
在/var/www/新建虚拟主机路径
mkdir westos.com/news/html -p ##news.westos.com的默认发布目录
mkdir westos.com/music/html -p ##music.westos.com的默认发布目录
-
编辑默认发布文件
vim westos.com/news/html/index.html ##new.westos.com的默认发布文件
vim westos.com/music/html/index.html ##music.westos.com的默认发布文件
-
cd /etc/httpd/conf.d/ ##切换到apache的子配置目录
vim a_default.conf ##新建Apache子配置文件,172.25.254.160的默认发布配置<VirtualHost _default_:80> ##本机默认发布端口为80 DocumentRoot /var/www/html ##发布目录为/var/www/html CustomLog logs/default.log combined ##报错文件是/etc/httpd/logs/default.log ;combined日志类型是混合的 </VirtualHost>
重启服务后检测会看到默认的发布文件的内容
-
vim news.conf ##news.westos的发布配置
<VirtualHost *:80> ##虚拟主机news.westos.com的端口是80 ServerName news.westos.com ##虚拟主机域名 DocumentRoot /var/www/westos.com/news/html ##news.westos.com的发布目录为/var/www/westos.com/westos/news/html CustomLog logs/news.log combined </VirtualHost> <Directory "/var/www/westos.com/news/html"> ##认证,授权 Require all granted ##/var/www/westos.com/news/html下所有文件可以被查看 </Directory>
重启服务后会看到news的默认文件内容
7.vim music.conf ## music.westos的发布配置
cp news.conf music.conf复制news的内容,将所有的news改成music
重启服务后或看到music默认发布文件的内容
5、apache的访问控制
(1)基于ip
vim /etc/httpd/conf.d/a_default.conf
<Directory "var/www/html"> ##当客户端要访问/var/www/html时
Order Allow,Deny ##先读Allow,再读Deny内容,后读取的会覆盖前面的内容
Allow from all ##允许所有用户进行访问
Deny from 172.25.254.60 ##禁止172.25.254.60访问
</Directory>
重启后检测:真机60打开浏览器输入172.25.254.160,不能重看到发布内容
(2)基于用户身份
htpasswd -cm http_userlist admin1 ##创建httpd用户列表http_userlist,列表中添加用户admin1,设置admin的密码
htpasswd -m http_userlist admin2 ##在列表中添加用户admin2,当再次创建用户时,不需要-c,-c表示create,已经创建过就不再需要创建用户信息文件了
cat http_userlist ##查看用户的密码
vim a_default.conf ##编辑默认发布配置文件
<Directory "var/www/html">
AuthUserFile /etc/httpd/conf.d/http_userlist ##只允许http_userlist列表中的用户访问
AuthName "PLEASE input username and password!!" ##用户登陆前可以看见的内容
AuthType basic ##基本认证
Require user admin ##只有admin用户可以通过认证,与下面的设置重复,注释
Require valid-user ##允许所有用户通过认
</Directory>
服务重启后检测:172.25.254.160此时输入正确的用户及密码,可以访问成功
ctrl+shift+delete清空浏览器缓存,便于多次访问测试
检测之后,将内容注释,还原实验环境
6、apache支持的语言
-
html
-
php
(1)yum install php -y ##安装php
(2)vim /var/www/html/index.php 编辑php的默认发布文件<?php phpinfo(); ?>
(3)systemctl restart httpd重启http后,访问172.25.254.160/index.php ,就可以看到php的内容。
-
cgi
(1)在cgi-bin目录下建立一个cgi默认发布文件,并给他一个执行权限
编辑cgi默认发布文件
重启网络后测试 :
(2)新建自定义cgi发布目录mkdir -p /var/www/html/cgi vim /var/www/html/cgi/index.cgi ##新建cgi默认发布文件 #!/usr/bin/perl print "Content-type: text/html\n\n"; ##打印文本 print`date`; ##执行命令date
chmod +x /var/www/html/cgi/index.cgi ##执行权限
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' ##修改安全上下文,这是个执行的文件
restorecon -RvvF /var/www/html/cgi ##重新读取文件/var/www/html/cgi
执行下脚本确保脚本运行正常
vim /etc/httpd/conf.d/a_default.conf ##编辑默认发布目录配置文件
<Directory "/var/www/html/cgi"> ##针对/var/www/html/cgi目录的描述
Options ExecCGI ##执行cgi
AddHandler cgi-script .cgi ##文件类型为cgi-script和.cgi
</Directory>
重启服务后测试:172.25.254.160/cgi/index.cgi
可以查看到脚本运行结果,脚本是显示时间,重复执行,时间在变化。
7、.apache的加密访问
-
yum install mod_ssl -y ##安装加密软件
-
此时可以看见在/etc/httpd/conf.d下有一个ssl.conf文件
-
yum install crypto-utils -y
-
genkey www.westos.com
-
运行完后会产生钥匙
-
vim ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt ##在getenkey命令生成的后面找这个路径 109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##在getenkey命令生成的后面找这个路径
7. 重启服务后测试https://172.25.254.141会发现登录的钥匙是自己的/www.westos.com
8、网页重写
-
添加虚拟主机
在/var/www/westos.com创建 login目录,在login目录下创建html
-
vim login/html/index.html ## 编辑默认发布文件
-
在 /etc/httpd/conf.d/创建login.conf
cp news.conf login.conf 将所有的news变成login
vim login.conf <VirtualHost *:443> ServerName login.westos.com DocumentRoot /var/www/westos.com/login/html CustomLog logs/login.log combined </VirtualHost> <Directory "/var/www/westos.com/login/html"> Require all granted </Directory>
systemctl restart httpd
-
检测:真机 /etc/hosts将解析文件写好
此时可以在浏览器中访问虚拟主机login.westos.com
-
配置网页重写
^(/.*)$ ##客户在浏览器地址栏中输入的所有字符 https:// ##强制客户加密访问 %{HTTP_HOST} ##客户请求主机 $1 ##“$1”表示 ^(/.*)$的值 [redirect=301] ##林时重写 301永久转换
9、wsgi
wsgi是cgi的加密
cd /var/www/cgi-bin/ ##到cgi-bim目录下
rm -rf index.* ##把原来的文件删除
网页搜索172.25.254.250/pub ##在网页上找到webapp.wsgi脚本
wget http://172.25.254.250/pub/materials/webapp.wsgi ##下载脚本到cgi-bin目录下
python webapp.wsgi
chmod +x webapp.wsgi ##给该文件加一个执行权限
yum install mod_wsgi.x86_64 ##安装wsgi软件
systemctl restart httpd.service
cd /etc/httpd/conf.d ## 到conf.d目录下
vim webapp.conf ## 新建一个webapp.conf文件
<VirtualHost *:80>
ServerName webapp.westos.com ##访问时搜索的名字,指向的是WSGIScriptAlias,即/var/www/cgi-bin/webapp.wsgi。
DocumentRoot /var/www/cgi-bin
CustomLog logs/webapp.log combined
WSGIScriptAlias / /var/www/cgi-bin/webapp.wsgi
</VirtualHost>
- 将webapp.wsgi脚本放到 cgi-bim目录下
- 给该文件加一个执行权限
- 安装wsgi软件
- 在conf.d目录下, 新建一个webapp.conf文件。
- 在测试的主机上配置/etc/hosts解析文件
- 重启服务后测试
10、论坛硬盘的安装
-
scp root@172.25.254.60:/home/kiosk/Desktop/ff/* /var/www/html ##下载论坛安装包
cd /etc/httpd/conf.d
cp -p news.conf bbs.conf ##创建bbs.conf
vim bbs.conf ##将所有的news改称bbs<VirtualHost *:80> ServerName bbs.westos.com DocumentRoot /var/www/westos.com/bbs/html CustomLog logs/bbs.log combined </VirtualHost> <Directory "/var/www/westos.com/bbs/html"> Require all granted </Directory>
- mkdir /var/www/westos.com/bbs/html -p ##创建bbs下的html
- cd /var/www/westos.com/bbs/html ##进入到新创建的目录下
- mv /root/Desktop/Discuz_X3.2_SC_UTF8.zip . ##将安装包放在该目录下
- unzip Discuz_X3.2_SC_UTF8.zip ##解压该压缩包
rm -rf Discuz_X3.2_SC_UTF8.zip ##解压后将原来的压缩包删除 - cd readme/ ##可以在该文件下的readme.txt中查看安装方法
- cd upload/ ##因为upload已经在该目录下,所以就发布了
- chmod -R 777 config/
chmod -R 777 data/ ## 给config 和 data 文件一个777的权限
- systemctl restart httpd.service 重启服务后查看
- 测试: 给测试的主机解析文件
这时测试并没有成功,可以看上边的未成功步骤,然后操作
11. setsebool -P httpd_anon_write on ##将http的写的权限打开
setsebool -P httpd_sys_script_anon_write on
12. setenforce 0 ##将sellinux设置成警告状态 - chmod -R 777 uc_client/ ## 给这两个文件执行权限
chmod -R 777 uc_server/
因为该主机上已经安装了数据库,所以不用操作以下步骤,直接安装bbs即可 - yum install mariadb-server -y ##安装数据库
vim /etc/my.cnf
skip-networking=1 ##将数据库的接口关闭
systemctl restart mariadb - netstat -atnlupe | grep mysql ##这时查看所有的mysql接口都关闭
mysql_secure_installation 安全初始化数据库 - yum search php
yum install php-mysql.x86_64 -y - systemctl restart mariadb.service
systemctl restart httpd.service
11、正向代理:通过客户 (翻墙)
翻墙 squid:用另一台主机去访问不能访问的。用主机去访问另一台主机缓存下来的东西
代理端:
-
vim /etc/sysconfig/network-scripts/ifcfg-eth0 ##配置代理端网络
设置网关和DNS ,让其可以上网。DEVICE=eth0 BOOTPROTO=none IPADDR=172.25.254.170 NETMASK=255.255.255.0 GATEWAY=172.25.254.60 DNS1=114.114.114.114 ONBOOT=yes TYPE=Ethernet USERCTL=yes PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=1
- systemctl restart network ##重启网络后
route -n ## 查看网关 - ping www.baidu.com ##此时可以ping通百度
-
yum install squid -y ##安装squid
- vim /etc/squid/squid.conf ## 修改squid的配置文件
56 http_access allow all ##允许所有人
62 cache_dir ufs /var/spool/squid 100 16 256 - systemctl stop firewalld.service ## 关掉火墙
- systemctl start squid ## 开启squid
ls /var/spool/squid/ ## 此时可以查看到16个端口
测试端:ping www.baidu.com 是ping不通的
这时打开测试端的浏览器,Edit -> Preferences -> Advanced ->Network -> Settings -> 写入ip和端口 Use this proxy… -> ok 就可以了
12、反向代理:通过服务器
-
在没有apache的真机:
查看squid.conf用法时,man 5 squid.conf是查看不到的,可以在/usr/share/doc/squid-3.3.8/aquid.conf.documented下查看 -
vim /etc/squid/squid.conf
59 http_port 80 vhost vport
60 cache_peer 172.25.254.106 parent 80 0 proxy-only -
systemctl restart squid.service ##重启服务后可以查看
-
在测试端将解析文件写上 /etc/hosts
172.25.254.170 www.westos.com news.westos.com music.westos.com login.westos.com webapp.westos.com bbs.westos.com
在浏览器上写入ip:172.25.254.170就可以看到160上的内容
5. 轮循:
在没有apache的真机:
vim /etc/squid/squid.conf
59 http_port 80 vhost vport
60 cache_peer 172.25.254.106 parent 80 0 proxy-only name=web1 round-robin weight=2
61 cache_peer 172.25.254.100 parent 80 0 proxy-only name=web2 round-robin
62 cache_peer_domain web1 web2 www.westos.com
systemctl restart squid.service ##重启服务后可以查看
测试:在浏览器上写入ip:172.25.254.206就可以看到106上的内容刷新两次后才可看到100上的内容
yum install elinks 安装文本浏览器
elinks http:172.25.254.206