web网站的介绍与搭建一
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网站的介绍与搭建一相关推荐
- k8s部署tomcat及web应用_k8s介绍 k8s搭建一个应用(mysql+tomcat)
k8s介绍 k8s搭建一个应用(mysql+tomcat) kubetnetes介绍 官网 https://kubernetes.io/ Kubernetes也就是k8s Kubernetes是一个开 ...
- 阿里云搭建一个web项目(网站)介绍(Apache+php+MySQL)
1.从阿里云购买一个ecs服务器 进入阿里云官方平台https://home.console.aliyun.com,选择左侧导航云服务器ECS 选择导航中的实例: 点击右上角的创建实例按钮: 购买界面 ...
- 【Python Django Web项目】利用 Python+Django+Pycharm+MySQL 搭建一个自己的Web网站项目的步骤(详细图文)上集
今天我们要来介绍一下, 利用 Python+Django+Pycharm+MySQL 搭建一个自己的Web网站项目的步骤 首先我们要建立一个专门放项目的文件夹 如下 E:\Projects , 我们建 ...
- 吃透这套架构演化图,从零搭建Web网站也不难
转载自 吃透这套架构演化图,从零搭建Web网站也不难 前言 工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对 ...
- NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证
目录 开发环境 1.建立工程 2.目录结构 3.Express配置文件 4.Ejs模板 5.安装常用库及页面分离 6.路由 7.session 8.页面访问控制及提示 JS是脚本语言,脚本语言都需要一 ...
- mysql webmail ubuntu12.04 imap_Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境)教程...
前言 看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这 ...
- Use a production WSGI server instead(搭建web网站出现的问题)
今天使用flask来搭建web网站的时候,出现了以下问题 * Serving Flask app "wt" (lazy loading) * Environment: produc ...
- 本地电脑如何搭建web网站,并发布到公网访问?1-2
系列文章 Win系统如何下载安装使用cpolar内网穿透工具? 本地电脑如何搭建web网站,并发布到公网访问?1-2 本地电脑如何搭建web网站,并发布到公网访问?2-2 如何搭建WordPress ...
- 使用IPV6搭建自己的Web网站
IPV6免内网穿透使用个人电脑搭建自己的Web网站早已被验证可行,但是由于工作生活方面的压力,一直也抽不出来心思去玩玩,最近正值疫情,手头空出来一些时间,就体验了一把IPV6的实际运用,这里写一写经验 ...
最新文章
- [USACO08NOV]lites
- springmvc+quartz简单实现定时调度
- 今天改bug遇到一个ie8样式错乱问题
- BZOJ3160:万径人踪灭
- 二、window下django安装及第一个应用
- 我的Android进阶之旅------Android Gusture 手势识别小案例
- 美丽新世界:当代日本视觉文化展
- C#获取屏幕大小的“简单整理”。。
- c语言教程for,C语言菜鸟基础教程之for循环
- python3.6- shape mismatch: objects cannot be broadcast to a single shape
- 整理了一份嵌入式软件工具清单!
- 离开谷歌回归斯坦福,“AI女神”李飞飞新动向揭晓
- 【言简意赅】聊聊DAS、NAS、SAN三种存储方式
- Kotlin 启用新 Logo,似乎更有寓意?
- 小姜的perl学习笔记
- 遗传算法之扇贝的进化(python代码实现)
- WebRTC[52] - WebRTC 带宽分配逻辑详解
- linux能运行安卓模拟器吗,Android模拟器的使用方法(Linux)
- Win10 任务栏透明工具-TranslucentTB
- 贺利氏收购瑞士安格-贺利氏全部股份 成为全球最大贵金属公司
热门文章
- net程序员应该掌握的常用类库
- 服务器系统故障有哪些,服务器系统故障
- AtCoder Beginner Contest 282 A-E
- 2020年9月计算机一级成绩什么时候出来,2020年9月计算机二级成绩大概什么时候出来...
- 蓝牙耳机性价比高的品牌,200元左右的无线蓝牙耳机推荐
- 机器字长,存储字长以及寻址方面的疑惑。
- fillcolor是什么意思_详解css3中 text-fill-color属性
- 【一针见血】热点账户
- 2018-2-22 《啊哈,算法》再练习广度优先搜索,题:炸怪兽, 2-23改用深度优先搜索。宝岛探险(广度,深度,及地图着色)2-24水管工游戏,2-25测试水管工代码...
- 洛谷3953:逛公园——题解