web服务介绍

Nginxe
    是一款高性能轻量级的 Web 服务器/反向代理服务器及邮件服务器,工作在应用层和传输层负载均衡器,支持单机5万个并发,用C编写,占有内存少.并发能力强,配置简单;内部直接支持Rails 和 PHP
    
OpenRestye
    是一个基于Nginx 与 Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。目标是让 Web 服务直接跑在 Nginx服务内部,充分利用Nginx的非阻塞I/O模型,单机支持10到100万并发,甚至对远程后端都进行一致的高性能响应

Tenginee
    是由淘宝网发起的Web 服务器项目。它在 Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性
    
Apachee
    是Apache软件基金会的一个开源的web服务器,由于其多平台和安全性被广泛使用,是世界使用排名第一的 Web 服务器软件。它快速、可靠并性能稳定且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中
    
Tomcat
    是Apache软件基金会一个免费开源的 Web应用服务,属于轻量级应用服务,是开发和调试JSP程序的首选

llS
    是一种Web服务组件,用于网页浏览,是由微软公司提供的基于运行MicrosoftWindows的互联网基本服务,安全性差
    
nginx 与apache对比
    nginx比 apache占用内存及资源少.nginx社区活跃模块出品迅速,apache模块超多,超级稳定;Apache是同步多进程模型,一个连接对应一个进程,而Nginx是异步的.多个连接(万级别)可以对应一个进程。

apache有3种工作模式

perfork,worker,event模式(多进程处理)

perfork(多进程模型):

每个子进程只有一个线程,一个进程响应一个用户请求,并发使用多个进程实现,进程相对占用资源,消耗大量内存,不擅长处理高并发的场景

worker(多线程模型):
            多进程和多线程的混合,一个进程生成多个线程,一个线程响应一个用户请求;并发使用多个线程实现:n进程,n*m个线程
            在高并发的场景下会比prefork有更多可用的线程,表现会更优秀一些,在使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等待到超时才会被释放,资源浪费

event(线程事件)模型):
    一个线程响应多个用户请求,基于事件驱动机制来维持多个用户请求
    解决了keep-alive长连接的时候占用线程资源被浪费的问题,增强了在高并发场景下的请求处理。在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放

NGINX中支持的并发模型(多进程)


select: 
    IO多路复用、标准并发模型。在编译nginx时指定--with-select_module,select模块将被自动编译
poll:e
    lO多路复用、标准并发模型。与select类似,在编译nginx时指定--with-poll_module,poll模块将被自动编译
epoll: 
    IO多路复用、高效并发模型,可在Linux2.6+及以上内核可以使用kqueue:e
IO多路复用、高效并发模型,可在 FreeBSD 4.1+,OpenBSD 2.9+,NetBSD 2.0,MacOS X平台中使用
/dev/poll:
    高效并发模型,可在Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+, andTru64 UNIX 5.1A+平台使用

Nginx 如何实现高并发:
        异步非阻塞的事件处理,比如epoll,对于Nginx来讲,一个进程只有一个主线程,通过异步非阻塞的事件处理机制,实现了循环处理多个准备好的事件,从而实现轻量级和高并发。

https://news.netcraft.com/archives/category/web-server-survey/

编译nginx

#安装nginx 依赖环境

yum -y install pcre-devel zlib-devel openssl-devel elinks geoip-devel
#创建nginx服务启动用户
[root@localhost ~]# useradd -M -s /sbin/nologin nginx    #不创建家目录,指定shell环境
[root@localhost ~]# ls
a.sh     init_all.sh          uaddwhile.sh  模板  图片  下载  桌面
dhcp.sh  nginx-1.23.1.tar.gz  公共          视频  文档  音乐
[root@localhost ~]# tar xf  nginx-1.23.1.tar.gz
[root@localhost ~]# mkdir /usr/local/nginx                  #创建安装目录
[root@localhost ~]# chown -R nginx:nginx /usr/local/nginx    #对目录进行递归授权
[root@localhost ~]# cd nginx-1.23.1
[root@localhost nginx-1.23.1]# ./configure --help    
[root@localhost nginx-1.23.1]# ./configure \  对环境进行检测
--prefix=/usr/local/nginx \                  #指定nginx安装位置
--user=nginx \                                #指定nginx运行的用户
--group=nginx \                                 #指定nginx用户组
--with-http_stub_status_module \            #启用http_stub_status_module模块
--with-http_ssl_module \                    #启用ssl模块
--with-http_flv_module \                    #启用FLV模块,提供寻求内存使用基于时间的偏移量文件
--with-http_gzip_static_module

[root@localhost nginx-1.23.1]# ./configure \ 
--prefix=/usr/local/nginx \                  
--user=nginx \                                
--group=nginx \                                 
--with-http_stub_status_module \            
--with-http_ssl_module \

--with-http_flv_module \                
--with-http_gzip_static_module          
[root@localhost nginx-1.23.1]# make         #把源码包编译成二进制文件
[root@localhost nginx-1.23.1]# make install #执行安装
[root@localhost nginx-1.23.1]# ls /usr/local/nginx/
[root@localhost nginx-1.23.1]# ls /usr/local/nginx/sbin/
[root@localhost nginx-1.23.1]# ln -sv /usr/local/nginx/sbin/nginx /usr/local/bin/
#为了nginx服务器运行更方便,可以为主程序nginx创建软连接,以遍管理员执行nginx命令可以直接调用nginx的主程序
[root@localhost nginx-1.23.1]# ls /usr/local/bin/nginx
[root@localhost nginx-1.23.1]# nginx
[root@localhost nginx-1.23.1]# nginx -t        #检测nginx -t文件是否有错误
[root@localhost nginx-1.23.1]# nginx        #启动nginx
[root@localhost nginx-1.23.1]# killall nginx #停止nginx
============================《参数介绍》===============================
主程序Nginx支持标准的进程信号,通过kill或者killall命令传送
HUP            重载配置    等同于-1
QuIT        退出进程    等同于-3
KILL        杀死进程    等同于-9

[root@localhost nginx-1.23.1]# killall -HUP nginx    #重新加载配置文件
[root@localhost nginx-1.23.1]# killall -s QUIT nginx    #退出进程
[root@localhost nginx-1.23.1]# netstat -anptul | grep :80    #nginx端口号80
============================《配置nginx启动脚本》===============================
[root@localhost nginx-1.23.1]# vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Server Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in
start)
        $PROG
;;
stop)
        kill -s QUIT $(cat $PIDF)
;;
restart)
        $0 stop
        $0 start
;;
reload)
        kill -s HUP $(cat $PIDF)
;;
*)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
esac
exit 0

[root@localhost nginx-1.23.1]# chmod +x /etc/init.d/nginx    #给脚本修改权限
[root@localhost nginx-1.23.1]# chkconfig --add nginx    #把脚本加入到系统里
[root@localhost nginx-1.23.1]# chkconfig nginx   on        #让服务开机自启
[root@localhost nginx-1.23.1]# chkconfig --list nginx    #查看开机自启是否成功
[root@localhost nginx-1.23.1]# service nginx stop
[root@localhost nginx-1.23.1]# service nginx start

nginx主配置文件介绍

主配置文件:ls /usr/local/nginx/conf/nginx.conf

全局配置
#指定运行worker进程用户和组
#worker进程应该以普通用户身份运行(nginx用户、nginx组)
#user nobody

##worker进程的个数;通常其数值应该为CPU 的物理核心数减1或相等
worker_processes    1;

#CPU绑定
worker_cpu_affinity 000000001;

#指定一个worker进程所能够打开的最大文件句柄数(ulimit -n)
worker_rlimit_nofile 1024000;

#错误日志文件位置
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#指定nginx的 pid文件及位置
#pid    logs/nginx.pid;

I/O事件配置
events{
#使用epoll模型,2.6以上的内核建议使用epoll模型提高性能
    user epoll
##每个worker进程能够并发响应最大请求数CPU个数x1024
#    work_connections 1024;
}

HTTP配置
http {
    include       mime.types;
    default_type  application/octet-stream;

#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #      '"$http_user_agent" "$http_x_forwarded_for"';

访问日志配置文件
#access_log  logs/access.log  main;
    
    #是否能启用sedfile(文件下载)功能
     sendfile        on;
    #tcp_nopush     on;
    
    #keepalive_timeout  0;
    #保持连续的超时时间;默认为65秒
    keepalive_timeout  65;
    
    #gzip  on;
    

web网站的介绍与搭建一相关推荐

  1. k8s部署tomcat及web应用_k8s介绍 k8s搭建一个应用(mysql+tomcat)

    k8s介绍 k8s搭建一个应用(mysql+tomcat) kubetnetes介绍 官网 https://kubernetes.io/ Kubernetes也就是k8s Kubernetes是一个开 ...

  2. 阿里云搭建一个web项目(网站)介绍(Apache+php+MySQL)

    1.从阿里云购买一个ecs服务器 进入阿里云官方平台https://home.console.aliyun.com,选择左侧导航云服务器ECS 选择导航中的实例: 点击右上角的创建实例按钮: 购买界面 ...

  3. 【Python Django Web项目】利用 Python+Django+Pycharm+MySQL 搭建一个自己的Web网站项目的步骤(详细图文)上集

    今天我们要来介绍一下, 利用 Python+Django+Pycharm+MySQL 搭建一个自己的Web网站项目的步骤 首先我们要建立一个专门放项目的文件夹 如下 E:\Projects , 我们建 ...

  4. 吃透这套架构演化图,从零搭建Web网站也不难

    转载自 吃透这套架构演化图,从零搭建Web网站也不难 前言 工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对 ...

  5. NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证

    目录 开发环境 1.建立工程 2.目录结构 3.Express配置文件 4.Ejs模板 5.安装常用库及页面分离 6.路由 7.session 8.页面访问控制及提示 JS是脚本语言,脚本语言都需要一 ...

  6. mysql webmail ubuntu12.04 imap_Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境)教程...

    前言 看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这 ...

  7. Use a production WSGI server instead(搭建web网站出现的问题)

    今天使用flask来搭建web网站的时候,出现了以下问题 * Serving Flask app "wt" (lazy loading) * Environment: produc ...

  8. 本地电脑如何搭建web网站,并发布到公网访问?1-2

     系列文章 Win系统如何下载安装使用cpolar内网穿透工具? 本地电脑如何搭建web网站,并发布到公网访问?1-2 本地电脑如何搭建web网站,并发布到公网访问?2-2 如何搭建WordPress ...

  9. 使用IPV6搭建自己的Web网站

    IPV6免内网穿透使用个人电脑搭建自己的Web网站早已被验证可行,但是由于工作生活方面的压力,一直也抽不出来心思去玩玩,最近正值疫情,手头空出来一些时间,就体验了一把IPV6的实际运用,这里写一写经验 ...

最新文章

  1. [USACO08NOV]lites
  2. springmvc+quartz简单实现定时调度
  3. 今天改bug遇到一个ie8样式错乱问题
  4. BZOJ3160:万径人踪灭
  5. 二、window下django安装及第一个应用
  6. 我的Android进阶之旅------Android Gusture 手势识别小案例
  7. 美丽新世界:当代日本视觉文化展
  8. C#获取屏幕大小的“简单整理”。。
  9. c语言教程for,C语言菜鸟基础教程之for循环
  10. python3.6- shape mismatch: objects cannot be broadcast to a single shape
  11. 整理了一份嵌入式软件工具清单!
  12. 离开谷歌回归斯坦福,“AI女神”李飞飞新动向揭晓
  13. 【言简意赅】聊聊DAS、NAS、SAN三种存储方式
  14. Kotlin 启用新 Logo,似乎更有寓意?
  15. 小姜的perl学习笔记
  16. 遗传算法之扇贝的进化(python代码实现)
  17. WebRTC[52] - WebRTC 带宽分配逻辑详解
  18. linux能运行安卓模拟器吗,Android模拟器的使用方法(Linux)
  19. Win10 任务栏透明工具-TranslucentTB
  20. 贺利氏收购瑞士安格-贺利氏全部股份 成为全球最大贵金属公司

热门文章

  1. net程序员应该掌握的常用类库
  2. 服务器系统故障有哪些,服务器系统故障
  3. AtCoder Beginner Contest 282 A-E
  4. 2020年9月计算机一级成绩什么时候出来,2020年9月计算机二级成绩大概什么时候出来...
  5. 蓝牙耳机性价比高的品牌,200元左右的无线蓝牙耳机推荐
  6. 机器字长,存储字长以及寻址方面的疑惑。
  7. fillcolor是什么意思_详解css3中 text-fill-color属性
  8. 【一针见血】热点账户
  9. 2018-2-22 《啊哈,算法》再练习广度优先搜索,题:炸怪兽, 2-23改用深度优先搜索。宝岛探险(广度,深度,及地图着色)2-24水管工游戏,2-25测试水管工代码...
  10. 洛谷3953:逛公园——题解