服务器部署:
[TOC]
一、Nginx
1、安装nginx
sudo apt-get install nginx
2、查看安装情况:
# 查看nginx
ps -ef|grep nginx
#root 1532 1239 0 17:54 pts/0 00:00:00 grep nginx
# 查看安装的情况
nginx -v
# 查看nginx.conf配置文件目录,找到配置文件,然后就可以更改了
nginx -t
#nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
#nginx: configuration file /etc/nginx/nginx.conf test is successful
3、启动nginx
nginx
4、停止nginx服务
nginx -s stop
# 或者是
nginx -s quit
5、nginx.conf的配置文件处理
#这里是全局变量的配置
user nginx;# 用户
worker_processes auto;#指定nginx要开启的子进程数量,运行过程中监控每个进程消耗内存 通常数量是CPU内核数量的整数倍
error_log /var/log/nginx/error.log;#定义错误日志文件的位置及输出级别
pid /var/run/nginx.pid; #用来指定进程id的存储文件的位置
#worker_rlimit_nofile用于指定一个进程可以打开最多文件数量的描述
include /usr/share/nginx/modules/*.conf;
events { # nginx工作模式配置
worker_connections 1024; #最大可以同时接收的连接数量,默认为512和worker_precesses共同决定的
#multi_accept on #nginx在收到一个新连接通知后尽可能多的接受更多的连接
#use epoll; #use epoll 配置指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
}
http { #http协议信息的一些配置
## #自定义格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
##
# 基础配置
##
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types; ##文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
access_log /var/log/nginx/access.log main;# 如果值是off 取消服务日志
# for more information.
include /etc/nginx/conf.d/*.conf; # 这里引入了其他的配置文件
#负载均衡配置
upstream hello {
server 127.0.0.1:8001;
#server 192.168.10.121:3333 backup; #热备
}
error_page 404 https://www.baidu.com; #错误页
server { #用于进行服务器访问信息的配置
#keepalive_requests 120; #单连接请求上限次数。
listen 80;
server_name www.tuxiaobaibai.cn;#监听地址
location / { #用于进行访问路由的配置
#请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
#alias /myweb/server2/location2; #对location的URL进行更改
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-proxy true;
proxy_pass http://hello;#请求转向 mysvr 定义的服务器列表
proxy_redirect off;
#deny 127.0.0.11; #拒绝的ip
#allow 172.0.0.12; #允许的ip
}
}
}
二、PM2 安装操作
PM2是用来维持node服务永久启动的?存疑
#1、安装pm2
npm install pm2 -g
#2、运行
cd /home/node/
pm2 start /bin/www --name bookmarket # 命名进程并启动(首次启动,需要进入项目目录中进行启动)
#[PM2] Starting /home/node/bin/www in fork_mode (1 instance)
#[PM2] Done.
#┌────────┬──────┬────────┬───┬─────┬───────────┐
#│ Name │ mode │ status │ ↺ │ cpu │ memory │
#├────────┼──────┼────────┼───┼─────┼───────────┤
#│ myname │ fork │ online │ 0 │ 0% │ 10.3 MB │
#└────────┴──────┴────────┴───┴─────┴───────────┘
#3、检查启动的服务列表
pm2 list # 返回上边的那个列表
#4 监视所有进程
pm2 monit
#5、显示所有进程日志
pm2 logs
#6、 停止所有进程
pm2 stop all
#7、 重启所有进程
pm2 restart all
#8、 0秒停机重载进程 (用于 NETWORKED 进程)
pm2 reload all
#9、 停止指定的进程
pm2 stop 0
#10、 重启指定的进程
pm2 restart 0
#11、 产生 init 脚本 保持进程活着
pm2 startup
#12、 运行健壮的 computer API endpoint (http://localhost:9615)
pm2 web
#13、 杀死指定的进程
pm2 delete 0
#14、 杀死全部进程
pm2 delete all
#15、开启自动重启模式
pm2 start app.js --watch
pm2常用的一些命令
#pm2运行一个脚本的时候
#就比如需要运行
node build/dev-server.js --env=local
# pm2使用方式:
pm2 start build/dev-server.js --env=local
# pm2使用npm启动
pm2 start npm -- run XXX
如果要加一个自己喜欢的名字就是
pm2 start npm --name baipu --watch -- run dev
我们也可以写一个配置文件来启动项目processes.json
然后使用pm2 start precesses.json
就可以运行了
{
"apps": [
{
"name": "mywork",
"cwd": "/home/node/",
"script": "bin/www",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"error_file": "/var/log/node-app/node-app.stderr.log",
"out_file": "log/node-app.stdout.log",
"pid_file": "pids/node-geo-api.pid",
"instances": 6,
"min_uptime": "200s",
"max_restarts": 10,
"max_memory_restart": "1M",
"cron_restart": "1 0 * * *",
"watch": false,
"merge_logs": true,
"exec_interpreter": "node",
"exec_mode": "fork",
"autorestart": false,
"vizion": false
}
]
}
解释:
- pps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
- name应用程序的名字
- cwd:应用程序所在的目录
- out_file:自定义应用程序日志文件
- min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
- max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
- cron_restart:定时启动,解决重启能解决的问题
- watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
- exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
- exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
- autorestart:启用/禁用应用程序崩溃或退出时自动重启
- vizion:启用/禁用vizion特性(版本控制)
备注 :
npm淘宝镜像:
npm config set registry https://registry.npm.taobao.org
不想用他们的,再设置回原来的就可以了:
npm config set registry https://registry.npmjs.org
网友评论