下面这个图片,是森哥的个人博客。从2020年1月份开始开通到现在。里面发布的内容,都是森哥日常的工作过程中积累下来的内容,或是觉得不错的资料,经过森哥自己搭建、体验后,整理出来的文档。




nginx 部署 node后端 nginx配置nodejs_Nginx


在此过程中,特别感谢作者:生哥

在初始部署使用过程中,给了很多的帮助,系统才得以顺利部署成功并投入使用。

下面就正式进入基于NodeJS的博客的搭建使用。

一、基础环境:

操作系统:CentOS7.6 x64应用软件:NginxMongodbNodejsEggjs

森哥推荐的DoraCMS的博客,是一套结构简单、易于拓展、特别适合前端开发工程师做二次开发的内容管理系统。

为了防止被判定为疑是广告,这里就不提供具体的网址了,大家可以到GitHub或Gitee(码云)上去,通过DoraCMS关键字进行搜索。

森哥在这里,尽量给的是yum的安装方法,这样,对新手来说,是最容易上手的,也减少了编译安装过程中可能遇到的其他不必要麻烦。

二、环境搭建

2.1、基础环境配置及相关应用依赖安装

2.1.1、关闭SELINUX
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/configsetenforce 0
2.1.2、关闭系统自带防火墙
systemctl stop firewalld    //停止系统默认的防火墙systemctl mask firewalld   //屏蔽服务(让它不能启动)
2.1.3、常用管理工具及依赖安装
yum install -y chkconfig  net-tools telnet ntsysv mlocate lrzsz wget lsof setuptool tcpdumpyum install -y vim pythonyum install -y make cmake gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers  gd gd-devel perl expat expat-devel nss_ldap unixODBC-devel libxslt-devel libevent-devel libtool-ltdl bison libtool zip unzip gmp-devel python-devel perl-devel perl-ExtUtils-Embedyum install -y pcre pcre-devel  yum install -y git
2.1.4、yum源更新、加速下载速度及解决中断问题
yum install -y epel-releaseyum clean allyum makecache
mkdir /root/softwarecd /root/softwareyum install -y yum-fastestmirrorwget https://wilmer.gaa.st/downloads/axel-1.0b.tar.gztar zxvf axel-1.0b.tar.gzcd axel-1.0b./configure --i18n=1makemake installyum -y install yum-utilsyum clean allyum-complete-transaction --cleanup-only

2.2、Nginx安装

cd /root/softwarewget https://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpmrpm -ivh epel-release-7-11.noarch.rpm
yum install automake autoconf libtool makeyum install -y nginxsystemctl enable nginx     //设置开机自启动systemctl start nginx

2.3、MongoDB安装

安装调试阶段,建议mongodb不要设置密码访问,等都通过后,再建议加个密码权限,保障安全。

创建yum源
vi /etc/yum.repos.d/mongodb-org-4.0.repo
[mongodb-org-4.0]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
yumclean allyum makecacheyum install -y mongodb-org
systemctl enable mongodsystemctl start mongod

查看有没有启动起来,可以从两个方面来看。


nginx 部署 node后端 nginx配置nodejs_nginx 部署 node后端_02


nginx 部署 node后端 nginx配置nodejs_nginx_03


端口号27017 是MongoDB 默认的端口号

由此可以看出,mongodb 已正确安装并运行起来了。

2.4、Nodejs安装

如上一样的,使用yum安装可以减少新手的很多问题。

sudo yum install nodejssudo yum install npm   //由于新版的NodeJS已集成了npm,这步可以忽略。


nginx 部署 node后端 nginx配置nodejs_nginx 部署 node后端_04


已安装成功。

三、内容管理系统部署

将代码git clone至本地。接下来,也是站点的目录。森哥个人的习惯是,有单独的数据盘,就放在数据盘上,若是没有就统一放在/home/website下面。现在假设,是在/home/weisite下面。

现在DoraCMS最新的版本为:2.1.5,我们要的就是这个最新版本。

mkdir /home/websitecd /home/websitegit clone -b 2.1.5 https://github.com/doramart/DoraCMS.git   //这个是国外的服务器,速度会比较慢git clone -b 2.1.5 https://gitee.com/doramart/DoraCMS.git   //国内的码云,速度很快。推荐使用。

下载安装后,现在开始安装相关依赖。

安装全局依赖

cd /home/website/DoraCMSnpm install egg-scripts -g   // eggjs 脚本执行npm install gulp -g  // 静态资源构建npm install apidoc -g  // api文档生成

安装本系统依赖(代码根目录下)

npm install

安装插件缺少的依赖

cd lib/plugin/egg-dora-contentnpm install --unsafe-perm=truecd lib/plugin/egg-dora-maildeliverynpm install --unsafe-perm=true

带上--unsafe-perm=true参数,原因是这里面有一个插件只支持MAC OSX环境的,不带这个参数的话,会提示出错。

初始化数据

npm run init

四、内容管理系统配置

4.1、修改内容管理系统配置

因为是生产环境,所以,需要对系统的配置文件config.prod.js进行参数修改。

cd /home/website/DoraCMSvi config/config.prod.js

请根据实际路径及您自己的域名,进行修改。


nginx 部署 node后端 nginx配置nodejs_nginx_05


生成api文档

npm run makePrdDocapi访问地址: http://localhost:8080/static/apidoc/index.html

4.2、配置Nginx

Nginx是啥东西,这里就不赘言,直接进入正题。

由于DoraCMS内容管理系统,启动的时候,默认是使用8080端口,若是您的服务器上已安装了tomcat或是其他的应用已占用了8080端口,那么,记得,要先把DoraCMS内容管理系统的端口给予修改成另一个,这个端口需要记下来,回头使用Nginx转发的时候,会用到。

DoraCMS端口修改方法如下:

cd /home/website/DoraCMSvi config/config.default.js

将port: 8080改成自定义的,这里,森哥就不修改了,继续使用默认的8080端口。


nginx 部署 node后端 nginx配置nodejs_Nginx_06


当一个生产环境的网站在投入使用时,不可能通过IP加端口的方式来访问的。那么,就得考虑使用web服务了,这里,森哥推荐的是Nginx,若是您想使用Apache也没意见,看个人喜欢了。

Nginx已安装过,目前都是按默认配置的,其他过程不多说,直接进入实操阶段。

  • 申请SSL域名证书,可以在阿里云上面申请到免费的,过程不多说。
  • 将申请下来的证书,上传至服务器,然后添加Nginx配置文件。
cd /etc/nginx/conf.d/vi fixes.cn.conf
upstream ups_blog {    server 127.0.0.1:8080;}server {        listen 80;        server_name fixes.cn www.fixes.cn;        rewrite ^(.*)$  https://fixes.cn$1 permanent; }server {        listen 443 ssl;        server_name fixes.cn www.fixes.cn;        ssl_certificate      /etc/nginx/ssl/fixes.cn.pem;        ssl_certificate_key   /etc/nginx/ssl/fixes.cn.key;        ssl_session_timeout  5m;        ssl_protocols TLSv1;        ssl_ciphers  HIGH:!aNULL:!MD5;        ssl_prefer_server_ciphers   on;        location / {                proxy_set_header  REMOTE-HOST $remote_addr;                proxy_pass http://ups_blog/;                proxy_set_header   Upgrade $http_upgrade;                proxy_set_header   Connection keep-alive;                proxy_set_header   Host $host;                proxy_cache_bypass $http_upgrade;                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;                proxy_set_header   X-Forwarded-Proto $scheme;                proxy_set_header X-Real-IP $remote_addr;                proxy_next_upstream off;                proxy_connect_timeout   300s;                proxy_read_timeout      300s;                proxy_send_timeout      300s;                client_max_body_size 16m;                proxy_buffer_size  128k;                proxy_buffers   32 32k;                proxy_busy_buffers_size 128k;                client_body_buffer_size 512k;                index  index.php index.html index.shtml;        }   #log...}
nginx -t   //检查配置文件是否正确


nginx 部署 node后端 nginx配置nodejs_nginx nodejs环境配置_07


4.3、启动相关服务

生产模式启动

npm start

生产模式停止

npm run stop

Nginx启动

systemctl start nginx

Nginx停止

systemctl stop nginx

Nginx重启

systemctl restart nginx

重启后即可通过域名直接访问您的博客系统了。

先别急着添加内容。下面还要对安全进行处理一下。

五、加把安全锁

之前我们为了调试方便,没给MongoDB设置密码,但在生产环境中,建议还是使用密码,是为了更安全。

5.1、MongoDB用户操作

5.1.1、新建管理员用户
mongo
show dbs    //新版本没有admin数据库,直接继续下面的操作use admindb.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

mongodb中的用户是基于身份role的,该管理员账户的 role是 userAdminAnyDatabase。 ‘userAdmin’代表用户管理身份,’AnyDatabase’ 代表可以管理任何数据库。

db.auth("useradmin", "adminpassword") 如果返回1,则表示成功。exit退出系统db.auth()方法理解为 用户的验证功能


nginx 部署 node后端 nginx配置nodejs_nginx_08


5.1.2、新建用户
use yourdatabasedb.createUser({ user: "youruser2", pwd: "yourpassword2", roles: [{ role: "readWrite",db: "yourdatabase" }] })

该用户用于该数据的读写,只拥有读写权限。

5.1.3、修改系统配置

现在修改DoraCMS内容管理系统中的配置文件。

cd /home/website/DoraCMSvi config/config.prod.js

链接的格式如下:

mongodb://youruser2:yourpassword2@localhost/yourdatabase


nginx 部署 node后端 nginx配置nodejs_mongodb_09


初始化数据
npm run init
重启DoraCMS内容管理系统
cd /home/website/DoraCMSnpm run stop && npm start
首页访问

您的域名

初始前台用户名密码:doracms/123456

后台登陆

您的域名/dr-admin

初始管理账户密码:doramart/123456

至此,一套完整的DoraCMS内容管理系统搭建完成。

为了更优化您的前台,再友好的访问界面,可以至后台中:系统管理-->模板配置


nginx 部署 node后端 nginx配置nodejs_nginx 部署 node后端_10


好了,现在,您也能拥有一套与森哥一模一样的博客系统。