流程 Linux环境变量配置NODEJS环境: 1 2 3 4 5 需要配置负载均衡的若干台服务器 从 https://nodejs.org/dist/v8.9.3 /node -v8 .9.3 -linux-x64.tar.xz 下载安装包,解压到/usr/local目录下,步骤如下 $ xz -d node -v8 .9.3 -linux-x64.tar.xz //解压xz文件 $ tar xvf node -v8 .9.3 -linux-x64.tar //解压tar文件 $ mv node -v8 .9.3 -linux-x64 /usr/local/node //移动node 目录,并修改名称
配置环境变量 修改/etc/profile文件,在末尾添加以下内容
1 2 3 4 $ vim /etc/rpofile $ export NODE_HOME=/usr/local/node$ export PATH=$NODE_HOME /bin:$PATH
执行source /etc/profile 生效环境变量配置
测试node环境是否安装成功
修改npm镜像源 1 2 $ npm config set registry https:
设置完成后,可以通过 查看是否修改镜像源成功
安装PM2作为NODEJS的服务器,执行以下命令 1 2 3 4 需要配置负载均衡的若干台服务器 $ npm install pm2 -g $ pm2 -v
创建jenkins 1 2 3 4 5 项目名称:project_name_on_the_jenkins Repository URL:svn://x .x .x .x :port/gitlab/xxx/master 同步到服务器:x .x .x .x , x .x .x .x , .... Source files:** Remote directory:/var/www/ai/stockrate
同步jenkins 1 project_name_on_the_jenkins
修改nginx配置 修改相关服务器的 /usr/local/nginx/conf/ai.conf 配置
1、在文件顶部新增upstream:
1 2 3 4 5 upstream stockrate { server 127.0.0.1:3000 ; keepalive 64 ; }
2、在location ~* ^/(transfer|reference|idxvisual).*.(html)$ 这一行上面新增如下nginx配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 location /stockrate/ { root /var/www/ai/stockrate; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header Host $http_host ; proxy_set_header X-NginX-Proxy true ; proxy_http_version 1 .1 ; proxy_set_header Upgrade $http_upgrade ; proxy_set_header Connection "upgrade" ; proxy_max_temp_file_size 0 ; proxy_pass http://stockrate/; proxy_redirect off ; proxy_read_timeout 240s ; }
3、重新加载nginx配置:
1 2 /usr/local/openresty/nginx/sbin/nginx -t /usr/local/openresty/nginx/sbin/nginx -s reload
SQL执行 数据库服务器:x.x.x.x 将SQL语句整理成一个xxx.sql文件,发送给运维执行。 注:sql文件中需要包含建库和赋权限的功能,例:
1 2 3 CREATE DATABASE database_name default CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 'db_username'@'%' IDENTIFIED BY 'password'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ON database_name.* TO db_username;
安装NPM包 1 2 操作的服务器:涉及的若干台服务器 进入/var/ www/ai/ stockrate目录,执行 npm install 命令,会自动下载所有的nodejs依赖包
1 2 3 4 $ cd /var/www/ai/stockrate$ npm install
执行nodejs脚本 1 node path/to/your/script.js
添加2个定时脚本 1 2 # 2017-12-20 脚本说明信息 author@mail.com 0 17 * * 1-5 root /usr/local/node/bin/node path/to/your/script.js > /root/cront_log/log_file_name.txt 2>&1
开启PM2服务 1 pm2 start /var/ www/ai/ stockrate/server/ pm2.json
将pm2加入开机启动 将如下内容加入/etc/rc.local
1 pm2 start /var/ www/ai/ stockrate/server/ pm2.json
Nginx相关配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 proxy_set_header X -Forwarded-For $proxy_add_x_forwarded_for ; 我们先看看这里有个X -Forwarded-For变量,这是一个squid开发的,用于识别通过HTTP代理或负载平衡器原始IP一个连接到Web服务器的客户机地址的非rfc标准, 如果有做X -Forwarded-For设置的话,每次经过proxy转发都会有记录,格式就是client1 , proxy1 , proxy2 ,以逗号隔开各个地址,由于他是非rfc标准,所以默认是没有的, 需要强制添加,在默认情况下经过proxy转发的请求,在后端看来远程地址都是proxy端的ip 。也就是说在默认情况下我们使用request.getAttribute("X-Forwarded-For" )获取不到用户的ip, 如果我们想要通过这个变量获得用户的ip,我们需要自己在nginx添加如下配置: proxy_set_header X -Forwarded-For $proxy_add_x_forwarded_for ; 意思是增加一个$proxy_add_x_forwarded_for 到X -Forwarded-For里去,注意是增加,而不是覆盖,当然由于默认的X -Forwarded-For值是空的,所以我们总感觉X -Forwarded-For的值就等于$proxy_add_x_forwarded_for 的值, 实际上当你搭建两台nginx在不同的ip上,并且都使用了这段配置,那你会发现在web服务器端通过request.getAttribute("X-Forwarded-For" )获得的将会是客户端ip和第一台nginx的ip。 那么$proxy_add_x_forwarded_for 又是什么?$proxy_add_x_forwarded_for 变量包含客户端请求头中的"X-Forwarded-For" ,与$remote_addr 两部分,他们之间用逗号分开。 举个例子,有一个web应用,在它之前通过了两个nginx转发,即用户访问该web通过两台nginx。 在第一台nginx中,使用 proxy_set_header X -Forwarded-For $proxy_add_x_forwarded_for ; 现在的$proxy_add_x_forwarded_for 变量的"X-Forwarded-For" 部分是空的,所以只有$remote_addr ,而$remote_addr 的值是用户的ip,于是赋值以后,X -Forwarded-For变量的值就是用户的真实的ip地址了。 到了第二台nginx,使用 proxy_set_header X -Forwarded-For $proxy_add_x_forwarded_for ; 现在的$proxy_add_x_forwarded_for 变量,X -Forwarded-For部分包含的是用户的真实ip,$remote_addr 部分的值是上一台nginx的ip地址,于是通过这个赋值以后现在的X -Forwarded-For的值就变成了“用户的真实ip,第一台nginx的ip”,这样就清楚了吧。
$http_host 1 2 nginx官方并没有对其的解释, 不过测试发现$host 与 $http_host的区别在于当使用非80 /443 端口的时候,$http_host = $host:$port
proxy_max_temp_file_size 0; 1 2 3 可以参考这篇文章:http:// www.qmailer.net/archives/ 148 .html 设置为0 表示不向硬盘写入缓冲文件,防止在高并发的时候频繁写入磁盘影响转发性能
proxy_redirect off; 1 2 可以参考这篇文章:http:// xstarcd.github.io/wiki/ sysadmin/nginx_proxy_redirect.html
proxy_read_timeout 1 2 连接成功后_ 等候后端服务器响应时间_ 其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
Nginx支持WebSocket反向代理 1 2 3 proxy_http_version 1 .1 ;proxy_set_header Upgrade $http_upgrade ;proxy_set_header Connection "upgrade" ;