- 浏览: 531141 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
xuyifeng:
[img][/img][b][/b][/i]玩儿[i][u][ ...
win/linux 网关绑定MAC,ARP攻击 -
icarusli:
一般是要根据具体情况来分析,只不过基本都会是上面所说的原因,但 ...
nginx 502 bad故障原因及解决方法收集 -
haohetao:
博主有Mydigit邀请码吗,给送个haohetao@gmai ...
U盘量产功能增多
不像许多其他软件系统,Nginx 仅有数个命令行参数,完全通过配置文件来配置(想象一下)。
- [#options 选项]
- [#example 示例]
- [#lncus 使用信号加载新的配置]
- [#utnbotf 平滑升级到新的二进制代码]
选项
-c </path/to/config> 为 Nginx 指定一个配置文件,来代替缺省的。
-t 不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
-v 显示 nginx 的版本。
-V 显示 nginx 的版本,编译器版本和配置参数。
示例
这个示例仅测试指定位置的配置文件是否正常,并给出提示。
/usr/bin/nginx -t -c ~/mynginx.conf
通过系统的信号控制 Nginx
可以使用信号系统来控制主进程。默认,nginx 将其主进程的 pid 写入到 /usr/local/nginx/logs/nginx.pid 文件中。通过传递参数给 ./configure 或使用 pid 指令,来改变该文件的位置。
主进程可以处理以下的信号:
TERM, INT | 快速关闭 |
QUIT | 从容关闭 |
HUP | 重载配置 用新的配置开始新的工作进程 从容关闭旧的工作进程 |
USR1 | 重新打开日志文件 |
USR2 | 平滑升级可执行程序。 |
WINCH | 从容关闭工作进程 |
尽管你不必自己操作工作进程,但是,它们也支持一些信号:
TERM, INT | 快速关闭 |
QUIT | 从容关闭 |
USR1 | 重新打开日志文件 |
使用信号加载新的配置
Nginx 支持几个信号,能在它运行时控制其操作。其中最普通的是 15 ,用来中止运行的进程:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2213 0.0 0.0 6784 2036 ? Ss 03:01 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
而最有趣的是能平滑改变 nginx 配置的选项(请注意,在重载前,要先测试一下配置文件):
2006/09/16 13:07:10 [info] 15686#0: the configuration file /etc/nginx/nginx.conf syntax is ok 2006/09/16 13:07:10 [info] 15686#0: the configuration file /etc/nginx/nginx.conf was tested successfully USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 2213 0.0 0.0 6784 2036 ? Ss 03:01 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
当 nginx 接收到 HUP
信号,它会尝试先解析配置文件(如果指定配置文件,就使用指定的,否则使用默认的),成功的话,就应用新的配置文件(例如:重新打开日志文件或监听的套接字)。之后,nginx 运行新的工作进程并从容关闭旧的工作进程。通知工作进程关闭监听套接字但是继续为当前连接的客户提供服务。所有客户端的服务完成后,旧的工作进程被关闭。如果新的配置文件应用失败,nginx 将继续使用旧的配置进行工作。
RequestForReviewCategory -- (Request For Review: Just What Happens With The Worker Processes at a HUP? -Olle)
平滑升级到新的二进制代码
你可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。
首先,使用新的可执行程序替换旧的(最好做好备份),然后,发送 USR2 (kill -USR2 pid)信号给主进程。主进程将重命名它的 .pid 文件为 .oldbin (比如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新的可执行程序,依次启动新的主进程和新的工作进程:
PID PPID USER %CPU VSZ WCHAN COMMAND 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx 33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) 33135 33126 nobody 0.0 1380 kqread nginx: worker process (nginx) 33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx) 36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
在这时,两个 nginx 实例会同时运行,一起处理输入的请求。要逐步停止旧的实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭:
: PID PPID USER %CPU VSZ WCHAN COMMAND 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx 33135 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx) 36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
一段时间后,旧的工作进程处理了所有已连接的请求后退出,就仅由新的工作进程来处理输入的请求了:
: PID PPID USER %CPU VSZ WCHAN COMMAND 33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx 36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,你仍可以恢复旧的服务器:
- 发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程
- 发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程
- 发送 TERM 信号给新的主进程,迫使其退出
- 如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号
新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,这样,一切就都恢复到升级之前了。
如果尝试升级成功,而你也希望保留新的服务器时,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行:
: PID PPID USER %CPU VSZ WCHAN COMMAND : 36264 1 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx : 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) : 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx) : 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
http://www.nginxcn.com/doc/general/commandline.html
发表评论
-
重启Drac卡
2013-01-10 22:54 1534Drac重启。 有个卡的WEb也连不上,重启后正常了。 s ... -
Nginx下WordPress设置Rewrite(含二级域名跳转)
2011-09-28 16:05 16025Apache 在Apache下,利用mod_rewrite来实 ... -
NFS 性能调优
2011-10-10 23:11 1733NFS 性能调优 在 NFS 网络中,服务器是调优的主要目标, ... -
NFS 檔案分享
2011-09-27 03:13 01 NFS 的用途 2 掛 ... -
NFS,Memcached,Tokyo tyrant实现session共享性能测试
2011-09-27 03:04 0<p>在我负责的某个 ... -
php open_basedir安全与性能的取舍
2011-09-27 02:53 9712open_basedir 严重影响PHP I/O性能 这是昨 ... -
php include 和io流的效率
2011-09-27 02:36 2564之前看了,平凡的世界大大的一篇文章 <a href=&q ... -
eAccelerator 配置(PHP代码加速器)
2011-09-27 02:33 1578eAccelerator是一个自 ... -
php-cgi日志php-fpm出现setrlimit(RLIMIT_NOFILE) failed 错误
2011-09-15 18:40 12376tail -n 100 php-fpm.log[WARNI ... -
Centos下安装rrdtool
2011-01-29 12:46 1573yum install ruby*rpm -ivh rr ... -
Linux环境下不重新编译php添加扩展模块
2011-01-29 12:41 3975添加ftp模块为例子进入源码目录cd php-5.2.8 ... -
IIS出现HTTP500内部错误以及COM+8004e00f错误的解决办法(MSDTC) COM+无法与Microsoft分布式事务协调程序交谈
2010-07-23 11:38 1676IIS出现HTTP500内部错误以 ... -
应用程序池 'DefaultApppool' 提供服务的进程意外终止
2010-06-23 17:13 4821问题描述:1,机器中毒,杀过毒。2,IIS6方式重启服务是正常 ... -
nfs 共享session方式 session_start 慢 问题解决
2010-06-13 15:30 4535近几天php搭建了个新的运行平台,但出了个问题, ... -
nginx的rewrite 参数和例子
2010-06-11 14:19 2194正则表达式匹配,其中: * ~ 为区分大小写匹配 * ... -
no input file specified nginx 多个虚拟主机
2010-06-11 03:12 11263今天配置nginx rewrite 的时候遇到一个问题,就是访 ... -
nginx 502 bad故障原因及解决方法收集
2010-06-11 01:09 18049如题,最近网站频繁出现502错误,简直无法正常运转 ... -
Nginx的Rewrite配置
2010-06-08 01:21 1992Nginx的Rewrite经过网上 ... -
nginx二级域名匹配根目录下的子文件夹
2010-05-24 00:23 12280绑定域名 server_name *.abcd.com; 获取 ... -
nginx虚拟目录(alias与root的区别)
2010-05-24 00:20 2413nginx貌似没有虚拟目录的说法,因为它本来 ...
相关推荐
- 方便配置文件的备份和迁移。 - 支持批量操作。 **Windows 安装 Zabbix 监控:** - 在Windows环境中安装Zabbix组件。 - 配置监控Windows服务器。 **Zabbix Windows 性能计数器使用详解:** - 监控Windows性能...
- `/usr`: 存储应用程序和文档等共享资源。 - `/var`: 存储日志文件、数据库等可变数据。 - `/etc`: 配置文件的存放位置。 - **常用命令**: - `ls`: 列出目录内容。 - `cd`: 改变当前工作目录。 - `mkdir`: ...
- 在生产环境中,推荐使用虚拟环境,并考虑使用Gunicorn + Nginx进行负载均衡和静态文件服务。 8. **安全(Security)** - CSRF保护:Flask-WTF扩展提供CSRF令牌防止跨站请求伪造攻击。 - 用户认证与授权:Flask...
5. **console**:控制台应用程序目录,用于运行计划任务或数据迁移等后台操作。 6. **vendor**:第三方库和依赖包的存放地,由 Composer 管理。 7. **environments**:不同部署环境的配置模板,可以根据需要调整。...
7. **API文档**:为了方便开发者使用,laravelPCMS通常会提供详细的API文档,列出所有可用的接口及其参数,帮助开发者快速理解和接入。 8. **安全机制**:Laravel框架内置了CSRF防护、XSS防护等安全特性,...
- 使用Composer安装:通过命令行运行`composer create-project --prefer-dist laravel/laravel your-project-name`来快速创建一个新的Laravel项目。 - 配置数据库连接:编辑`.env`文件中的数据库设置。 - **项目...
升级过程需要注意数据迁移和配置文件的兼容性问题。 总的来说,Tomcat作为Java Web应用的首选服务器,以其简洁高效的特点深受开发者喜爱。掌握Tomcat的使用、配置和优化技巧,对于Java开发人员来说至关重要。
1. 配置文件:在安装完成后,需要编辑php.ini配置文件,根据实际需求调整PHP的运行参数。 2. PHP-FPM:7.1.13支持FastCGI进程管理器(PHP-FPM),它可以更好地处理HTTP请求,提高服务器响应速度。 3. 模块支持:根据...
- **yii.bat和queue.bat**:这两个批处理文件通常用于执行PHP命令行脚本,例如Yii框架的运行或队列任务的启动。Yii是另一个流行的PHP框架,可能在这个项目中被用作ThinkPHP的补充或者用于特定的任务。 - **.env....
- **模型与迁移**:Eloquent提供了简单的方法来操作数据库,通过模型定义数据表结构,迁移文件则用于数据库版本控制。 - **关系映射**:Eloquent支持多种数据库关系,如一对一、一对多、多对多等,简化了数据库...
3. **Artisan 命令行工具**:Laravel自带的Artisan命令行工具可以帮助开发者生成控制器、模型、迁移文件等,大大简化了日常开发任务。 4. **路由系统**:Laravel的路由系统允许开发者以简洁的方式定义HTTP请求的...
这涉及到调整内核参数,如最大文件描述符数、TCP连接超时、内存分配策略等,以适应高并发和大数据量的场景。 总结来说,本解决方案旨在提供一个完整的互联网项目系统软件集成蓝图,从各个组件的安装、配置,到集群...
9. **数据导入导出**:使用`bin/elasticsearch-transport-client`或者第三方工具如Logstash,可以方便地导入和导出数据,实现数据迁移和备份。 10. **监控与优化**:Elasticsearch提供了丰富的监控指标,用户可以...
在实际运行前,你需要复制此文件并命名为`.env`,然后根据实际情况修改其中的参数。 `artisan` 是Laravel框架中的命令行工具,对于MeEdu的安装和维护非常关键。你可以使用`artisan`命令进行数据库迁移、种子数据...
- **常量**:在程序运行期间其值不会改变的量。 - **构造器**:用于初始化对象的特殊方法。 - **Math**:提供数学运算的静态方法。 - **super与this**:super关键字用于引用当前对象的直接父类中的成员,this关键字...
6. **Artisan命令行工具**:Laravel自带的Artisan提供了一系列的命令行工具,帮助开发者生成控制器、模型、迁移文件等,大大提高了开发效率。 7. **数据库迁移与填充**:Laravel的迁移系统允许开发者在多个环境中...
8. **Rails更新与版本管理**:Rails版本更新频繁,每个新版本都会引入新的特性和改进,因此开发者需要关注官方文档,理解不同版本之间的差异,合理选择版本并进行迁移。 通过深入学习以上知识点,开发者可以高效地...
为了方便开发者使用API,应编写清晰的API文档,说明每个端点、请求类型、参数和响应格式。此外,使用PHPUnit或Dusk等工具对API进行单元测试和集成测试,确保其稳定性和正确性。 ### 9. 部署与优化 完成开发后,...
- `manage.py`:这是一个命令行工具,用于执行各种管理任务,如创建数据库迁移、运行服务器等。 - `blog`:这是主要的应用程序目录,包含模型、视图、模板和URL配置等。 - `static` 和 `media`:分别用于存放静态...
6. **运行**:通过Web服务器(如Apache或Nginx)部署应用,并访问指定的URL以启动服务。 ### 社区支持与学习资源 由于PHPBLib是开源项目,开发者可以在其官方文档、GitHub页面、社区论坛等平台上获取帮助、示例...