前言
Web网络服务
Web网络服务,一般是指允许用户通过浏览器访问到其中各种资源的服务。比如:百度就是个web网站
Web网络服务是一种被动访问的服务程序,当接入到互联网中的用户主机发出请求后,Web服务才会响应并通过HTTP或HTTPS把请求的内容回传给用户。示意图如下:
目前提供Web服务的程序有:IIS、Apache、Ngnix等。
iis
IIS(Internet Information Services):互联网信息服务,是Windows系统中默认的Web服务程序。
它是一款带图形化界面的网站管理工具,不仅提供Web网站服务,还可以提供FTP、SMTP等服务,用于windows
Apache
Apache历史:
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物。
它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用以及它的可移植性等方面。
Apache的诞生极富有戏剧性。当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。
特点:
Apache的特点:简单、速度快、性能稳定,并可做代理服务器来使用。而且跨平台、安全性高、API扩展简单可靠。
Apache服务程序可以运行在Linux、UNIX、 Windows系统中,支持基于IP、域名及端口号的虚拟主机功能,支持多种认证方式,集成有代理服务器模块、安全Socket层(SSL),能够实时监视服务状态与定制日志消息,有着各类丰富的模块支持。
Nginx
2004年,为俄罗斯知名门户站点开发的Web服务程序Nginx横空出世。它作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场。
它因系统资源消耗低、并发能力强的特点,在国内受到诸如新浪、腾讯、网易等门户网站的青睐。
环境
[root@aubin date]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
Apache的安装和配置
Apache的安装
列出所有已经安装的包
yum list installed
查看httpd软件是否安装,更新
yum info httpd (rpm -q httpd 也可以查看是否安装)
[root@aubin /]# yum info httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.ustc.edu.cn
已安装的软件包
名称 :httpd
架构 :x86_64
版本 :2.4.6
发布 :97.el7.centos
大小 :9.4 M
源 :installed
来自源:updates
简介 : Apache HTTP Server
网址 :http://httpd.apache.org/
协议 : ASL 2.0
描述 : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
启动httpd服务,并加入启动项
systemctl start httpd
systemctl enable httpd
查看服务器httpd状态
systemctl status httpd
若打开本地的火狐浏览器,地址栏输入127.0.0.1,出现以下窗口,说明apache部署成功
Apache的配置
修改文件/etc/hosts,添加ip和主机名
[root@aubin aubin]# vim /etc/hosts
[root@aubin aubin]# echo "192.168.10.150 Apache" >> /etc/hosts
[root@aubin aubin]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.150 Apache
防火墙的配置,打开HTTP的端口80和HTTPS的端口443,并立即生效
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload 让配置的策略立即生效
查看httpd的版本信息及状态
httpd -v
systemctl status httpd
文件配置
用途 | 文件 |
---|---|
服务目录 | /etc/httpd |
主配置文件 | /etc/httpd/conf/httpd.conf |
网站数据目录 | /var/www/html |
访问日志 | /var/log/httpd/access_log |
错误日志 | /var/log/httpd/error_log |
httpd.conf的参数说明
参数 | 用途 |
---|---|
ServerRoot | 服务目录 |
ServerAdmin | 管理员邮箱 |
User | 运行服务的用户 |
Group | 运行服务的用户组 |
ServerName | 网站服务器的域名 |
DocumentRoot | 网站数据目录 |
Directory | 网站数据目录的权限 |
Listen | 监听的IP地址与端口号 |
DirectoryIndex | 默认的索引页页面 |
ErrorLog | 错误日志文件 |
CustomLog | 访问日志文件 |
Timeout | 网页超时时间,默认为 300 秒 |
配置httpd.conf
cat /etc/httpd/conf/httpd.conf
默认web网站内容存放地址,默认该目录为空,向目录中创建index.html文件,并通过浏览器进行查看。
注:命令行下:set number 显示行号
31 ServerRoot "/etc/httpd" #存放配置文件的目录
42 Listen 80 #Apache服务监听端口
66 User apache #子进程的用户
67 Group apache #子进程的组
86 ServerAdmin root@localhost #设置管理员邮箱
122 DocumentRoot "/var/www/html" #网站家目录
设置DocumentRoot指定目录的属性
131 <Directory "/var/www/html"> #网站容器开始标识
144 Options Indexes FollowSymLinks #找不到主页时,以目录的方式呈现,允许链接到网站根目录以外
151 AllowOverride None #none不使用 .htaccess控制,all访问
156 Require all granted #granted表示运行所有访问,denied表示拒绝所有访问
157 </Directory> 容器结束
164 DirectoryIndex index.html #定义主业文件,当访问到网站目录时如果有定义的主业文件,网站会自动访问
316 AddDefaultCharset UTF-8 #字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
ErrorLog "logs/error_log"
实验
新建/var/www/html目录下index.html文件,写入内容
[root@aubin aubin]# vim /var/www/html/index.html
[root@aubin aubin]# cat /var/www/html/index.html
hello,world
通过火狐,在地址栏输入自己的虚拟机ip 192.168.10.150,可查看刚刚配置的文件
自己修改网站目录为/website,需要修改 DocumentRoot "/website" 和<Directory "/website">
将/var/www/html/index.html复制到 根目录/website下,重启httpd服务,浏览器输入ip
然后查看显示httpd默认界面,再ip后面加上index.html显示错误,原因是权限不足,关系到SElinux,得将其关闭
Linux系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
SELinux域对服务程序的功能进行限制,可以确保服务程序做不了出格的事情。
SELinux上下文对文件资源的访问限制,确保文件资源 只能被其所属的服务程序进行访问。
开启SELinux后,这样就等于开启了系统双保险,系统内的服务程序只能规规矩矩地拿到自己所应该获取的资源,
这样即便黑客入侵了系 统,也无法利用系统内的服务程序进行越权操作。
参数:
enforcing 强制启用安全策略模式,将拦截服务的不合法请求
permissive 遇到服务越权访问时,只发出警告而不强制拦截
disabled 对于越权的行为不警告也不拦截
SELinux设置
配置文件对应为:/etc/selinux/config
修改SELINUX=enforcing 为SELINUX=disabled 永久禁止启动SElinux,重启生效
setenforce 0 临时禁止启动SElinux,而数字换成1就是临时启动
getenforce 查看SElinux的状态
Permissive
再次访问192.168.10.150 ,成功
Apache配置虚拟主机
前言
>如果每台服务器上只能运行一个网站,那些人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用,这显然也会造成硬件资源的浪费。 为此在虚拟专用服务器(VPS:Virtual Private Server)和云计算技术诞生以前,IDC服务供应商为了更充分利用服务器资源和减低草根站长的购买门槛,都启用了虚拟主机功能。利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。 虚拟主机功能也有明显的缺点,它无法像目前的云主机技术那样实现硬件资源的隔离,这些虚拟主机共同使用物理服务器的硬件资源,IDC供应商只能限制硬盘的使用空间大小,因此同一台物理主机上的不同用户的虚拟主机可能会相互影响。但是出于成本考虑,目前还是有部分个人站长采用虚拟主机的方式来部署网站。Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术。
基于IP
如果一台服务器有多个IP地址,每个IP与服务器上部署的每个网站一一对应, 这样当用户请求访问不同的IP地址时,会访问到不同网站的页面资源。
这种方式每个网站都有一个独立的IP地址,利于搜索引擎SEO优化,因此这种方式提供虚拟网站主机功能最常见且受草根站长的欢迎。
nmtui命令配置多个窗口
[root@aubin aubin]# nmtui
[root@aubin aubin]# systemctl restart network #重启网络
[root@aubin aubin]# ip addr #可以看到刚才配置的IP,并能在虚拟机或宿主机上能ping通刚才配置的每个IP。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:cb:c6:a7 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.150/24 brd 192.168.10.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.10.151/24 brd 192.168.10.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.10.152/24 brd 192.168.10.255 scope global secondary noprefixroute ens33
valid_lft forever preferred_lft forever
然后通过windows本地机ping 192.168.10.15(0~2),三个ip都能通
实验
创建子网站1,2,并写入index.html文件[root@aubin aubin]# mkdir -p /website/1
[root@aubin aubin]# mkdir -p /website/2
[root@aubin aubin]# echo "192.168.10.151" > /website/1/index.html
[root@aubin aubin]# echo "192.168.10.152" > /website/2/index.html
[root@aubin aubin]# ls /website
1 2 index.html
[root@aubin aubin]# cat /website/1/index.html
192.168.10.151
[root@aubin aubin]# cat /website/2/index.html
192.168.10.152
配置Apache
配置主配置文件/etc/httpd/conf/httpd.conf
向文件中分别加入两次以下配置
<VirtualHost 192.168.10.151>
DocumentRoot /website/1
ServerName website1
<Directory /website/1>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
重启httpd服务
[root@aubin aubin]# systemctl restart httpd
[root@aubin aubin]# tree /website/
/website/
├── 1
│ └── index.html
├── 2
│ └── index.html
└── index.html
2 directories, 3 files
[root@aubin aubin]# cat /website/1/index.html
192.168.10.151
[root@aubin aubin]# cat /website/2/index.html
192.168.10.151
打开火狐输入那两个子网站的ip(这里用的是浏览器内容字符化curl)
[root@aubin aubin]# curl 192.168.10.151
192.168.10.151
[root@aubin aubin]# curl 192.168.10.152
192.168.10.152
实验成功
基于端口,基于域名
看参考文档参考文档
https://www.cnblogs.com/heimatengyun/p/12550272.html
https://www.cnblogs.com/heimatengyun/p/12564268.html
https://www.cnblogs.com/VseYoung/p/10018317.html