博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
部署小说api服务到腾讯云
阅读量:6863 次
发布时间:2019-06-26

本文共 5620 字,大约阅读时间需要 18 分钟。

部署小说api服务到腾讯云

小说api1.0版本写完了,接下来就开始部署到服务器上,用到了nginx、pm2、nvm、git、OpenSSL。

服务器配置: CentOS 7.4 64位 1 核 2 GB 1 Mbps node版本: 8.9.0 nvm版本: 0.33.11 npm版本: 5.5.1 nginx版本:1.12.2 git版本: 2.9.5

第一步添加pm2配置文件

在小说api项目的根目录创建一个pm2.json的文件。

{    "name": "novel-api",  // 服务名    "script": "./bin/www", // 启动脚本    "cwd": "./",   // 当前工作路径    "watch": [  // 监控变化的目录,一旦变化,自动重启        "bin",        "routers"    ],    "ignore_watch": [  // 从监控目录中排除        "node_modules",        "logs",        "public",        "log"    ],    "watch_options": {        "followSymlinks": false    },    "max_memory_restart": "1G", // 根据内存限制重新启动应用程序。    "error_file": "./logs/novel-apierr.log",  // 错误日志路径    "out_file": "./logs/novel-api-out.log",   // 普通日志路径    "env": {        "DEBUG": "novel-api",  // 环境变量参数,debug名字为novel-api,8080端口监听        "PORT": "8080"    }}复制代码

package.json文件添加npm run deploy部署命令。

"deploy": "pm2 start pm2.json"复制代码

pm2 常用命令。 pm2 save 保存当前进程列表。 pm2 resurrect 启动之前保存的进程列表。 pm2 restart app.js|app_name 重启进程 pm2 start app.js 启动进程 pm2 list 查看进程列表 pm2 stop app_name |app_id 停止指定的应用。 all 停止所有应用

第二步购买服务器和域名

购买服务器,我买的是CentOS 7.4 64位 1 核 2 GB 1 Mbps的服务器。如果只是尝试部署流程,可以选择按时计费。 购买域名建议选.com的域名。

第三步设置子域名

添加一个api开头的子域名,然后添加解析。

第四步登陆服务器安装软件

登陆到服务器然后执行以下安装命令。

安装nginx

yum install -y nginxnginx -v复制代码

安装nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bashnvm --version复制代码

安装node和pm2、apidoc

nvm install 8.9.0nvm use 8.9.0node -vnpm -vnpm install -g pm2 apidoc复制代码

安装git

yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel taryum install -y gcc-c++ perl-ExtUtils-MakeMakercd /usr/srcwget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gztar xf git-2.9.5.tar.gzcd git-2.9.5make configuremake profix=/usr/gitmake installecho "export PATH=$PATH:/usr/git/bin" >> /etc/profilesource /etc/profilegit --version // 配置gitgit config --global user.name "用户名称"git config --global user.email 电子邮件地址复制代码

在服务器上克隆git仓库

先进入home路径创建wwwroot文件夹。

cd /home && mkdir wwwrootcd wwwrootgit clone https://github.com/lanpangzhi/novel-api.gitcd novel-apinpm installnpm run docnpm run deploy复制代码

这个应用就pm2被启动了。

配置nginx

先启动nginx。

nginx复制代码

http://123.206.45.87 在浏览器输入服务器ip就可以看到nginx已经启动了。

进入nginx配置目录,新建文件。

cd /etc/nginx/conf.dtouch api.langpz.com-8080.conf复制代码

如果一台服务器的server比较多,建议用域名和端口做配置文件名。 编辑api.langpz.com-8080.conf 配置文件。

vi api.langpz.com-8080.conf复制代码

把下面代码复制粘贴过去。

upstream novel-api {    server 127.0.0.1:8080;}server {    listen 80;    server_name 你自己的域名;    location / {        proxy_pass http://novel-api;        proxy_set_header   X-Real-IP        $remote_addr;        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_redirect     off;    }}复制代码

ctrl + c 输入:wq 退出并保存。再执行nginx -s reload 在浏览器输入你的域名就可以看到文档,

gzip压缩

cd /etc/nginx/vi nginx.conf复制代码

把下面代码复制粘贴过去。

## gzip压缩gzip on;# ie6不启用gzipgzip_disable "msie6";gzip_vary on;gzip_proxied any;# 压缩等级 1-9gzip_comp_level 2;gzip_buffers 16 8k;gzip_http_version 1.1;# 为除“text/html”之外的MIME类型启用压缩gzip_types text/plain text/css application/json application/x-javascript application/javascript image/tiff image/x-icon application/font-woff application/vnd.ms-fontobject text/javascript;复制代码

ctrl + c 输入:wq 退出并保存。再执行nginx -s reload。可以去站长之家看你的压缩率

隐藏nginx版本号

还是修改nginx.conf这个文件

vi nginx.conf// 把下面代码复制过去# 隐藏nginx版本号server_tokens off;复制代码

ctrl + c 输入:wq 退出并保存。再执行nginx -s reload。

这里就不显示nginx版本号了。

配置ssl证书https,给你的网站加个小绿锁

我用的是腾讯云的免费证书,也可以自己生成。,使用域名免费版。

申请腾讯云ssl证书

直接点下一步,然后用推荐选项验证。申请很快不到十分钟就下来,到时候还会有邮件和短信通知。

下载证书上传到服务器

找到腾讯云的ssl证书管理去下载证书。

压缩包里面有三个文件夹找到Nginx这个文件夹。 在服务器进入nginx所在目录新建一个文件夹。

cd /etc/nginx/mkdir api.langpz.com复制代码

然后把Nginx文件夹里面两个文件上传到服务器/etc/nginx/api.langpz.com 这个文件夹里面。 可以下载一个FileZilla软件或者下载一个别的ftp工具,还可以用命令行,我这里下载了FileZilla使用它去上传。

加强 HTTPS 安全性

首先在目录 /etc/nginx/api.langpz.com 运行以下代码生成 dhparam.pem 文件

cd /etc/nginx/api.langpz.com	openssl dhparam -out dhparam.pem 2048复制代码

修改配置文件

cd /etc/nginx/conf.dtouch api.langpz.com-8080.conf复制代码

把下面代码覆盖api.langpz.com-8080.conf文件。

upstream novel-api {    server 127.0.0.1:8080;}# 配置共享会话缓存大小ssl_session_cache shared:SSL:10m;# 配置会话超时时间ssl_session_timeout 10m;# 强制跳转httpsserver {    listen 80;    server_name api.langpz.com;    return 301 https://$server_name$request_uri;}server { listen 443 ssl; server_name api.langpz.com; # 证书文件 ssl_certificate      /etc/nginx/api.langpz.com/1_api.langpz.com_bundle.crt; # 私钥文件 ssl_certificate_key  /etc/nginx/api.langpz.com/2_api.langpz.com.key; # 设置长连接 keepalive_timeout    70; # 优先采取服务器算法 ssl_prefer_server_ciphers on; # 使用DH文件 ssl_dhparam /etc/nginx/api.langpz.com/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 定义算法 ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; # HSTS策略 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always; # 防XSS攻擊 add_header X-Xss-Protection 1; # 禁止服务器自动解析资源类型 add_header X-Content-Type-Options nosniff;  location / {    proxy_pass http://novel-api;    proxy_set_header   X-Real-IP        $remote_addr;    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_redirect     off; }}复制代码

ctrl + c 输入:wq 退出并保存。再执行nginx -s reload。 现在就可以访问。如果访问http协议就会强制跳转到https协议。

SSL安全测试

输入你的域名。 之前在nginx配置加强 HTTPS 安全性,所以结果是A+。

总结

这种部署比较麻烦,部署完发现pm2也有部署功能,2.0用koa.js重构的时候用pm2部署,docker 生成镜像 。

我的博客和github,喜欢就去点点星吧,谢谢。

参考

转载地址:http://ydhyl.baihongyu.com/

你可能感兴趣的文章
js清除缓存方法
查看>>
ALGEBRA-3 线性映射
查看>>
C# 利用ReportViewer生成报表
查看>>
下拉菜单
查看>>
knockout.js 练习一
查看>>
Asp.Net Core SignalR 与微信小程序交互笔记
查看>>
os.linesep提取当前平台使用的换行符
查看>>
到底什么是故事点(Story Point)?
查看>>
修改用户定义的数据类型
查看>>
网络流24题10
查看>>
多域名THINKPHP利用MEMCACHE方式共享SESSION数据(转)
查看>>
C#基础 for 穷举、迭代
查看>>
2018.3.17 模拟赛——(2)删数
查看>>
冒泡排序
查看>>
Mysql字段合并
查看>>
五笔反查工具
查看>>
python 类的继承
查看>>
python 爬取<a>标签内href的方法及遇到的问题
查看>>
.Net 环境下比较各种数据库插入操作的性能
查看>>
CSS: rem
查看>>