当前位置: 首页 > 后端技术 > Node.js

小说api服务部署到腾讯云

时间:2023-04-03 15:14:51 Node.js

小说api服务部署到腾讯云小说api1.0版本完成,下面开始部署到服务器,使用nginx、pm2、nvm、git、OpenSSL。服务器配置:CentOS7.464位1核2GB1Mbpsnode版本:8.9.0nvm版本:0.33.11npm版本:5.5.1nginx版本:1.12.2git版本:2.9.5第一步在添加pm2配置文件novelapi项目在根目录下创建一个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文件中添加npmrundeploy部署命令。"deploy":"pm2startpm2.json"pm2常用命令。pm2save保存当前进程列表。pm2resurrect在启动前保存进程列表。pm2restartapp.js|app_name重启进程pm2startapp.js启动进程pm2list查看进程列表pm2stopapp_name|app_id停止指定应用。all停止所有应用第二步买服务器和域名买服务器https://buy.cloud.tencent.com/cvm?tab=lite,我买的是CentOS7.464位1核2GB1Mbps服务器。如果您只是尝试部署流程,您可以选择按小时计费。购买域名https://dnspod.cloud.tencent.com/?from=qcloudProductDns建议选择.com域名。第三步,设置子域名,添加一个以api开头的子域名https://console.cloud.tencent.com/domain,然后添加解析。第四步,登录服务器安装软件。登录服务器,执行以下安装命令。安装nginxyuminstall-ynginxnginx-vinstallnvmcurl-o-https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh|bashnvm--versioninstallnodeandpm2,apidocnvminstall8.9.0nvmuse8.9.0node-vnpm-vnpminstall-gpm2apidocinstallgityuminstall-ycurl-develexpat-develgettext-developenssl-develzlib-develtaryum安装-ygcc-c++perl-ExtUtils-MakeMakercd/usr/srcwgethttps://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gztarxfgit-2.9.5.tar.gzcdgit-2.9.5makeconfiguremakeprofix=/usr/gitmakeinstallecho"exportPATH=$PATH:/usr/git/bin">>/etc/profilesource/etc/profilegit--version//配置gitgitconfig--globaluser.name"用户名"gitconfig--globaluser.email邮箱地址克隆服务器上的git仓库,首先进入home路径创建wwwroot文件夹。cd/home&&mkdirwwwrootcdwwwrootgitclonehttps://github.com/lanpangzhi/novel-api.gitcdnovel-apinpminstallnpmrundocnpmrundeploy本应用在pm2上启动。配置nginx,先启动nginx。nginxhttp://123.206.45.87在浏览器中输入服务器ip,可以看到nginx已经启动。进入nginx配置目录,新建一个文件。cd/etc/nginx/conf.dtouchapi.langpz.com-8080.conf如果一个服务器有多台服务器,建议使用域名和端口作为配置文件名。编辑api.langpz.com-8080.conf配置文件。viapi.langpz.com-8080.conf复制并粘贴以下代码。upstreamnovel-api{server127.0.0.1:8080;}server{listen80;server_name自己的域名;location/{proxy_passhttp://novel-api;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header主机$http_host;proxy_set_headerX-NginX-Proxytrue;proxy_redirect关闭;}}ctrl+c输入:wq退出并保存。然后执行nginx-sreload在浏览器中输入你的域名就可以看到文档了。http://api.langpz.comgzipcompresscd/etc/nginx/vinginx.conf复制粘贴以下代码。##gzip压缩gzipon;#ie6不启用gzipgzip_disable"msie6";gzip_varyon;gzip_proxiedany;#压缩级别1-9gzip_comp_level2;gzip_buffers168k;gzip_http_version1.1;#forMIMEtypesotherthan"text/html"启用压缩gzip_typestext/plaintext/cssapplication/jsonapplication/x-javascriptapplication/javascriptimage/tiffimage/x-iconapplication/font-woffapplication/vnd.ms-fontobjecttext/javascript;ctrl+c输入:wq退出并保存。然后执行nginx-sreload。你可以去站长之家看看你的压缩率http://tool.chinaz.com/gzips/隐藏nginx版本号或者修改nginx.conf文件vinginx.conf//把下面的代码复制过去#隐藏nginx版本号server_tokensoff;ctrl+c输入:wq退出并保存。然后执行nginx-sreload。这里不显示nginx版本号。配置ssl证书https,给你的网站加一个小绿锁。我用的是腾讯云的免费证书,也可以自己生成。https://cloud.tencent.com/product/ssl?from=qcloudHpHeaderSsl,使用域名免费版。申请腾讯云ssl证书,直接点击下一步,然后使用推荐选项进行验证。申请不到十分钟就会很快下来,到时候会有邮件和短信通知。下载证书并上传到服务器找到腾讯云的ssl证书管理下载证书。压缩包里有三个文件夹,找到Nginx文件夹。在服务器进入nginx的目录下新建一个文件夹。cd/etc/nginx/mkdirapi.langpz.com然后将Nginx文件夹下的两个文件上传到服务器的/etc/nginx/api.langpz.com文件夹中。你可以下载一个FileZilla软件或者下载另一个ftp工具,或者使用命令行。我在这里下载了FileZilla并用它来上传。加强HTTPS安全首先在/etc/nginx/api.langpz.com目录下运行如下代码生成dhparam.pem文件cd/etc/nginx/api.langpz.comopenssldhparam-outdhparam.pem2048修改配置filecd/etc/nginx/conf.dtouchapi.langpz.com-8080.conf用以下代码覆盖api.langpz.com-8080.conf文件。upstreamnovel-api{server127.0.0.1:8080;}#配置共享会话缓存大小ssl_session_cacheshared:SSL:10m;#配置会话超时ssl_session_timeout10m;#强制重定向到httpsserver{listen80;服务器名称api.langpz.com;返回301https://$server_name$request_uri;}server{listen443ssl;服务器名称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_timeout70;#优先服务器算法ssl_prefer_server_cipherson;#使用DH文件ssl_dhparam/etc/nginx/api.langpz.com/dhparam.pem;ssl_protocolsTLSv1TLSv1.1TLSv1.2;#定义算法ssl_ciphers"EECDH+ECDSA+AESGCMEECDH+aRSA+AESGCMEECDH+ECDSA+SHA384EECDH+ECDSA+SHA256EECDH+aRSA+SHA384EECDH+aRSA+SHA256EECDH+aRSA+RC4EECDHEDH+aRSA!aNULL!eNULL!LOW!3DES!MD5!EXP!PSK!SRP!DSS!RC4";#HSTS策略add_headerStrict-Transport-Security"max-age=31536000;includeSubDomains;preload"always;#防XSS攻击add_headerX-Xss-保护1;#禁止服务器自动解析资源类型add_headerX-Content-Type-Optionsnosniff;location/{proxy_passhttp://novel-api;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_header主机$http_host;proxy_set_headerX-NginX-Proxytrue;proxy_redirect关闭;}}ctrl+c输入:wq退出保存,然后执行nginx-sreload。您现在可以访问https://api.langpz.com。如果访问http协议,会强制跳转到https协议。SSLsecuritytest[](https://www.ssllabs.com/sslte...输入你的域名。之前配置nginx加强HTTPS安全,结果是A+。总结一下,这种部署比较麻烦。之后deployment,我发现pm2也有部署功能,2.0用koa.js重构的时候,用pm2部署,docker生成镜像,我的博客和github,如果喜欢请到点点星,谢谢你。https://github.com/lanpangzhihttp://blog.langpz.com参考https://nginx.org/en/docs/https://github.com/creationix/nvmhttps://www.thinkjs.org/zh-cn/doc/3.0/deploy.htmlhttps://www.cnblogs.com/chyingp/p/pm2-documentation.htmlhttp://www.runoob.com/git/git-install-setup.htmlhttps://nginx.rails365.net/chapters/install.htmlhttps://www.cnblogs.com/nuccch/p/7681592.htmlhttps://aotu.io/notes/2016/08/16/nginx-https/index.html