当前位置:   article > 正文

服务器端通过nginx部署项目(含websoket)_websocket服务端配置项

websocket服务端配置项

前言:在某云购买的服务器,实现在服务器部署项目,nginx启动项目,并同时启动websocket

        只需部署项目:只看前四步

        连接实例准备

一、nginx安装及编译

 1、nginx安装

  1. #登录服务器并进⼊/usr/local⽬录
  2. cd /usr/local
  3. #下载nginx
  4. wget http://nginx.org/download/nginx-1.18.0.tar.gz
  5. #解压nginx
  6. tar -zxvf nginx-1.18.0.tar.gz
  7. 进入解压后的目录
  8. cd nginx-1.18.0

 

2、编译(在刚才进去的nginx-1.18.0目录下继续执行)

  1. #安装工具
  2. yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel
  3. #配置nginx编译环境
  4. ./configure --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-stream
  5. #编译安装
  6. make && make install

二、nginx配置nginx.conf

注意的是:

        修改的目录是:编译后生成的nginx目录下conf里面的nginx.conf

        执行命令的目录是:解压后nginx-1.18.0下objs

 1、只修改目录配置时(默认端口80不变)

  1. location / {
  2. root /usr/local/DongHao; #修改这⾥项⽬放置位置
  3. index index.html;
  4. }

 效果

 2、目录修改好后,想换个端口时

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. server {
  11. listen 8883;
  12. server_name localhost;
  13. location / {
  14. root /usr/local/DongHao; #修改这⾥项⽬放置位置
  15. index index.html;
  16. }
  17. error_page 500 502 503 504 /50x.html;
  18. location = /50x.html {
  19. root html;
  20. }
  21. }
  22. }

 效果

  可以看到,换了端口重启nginx是并不生效的,还需要在购买服务器的厂家增加配置,

我这里是阿里云

效果

三、nginx使用

 

 在第“一”步完毕后,多了个objs的目录,进入objs目录后执行项目操作

  1. #启动nginx 
  2. ./nginx
  3. #重新加载nginx配置文件
  4. ./nginx -s reload
  5. #关闭nginx
  6. ./nginx -s stop

 四、域名访问

购买域名解析后,默认通过域名是不可以访问的,要域名备案

需要备案,符合那个要求,那个要求,那个要求,那个要求,那个要求...

 备案实例需要购买3个月以上,先省略,以后再补上步骤

五、项目中如果有websocket时 (本地模拟启动websocket)

本地正常,部署后,运行会报错,websocket连接失败了

这是未启动websoket服务


本地使用websocket(模拟后台启动websocket)

    1、模拟后台启动websocket服务(本地通过nginx,启动websocket服务)

   2、第1步启动好可正常访问后,在服务器端启动nginx(以下为服务器端nginx配置)

  1. map $http_upgrade $connection_upgrade {
  2. default upgrade;
  3. '' close;
  4. }

  1. #项目里有websocket时
  2. server {
  3. listen 126;
  4. location / {
  5. proxy_pass http://192.168.6.58;
  6. proxy_set_header Upgrade $http_upgrade;
  7. proxy_set_header Connection "upgrade";
  8. }
  9. }

效果 

 


 线上环境使用websocket

1、修改成后端启动websocket的地址及端口

六、项目中如果有websocket时 (服务器端启动websocket)

前言: 先说一下本地启动websocket的两种方式,本地启动时,因已经提前安装过node环境,在              控制台直接执行命令即可

        1.单独websocket启动时:找到对应websocket服务程序目录,执行node app.js(如效果1)

        2.websocket在项目中时:在package.json中scripts配置,让node同时执行两个任务(如效果2)

效果1:单独websocket启动时

 效果2:websocket在项目中时


在服务端默认不能执行node来启动websocket,所有以下步骤是,先安装,再启动

  1、因Xshell默认不能执行node命令,先要安装node(在local目录下新建node文件夹)

参考

xshell安装node_Zoexyf的博客-CSDN博客

  1. 步骤1
  2. curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  3. 步骤2
  4. sudo yum install -y nodejs
  5. 步骤3 查看
  6. node -v
  7. 步骤4 查看
  8. npm -v

 2、执行完第1步后(就可以使用node命令)

   用node命令在服务器端启动websocket服务(在local目录下新建wesocket文件夹)

1) 安装nodejs-websocket 

npm i nodejs-websocket 

 2) 执行node app.js    

出现问题-不能识别import

 卒~~~~~~~~~~~~

3)参考:为什么nodejs不支持import - web开发 - 亿速云

全局安装babel-cli 

 npm install babel-cli -g

安装 babel-preset-env 

npm install babel-preset-env -D

原来是node app.js,改为这样调用:babel-node --presets env app.js

那么现在,在服务器端就已经启动好了websocket服务

但是,这一步只是单独启动了websocket

下一步就是,

修改服务端nginx配置,连接上这个实例,端口为3000的地址,

 4) 修改前端与配置

前端代码

nginx配置 

5) 同时启动项目和websocket

 同时打开两个Xshell窗口

        一个启动app.js    :  babel-node --presets env app.js

        一个启动项目       :./nginx

 端口占用了,为啥呢,websocket的端口的3000,nginx的端口是8883

只能执行一个任务,要么启nginx,要么启动websocket

 依然没有解决同时启动nginx和websocket

卒~~~~~~

参考Linux nohup、 &、2>&1以及/dev/null 2>&1_书香水墨的博客-CSDN博客

找到对应app.js路径执行以下 

nohup babel-node --presets env /usr/local/Websocket/app.js > logs/socket.log 2>&1 &

 nohup: 用途:不挂断地运行命令

logs/socket.log  自己的定义的一个文本输出

2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的socket.log文件中,从此终端彻底清静了。

 效果:开了4个浏览器窗口,执行日志会放入socket.log文件中

 后续

 

 这个时候,关闭nginx后,又重新启动,websocket依然有效

如果想单独只关闭websocket如何操作

 如图,启动会有一个SID的进程

查询后:关闭进程

  1. 查询进程
  2. ps -aux|grep /usr/local/Websocket/app.js
  3. 关闭进程(例如SID为14621时)
  4. kill 14621

后续
当关闭Xshell窗口的时候,websocket断开了

 解决

先exit退出,再关闭Xshell窗口

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/634593
推荐阅读
相关标签
  

闽ICP备14008679号