四时宝库

程序员的知识宝库

基于NodeJS,轻松拥有一个非常棒的个人博客

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



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

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

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

一、基础环境:

操作系统:CentOS7.6 x64
应用软件:
Nginx
Mongodb
Nodejs
Eggjs

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

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

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

二、环境搭建

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

2.1.1、关闭SELINUX

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 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 tcpdump
yum install -y vim python
yum 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-Embed
yum install -y pcre pcre-devel  
yum install -y git

2.1.4、yum源更新、加速下载速度及解决中断问题

yum install -y epel-release
yum clean all
yum makecache
mkdir /root/software
cd /root/software
yum install -y yum-fastestmirror
wget https://wilmer.gaa.st/downloads/axel-1.0b.tar.gz
tar zxvf axel-1.0b.tar.gz
cd axel-1.0b
./configure --i18n=1
make
make install
yum -y install yum-utils
yum clean all
yum-complete-transaction --cleanup-only

2.2、Nginx安装

cd /root/software
wget https://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
rpm -ivh epel-release-7-11.noarch.rpm
yum install automake autoconf libtool make
yum install -y nginx
systemctl 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 Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
yumclean all

yum makecache

yum install -y mongodb-org
systemctl enable mongod
systemctl start mongod

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




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

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

2.4、Nodejs安装

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

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



已安装成功。

三、内容管理系统部署

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

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

mkdir /home/website
cd /home/website
git 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/DoraCMS
npm install egg-scripts -g   // eggjs 脚本执行
npm install gulp -g  // 静态资源构建
npm install apidoc -g  // api文档生成

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

npm install

安装插件缺少的依赖

cd lib/plugin/egg-dora-content
npm install --unsafe-perm=true
cd lib/plugin/egg-dora-maildelivery
npm install --unsafe-perm=true

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

初始化数据

npm run init

四、内容管理系统配置

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

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

cd /home/website/DoraCMS
vi config/config.prod.js 

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



生成api文档

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

4.2、配置Nginx

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

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

DoraCMS端口修改方法如下:

cd /home/website/DoraCMS
vi config/config.default.js

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



当一个生产环境的网站在投入使用时,不可能通过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   //检查配置文件是否正确



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 admin
db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

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

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



5.1.2、新建用户

use yourdatabase
db.createUser({ user: "youruser2", pwd: "yourpassword2", roles: [{ role: "readWrite",db: "yourdatabase" }] })

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

5.1.3、修改系统配置

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

cd /home/website/DoraCMS
vi config/config.prod.js

链接的格式如下:

mongodb://youruser2:yourpassword2@localhost/yourdatabase



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

您的域名

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

后台登陆

您的域名/dr-admin

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

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

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



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

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接