• 记录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

  • 相关阅读:
    java中高级软件工程师面试总结
    失败的面试经历
    解决webstorm打开包含node_modules项目卡死问题
    通俗易懂的理解javascript闭包
    javascript实现silverlight pivotViewer控件
    javascript面向对象
    吐槽一下万网空间
    html5的Canvas
    前端CSS兼容的一些思路
    Win10 Ubuntu子系统访问Windows目录
  • 原文地址:https://www.cnblogs.com/lonny/p/nginx-winsw.html
Copyright © 2020-2023  润新知