CentOS7 — Node.js + MariaDB + Nginx + PM2 服務(wù)器搭建

一、準(zhǔn)備

1.wget
用于從指定的URL地址下載文件;
wget很穩(wěn)定同時(shí)支持?jǐn)帱c(diǎn)下載,在窄帶寬和不穩(wěn)定網(wǎng)絡(luò)中有很強(qiáng)的適應(yīng)性。

2.yum
一個(gè)在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器;
基于RPM包管理,能夠從指定的服務(wù)器自動(dòng)下載RPM包并且安裝,
可以自動(dòng)處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無(wú)須繁瑣地一次次下載、安裝。

3.Node.js
Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境。 
Node.js 使用了一個(gè)事件驅(qū)動(dòng)、非阻塞式 I/O 的模型,使其輕量又高效。

4.NPM
Node.js自帶的包管理工具,是全球最大的開(kāi)源庫(kù)生態(tài)系統(tǒng)。

5.MariaDB
MariaDB數(shù)據(jù)庫(kù)管理系統(tǒng)是MySQL的一個(gè)分支,主要由開(kāi)源社區(qū)在維護(hù);
MariaDB完全兼容MySQL,包括API和命令行;
其存在的目的是因?yàn)镸ySQL被Oracle收購(gòu),存在不開(kāi)源的風(fēng)險(xiǎn),MariaDB是一個(gè)很好的代替品。

6.Nginx
Nginx 是一個(gè)高性能的 Web 和反向代理服務(wù)器。

7.PM2
PM2是一個(gè)帶有負(fù)載均衡功能的Node應(yīng)用的進(jìn)程管理器。
輕松實(shí)現(xiàn)性能監(jiān)控、自動(dòng)重啟、負(fù)載均衡等功能

8.登錄服務(wù)器,第一次使用前更新下已安裝的RPM軟件包
yum update -y

二、Node.js 配置

1.該文件件通常存放軟件源代碼
cd /usr/local/src/

2.下載
wget https://nodejs.org/dist/v8.12.0/node-v8.12.0-linux-x64.tar.xz

3.解壓
tar -vxJf node-v8.12.0-linux-x64.tar.xz

4.將解壓的`Node.js`目錄移動(dòng)到 /usr/local 目錄下
mv node-v8.12.0-linux-x64 /usr/local/node

5.配置`Node`軟鏈接到 /bin 目錄
ln -s /usr/local/node/bin/node /bin/node

6.Node 中包含 npm,我們只需將其軟鏈接到 bin 目錄下
ln -s /usr/local/node/bin/npm /bin/npm

7.配置環(huán)境變量,將 /usr/local/node/bin 目錄添加到 $PATH 環(huán)境變量中可以方便地使用通過(guò) npm 全局安裝的第三方工具
echo 'export PATH=/usr/local/node/bin:$PATH' >> /etc/profile

8.生效環(huán)境變量
source /etc/profile

9.檢查時(shí)候安裝成功
node -v

三、MariaDB 配置

1.安裝
yum install mariadb-server mariadb

2.啟動(dòng)MariaDB
systemctl start mariadb    或     service mariadb start

3.設(shè)置開(kāi)機(jī)啟動(dòng)
systemctl enable mariadb   或   chkconfig mariadb on

4.相關(guān)簡(jiǎn)單配置
mysql_secure_installation
//首次會(huì)提示如下,直接回車
Enter current password for root (enter for none):

//設(shè)置密碼
Set root password? [Y/n] <– 是否設(shè)置root用戶密碼,輸入y并回車或直接回車
New password: <– 設(shè)置root用戶的密碼
Re-enter new password: <– 再輸入一次你設(shè)置的密碼
//其他設(shè)置
Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,回車
Disallow root login remotely? [Y/n] <–是否禁止root遠(yuǎn)程登錄,回車,
Remove test database and access to it? [Y/n] <– 是否刪除test數(shù)據(jù)庫(kù),回車
Reload privilege tables now? [Y/n] <– 是否重新加載權(quán)限表,回車
//初始化MariaDB,登錄
mysql -uroot -p    //回車之后輸入密碼

//配置MariaDB的字符集
//客戶端設(shè)置
vim /etc/my.cnf.d/mysql-clients.cnf

[mysql]
default-character-set=utf8

//服務(wù)端設(shè)置
vim /etc/my.cnf.d/server.cnf

[mysqld]
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

#開(kāi)啟慢查詢
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1

//配置完成,退出MariaDB后重啟MariaDB
systemctl restart mariadb
//進(jìn)入MariaDB查看字符集
mysql>show variables like "%character%";show variables like "%collation%";
//顯示如下

MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
----字符集配置完成

5.添加用戶,設(shè)置權(quán)限
//創(chuàng)建用戶命令
mysql>create user username@localhost identified by 'password';
//直接創(chuàng)建用戶并授權(quán)的命令
mysql>grant all on *.* to username@localhost indentified by 'password';
//授予外網(wǎng)登陸權(quán)限,但不能二級(jí)授權(quán)
mysql>grant all privileges on *.* to username@'%' identified by 'password';
//授予權(quán)限并且可以二次授權(quán)
mysql>grant all privileges on *.* to username@'hostname' identified by 'password' with grant option;

"%"表示任何主機(jī)都可以遠(yuǎn)程登錄到該服務(wù)器上訪問(wèn)
其中只授予部分權(quán)限把 其中 all privileges或者all改為: 
`select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file `
其中一部分。

四、Nginx 配置

1.安裝
yum install nginx

2.檢查是否安裝成功
nginx -t //有如下提示代表安裝成功

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

3.Nginx操作
systemctl start nginx.service  // 啟動(dòng)nginx
systemctl stop nginx.service   // 停止nginx
systemctl restart nginx.service // 重啟nginx
systemctl enable nginx.service // 設(shè)置開(kāi)機(jī)啟動(dòng)

Nginx啟動(dòng)后在瀏覽器中輸入http:// 阿里云外網(wǎng)地址,你就可以看到一個(gè)nginx頁(yè)面

4.Nginx配置
//Nginx配置文件為 /etc/nginx/nginx.conf
server {
    listen 80;
    location / {
        proxy_pass http://127.0.0.1:3000; # 本地node啟動(dòng)的端口為3000
    }
}

注:每句結(jié)束都要寫(xiě)分號(hào),不然重啟會(huì)報(bào)如下錯(cuò)誤
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

//重啟
systemctl restart nginx.service

二級(jí)域名實(shí)現(xiàn)代理:
首先在域名解析時(shí),設(shè)置域名解析到同一個(gè)服務(wù)器。
其次設(shè)置多個(gè)代理時(shí),可以在一個(gè)文件中設(shè)置多個(gè)server實(shí)現(xiàn)或者創(chuàng)建多個(gè)配置文件,如在/etc/nginx/nginx.conf中,有個(gè)關(guān)鍵字include。該字段指定配置文件位置

include /etc/nginx/conf.d/*.conf;
# 代表conf.d文件下所有.conf結(jié)尾的文件都為配置文件。下面就在一個(gè)文件中配置

server {
    listen 80;
    server_name xxx.abc.com;
    location / {
        proxy_pass http://127.0.0.1:3000; # 本地node啟動(dòng)的端口為3000
    }
}
server {
    listen 80;
    server_name www.abc.com;
    location / {
        proxy_pass http://127.0.0.1:3001; # 本地node啟動(dòng)的端口為3000
    }
}
// 如果有二級(jí)域名和一級(jí)域名同時(shí)設(shè)置時(shí),二級(jí)域名一定要放在前面。

五、PM2配置

1.全局安裝
npm install -g pm2
2.創(chuàng)建軟鏈接,使全局可以使用pm2命令
ln -s /usr/local/node/bin/pm2 /bin/pm2
3.常用命令
//啟動(dòng)項(xiàng)目
pm2 start app.js
//查看進(jìn)程狀態(tài)
pm2 status
//關(guān)閉項(xiàng)目
pm2 stop id   //id是進(jìn)程id
//啟動(dòng)相應(yīng)進(jìn)程的項(xiàng)目
pm2 start id
//設(shè)置pm2開(kāi)機(jī)啟動(dòng)
pm2 startup
pm2 save
//--watch參數(shù),代碼發(fā)生變化,pm2會(huì)幫你重啟服務(wù)
pm2 start app.js --watch

六、常用軟件

1.git
yum install git
2.上傳下載
yum install lrzsz
3.壓縮解壓
yum install zip unzip

[參考文章]
https://blog.csdn.net/zhezhebie/article/details/73549741
http://www.itdecent.cn/p/7aad651bdbb4
感謝以上網(wǎng)友的技術(shù)文章分享

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容