下面这个图片,是森哥的个人博客。从2020年1月份开始开通到现在。里面发布的内容,都是森哥日常的工作过程中积累下来的内容,或是觉得不错的资料,经过森哥自己搭建、体验后,整理出来的文档。
在此过程中,特别感谢作者:生哥
在初始部署使用过程中,给了很多的帮助,系统才得以顺利部署成功并投入使用。
下面就正式进入基于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
查看有没有启动起来,可以从两个方面来看。
端口号27017 是MongoDB 默认的端口号
由此可以看出,mongodb 已正确安装并运行起来了。
2.4、Nodejs安装
如上一样的,使用yum安装可以减少新手的很多问题。
sudo yum install nodejssudo yum install npm //由于新版的NodeJS已集成了npm,这步可以忽略。
已安装成功。
三、内容管理系统部署
将代码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
请根据实际路径及您自己的域名,进行修改。
生成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端口。
当一个生产环境的网站在投入使用时,不可能通过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 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()方法理解为 用户的验证功能
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
初始化数据
npm run init
重启DoraCMS内容管理系统
cd /home/website/DoraCMSnpm run stop && npm start
首页访问
您的域名
初始前台用户名密码:doracms/123456
后台登陆
您的域名/dr-admin
初始管理账户密码:doramart/123456
至此,一套完整的DoraCMS内容管理系统搭建完成。
为了更优化您的前台,再友好的访问界面,可以至后台中:系统管理-->模板配置
好了,现在,您也能拥有一套与森哥一模一样的博客系统。