世界上最伟大的投资就是投资自己的教育

全场限时 5 折

首页Nginx
随风 · 练气

Nginx 学习笔记系列文章之 Nginx 之在线升级 (四)

随风发布于2771 次阅读

1. 缘由

公司有一个项目,需要用到 websocket,所谓 websocket 是基于 tcp/ip 的协议,它跟 http 协议是同等级的。它解决的问题是长轮循的资源消耗问题。也就是用它做类似长轮循的应用时,因为本身协议的支持,资源消耗是较低的。类似的应用可以是聊天室,通知系统,股票实时更新等。具体的我们不再细说。由于我们项目是部署在 nginx 上的,用的 ruby on rails 开发的,使用的 gem 是actioncable。rails 程序是用 unicorn 部署的,websocket 是用 puma 来部署,也是 actioncable 默认建议的。也就是两个程序,一个是 web 的,一个是 websocket 的。两个都是挂在 nginx 下。nginx 作为反向代理服务器,代理请求到 unicorn 或 puma,unciron 或 puma 处理后,交给 nginx,nginx 再转发给客户端。nginx 作为高性能的服务器,起到缓冲作用,主要的压力也是集中在 nginx 上,这也是一般 rails 程序的部署情况。

之前 unicorn 是部署好的。这个时候要加上 puma。仿照 unicorn 在 nginx 的配置,puma 在 nginx 也是一样的。都是用 proxy_pass 加上 upstream 就可以搞定。关于 nginx 的具体配置问题可以查看本站 nginx 相关的文章。这里不再详述。

配置好了。刚开始第一次发出请求可以成功的,因为我监控了 puma 的日志,能够产生正确的请求日志,但发出第二次就不行了,总是超时。最后我查到了原因,原来是 nginx 在 1.4 以上才支持 websocket。我发现线上 centos 用 yum 安装的 nginx 版本才是 1.0,真是醉了。关于如果如何查看 websocket 请求的问题可以查看本站 websocket 相关的文章。

我想给 nginx 来个升级,但最好是无破坏的升级。假如你在线上还有程序在跑,你可不能破坏掉。不然由此造成的业务损失,可得怪你。

2. 升级过程

在安装前先执行下面的命令,这是我安装过程中遇到的问题。先安装就能避免了。

sudo yum -y install pcre-devel openssl openssl-devel

在官网上找到了 nginx 的最新稳定版本,下载下来,然后解压缩。

cd nginx

./configure \
--prefix=/etc/nginx                   \
--sbin-path=/usr/sbin/nginx           \
--conf-path=/etc/nginx/nginx.conf     \
--pid-path=/var/run/nginx.pid         \
--lock-path=/var/run/nginx.lock       \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module        \
--with-http_stub_status_module        \
--with-http_ssl_module                \
--with-pcre                           \
--with-file-aio                       \
--with-http_realip_module             \
--without-http_scgi_module            \
--without-http_uwsgi_module           \
--without-http_fastcgi_module

make
sudo make install

关于这里面的参数,可以使用nginx -V查看。

这个时候已经安装完毕了,但是你还没有用新 nginx 来启动,还有,老的 nginx 还在用着呢,如何无缝启动呢。

Makefile 提供了一个命令

sudo make upgrade

就好了。这样可以杀死旧的 nginx 进程,用新的来代替。详细的你可以查看 Makefile 文件。

完结。

本站文章均为原创内容,如需转载请注明出处,谢谢。

0 条回复
暂无回复~~
相关小书
nginx教程

nginx教程

最全面,最深入的nginx入门到精通的教程

发表于

喜欢
统计信息
    学员: 29061
    视频数量: 1973
    文章数量: 489

© 汕尾市求知科技有限公司 | Rails365 Gitlab | Qiuzhi99 Gitlab | 知乎 | b 站 | 搜索

粤公网安备 44152102000088号粤公网安备 44152102000088号 | 粤ICP备19038915号

Top