基於NodeJS,輕鬆擁有一個非常棒的個人博客

零的生活 發佈 2020-02-27T02:41:47+00:00

setenforce0 2.1.2、關閉系統自帶防火牆systemctl stop firewalld   //停止系統默認的防火牆

下面這個圖片,是森哥的個人博客。從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內容管理系統搭建完成。

為了更優化您的前台,再友好的訪問介面,可以至後台中:系統管理-->模板配置



好了,現在,您也能擁有一套與森哥一模一樣的博客系統。

關鍵字: