zoukankan      html  css  js  c++  java
  • 记录nginx 搭建集群环境踏过的坑

    因为生产环境做了负载均衡,为了尽可能跟线上环境一致,所以想在本地也搭集群,这样测试更靠谱。首先就想到nginx 这货,搭个简单的web 服务器实在太简单了。

    nginx 这玩意11年简单玩过,那是版本好像是0.8.x,几年过去了版本号不大,但迭代也不少,也算个版本帝。
    在官网http://nginx.org/en/download.html 下载个最新版本,网上搜了篇文件分分钟搭好了。


    1.unknown directive ,错误日志如下:

    2015/11/04 11:05:15 [emerg] 7544#3144: unknown directive "" in D:Program Files
    ginx-1.9.6/conf/nginx.conf:3
    2015/11/04 11:07:13 [emerg] 1156#12888: unknown directive "" in D:
    ginx-1.9.6/conf/nginx.conf:3

     出现这个根据经验首先想到的可能是路径中有像 Program Files 这样有空格的,直接放根目录结果还是如此。

    网上搜索到原因及解决办法(打死都想不到):

    conf文件被记事本编辑过,保存成了含BOM头的文件,使用其他编辑器将文件另存为UTF-8不含Bom头的格式。

    2.Nginx在启动报错:bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions) 。

    原因是nginx默认80端口被System占用,造成nginx启动报错。在cmd窗口运行如下命令:netstat -aon | findstr :80

    看到80端口果真被占用。发现占用的pid是4,用户名是System。怎么能跟系统抢,但没办法80我还就用定了。
    直接结束进程,结果蓝屏杯具了。还是太野蛮了,此法不行。


    1、打开注册表:regedit

    2、找到:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesHTTP

    3、找到一个REG_DWORD类型的项Start,将其改为0

    4、重启系统,System进程不会占用80端口

     
    3.将nginx做成服务
     之前启动nginx用到园子里Ants写的一个批处理。可开启后会开着个命令行窗口。像我这种有点强迫症的人,不喜欢开太多窗口,可能不小心就关了。
    搜索一番,方案很多,最终选择 Windows Service Wrapper ,按网上的步骤做下来不太顺,总结下。
     
    1.不要放在  Program Files 这样有空格的目录;
    2.安装服务cmd.exe 以管理员身份运行;
    3.xml配置文件logpath目录必需存在(网上都是放nginx根目录),不然服务起动不了;
    4.logmode(日志模式)有 reset , roll (move to *.old) or append (default) 可选
     
    实践出真理,看似简单的事,做起来不一定容易。最终附上 nginx 及 winsw 点我

    参考:

    http://www.360sdn.com/Nginx/2014/0807/4044.html

    http://deeplyloving.iteye.com/blog/734588

    https://kenai.com/projects/winsw/pages/ConfigurationSyntax

  • 相关阅读:
    C#-Linq-SelectMany
    C#-Linq-SelectMany
    DI是实现面向切面和面向抽象的前提
    java流程控制之Scanner(2)
    java流程控制之Scanner(1)
    java运算符之三目运算符
    java运算符之位运算
    java运算符之与或非
    java运算符之加减乘除
    java基础语法
  • 原文地址:https://www.cnblogs.com/lonny/p/nginx-winsw.html
Copyright © 2011-2022 走看看