云服务器安装node+nginx+MongoDB

很早就买了一个云服务器,在腾讯云上面买的,当时买了好几年,用了几百块吧。具体的配置如下

服务器配置

本来就是想用来练手node+nginx+MongoDB的,一直没时间(其实是太懒了),所以没有着手做此项目。以前也弄过,不过总是断断续续的,而且没有记录,现在再想搭建的时候,已经忘得差不多了。写这篇文章的目的纯粹是为了记录下我搭建的步骤,以供以后查询。

购买服务器

首先就是需要购买一个服务器,不管是1+1+1(1G1核1M)还是其他的配置,只有有服务器就行,因为就是个练手的,没必要那么好。当然,如果你有钱,你可以选择黄金配置。腾讯云阿里云时不时的会有一些活动出来,如果有活动,我会放在本文的下方,以供你们参考。

安装系统

云服务器也是需要安装系统的,以腾讯云的云服务器为例

安装系统

点击右边更多 ==> 重装(安装)系统 ==> 选择系统配置,输入密码开始重装

我这里是用的centerOS系统,你可以使用别的系统,当然,如果是其他的系统,那么安装工具的方法可能会有不同。

Tip:密码可能在第一次使用的时候需要重置。

进入服务器安装工具

上面的配置好了基本上就可以进入服务器安装工具(node+nginx+MongoDB等等)了。

那么,怎么进入呢?同样是腾讯云服务器

链接服务器

点击登录进入服务器

登录方式不同的操作系统是不同的,具体的操作系统可在在相关云服务器网站上面找到。

mac和linux用自带的终端或者使用 Item2 ,windows使用 Putty 是不错的选择。

以下操作按照mac的来

使用Item2连接服务器

1
2
3
4
ssh 用户名@IP地址

# 或者
ssh 用户名@IP地址 -p 端口号

链接错误

1
2
3
4
5
6
7
8
9
10
11
12
13
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:Ppgtgxjj3hnHqRH19D0hz5Vl34vUW0Dah1AJdpLoX6M.
Please contact your system administrator.
Add correct host key in /Users/cpx/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/cpx/.ssh/known_hosts:6
ECDSA host key for 118.24.6.33 has changed and you have requested strict checking.
Host key verification failed.

解决:删除之前的 known_hosts 文件

1
2
3
4
rm -rf ~/.ssh/known_hosts

# 或者更靠谱的方法
ssh-keygen -f .ssh/known_hosts -R 192.168.2.108(你的IP)

之后重新执行命令就可以链接成功

连接成功

安装工具

安装可以使用centerOS中的 yum 工具,不过使用之前最好先 yum update 一波(可选操作)

Node

Node官网复制linux包(Linux Binaries (x64))链接,我当前版本的链接是 https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz 。不是Source Code

下载

1
wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz

解压

1
2
3
4
5
# 如果是 tar.gz 结尾的,使用 tar xvzf 解压
tar xvzf node-v10.16.0-linux-x64.tar.gz

# 如果是 tar.xz 结尾的,使用 tar xvJf 解压 注意 J 是大写的
tar xvJf node-v10.16.0-linux-x64.tar.zx

进入解压的node文件夹

1
cd node-v10.16.0

安装必要的运行文件

1
sudo yum install gcc gcc-c++

配置node,npm软连接,这样就可以在所有目录下使用,注意 -s 不要忘记了,不然会报错。

1
2
ln -s /root/node-v10.16.0-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v10.16.0-linux-x64/bin/npm /usr/local/bin/npm

如果你不小心写错了软链,那么你可能会把它删除
删除软链

查看 node, npm 版本

1
2
node -v
npm -v

出现如下请求,即创建成功
创建成功

安装Nginx

1
yum install nginx

启动nginx

1
service nginx start

启动成功

每一次修改了 nginx.conf 文件后都需要停止 nginx 并重启

1
2
强制停止: pkill -9 nginx
重启:service nginx restart

这里我使用的是yum安装的nginx,默认的安装目录是在 /etc/nginx 这个目录,nginx的配置文件也是在 /etc/nginx/nginx.conf 这里

配置 nginx 代理,编辑 nginx.conf

nginx 默认的服务配置只有一个80端口,配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

这时候我想要添加一个8090端口,我的配置代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server {
listen 8090;
server_name _;
root /data/www/test/index.html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

此时报了错了,访问 118.24.6.33:8090 的时候出现了 403 Forbidden 的错误。

我们知道 HTTP 状态码中,403表示的是没有权限的意思,意思是上面的 /data/www/test/index.html; 我们没有权限访问

这个是因为nginx默认的配置文件中,第 5 行的代码中 user nginx;

1
2
3
4
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

我们需要将 user nginx; 改成 user root;

接着停止重启nginx服务。

这时候访问 118.24.6.33:8090 的时候出现了 404 Not Found 的错误。

再来看看HTTP协议中 404 表示的是没有资源,WHAT?WHY?

查看test文件夹

里面明明就有这个东西啊?

既然里面已经放了东西了,还是 404, 值得我们思考。我们看看默认的 80 端口的 root 配置为 /usr/share/nginx/html。在看看里面呢

/usr/share/nginx/html

里面是有一个html文件的。所以。这个 root 的值是一个目录而不是一个文件,所以,把 /data/www/test/index.html; 改成 /data/www/test 即可。这时候就可以访问 118.24.6.33:8090 了。

nginx接触的不多,所以会出现一些问题,不过都是在问题中慢慢摸索。当然,你也可以看看nginx的配置官网。不过东西有点多,大部分可能涉及不到,所以还是采坑了。

安装git

或许你会用到git clone以前的项目练手,或许你不会。不过还是说一下

使用 yum 安装(推荐。这个安装方便),安装后可直接使用

1
yum install git

到网站git linux 下载你需要的git版本。

下载解压与 node 相同,不在过多说明。

安装 git 的时候你可能还需要安装 curl-devel

1
yum install curl-devel

你还需要生成一个 key 用于git的识别

生成 sshkey,敲三次回车即可

1
ssh-keygen -t rsa -C"xxxxx@xxxxx.com"

查看你的 public key,并把他添加到github

1
cat ~/.ssh/id_rsa.pub

安装MongoDB

前往MongoDB官网选择对应版本,复制下面的链接

1
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.21.tgz
1
2
3
4
5
6
7
8
9
10
# 解压
tar vxzf mongodb-linux-x86_64-3.4.21

# 重命名
mv mongodb-linux-x86_64-3.4.21 mongodb

# 进入文件夹,变量创建 data 和 logs 文件夹
cd mongodb
mkdir -p logs
mkdir -p data

进入bin文件夹创建 mongodb.conf,并配置此文件。注意:mongodb 3.6以上版本不支持下面的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 设置数据文件的存放目录
dbpath = /mongodb/data

# 设置日志文件的存放目录及其日志文件名
logpath = /mongodb/logs/mongodb.log

# 设置端口号(默认的端口号是 27017)
port = 27017

# 设置为以守护进程的方式运行,即在后台运行
fork = true

# nohttpinterface = true
nohttpinterface = true

启动:在bin文件夹下执行

1
2
3
4
./mongod --config mongodb.conf

以修复模式启动 mongodb:
./mongod --repair -f mongodb.conf

安装yarn(可选)

因为在本地使用npm的时候老是出问题,在本地基本上都是使用的是yarn。我怕在服务器上面如果安装依赖包的时候使用npm也像在本地一样出问题,所以还是觉得使用yarn更好

1
2
3
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo

sudo yum install yarn

安装pm2

这个依赖是可以在服务器上面运行node项目的,相比于原生的node启动的文件

1
2
3
4
npm install -g pm2

# 设置软链
ln -s node的具体路径/bin/pm2 /usr/local/bin/pm2

PM2 的主要特性

  • 内建负载均衡(使用 Node cluster 集群模块)
  • 后台运行
  • 0 秒停机重载,我理解大概意思是维护升级的时候不需要停机.
  • 具有 Ubuntu 和 CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口 API ( Nodejs 模块,允许和 PM2 进程管理器交互 )

具体的使用方法

1
2
3
4
5
#启动
pm2 start xxx.js

#停止 (AppName|id) 如下放图
pm2 stop (AppName|id)

启动成功

注意:这里pm2启动的是node的项目。而不是react,vue这些项目。我刚开始犯错了。

文章作者: 踏浪
文章链接: https://www.lyt007.cn/技术/云服务器安装node-nginx-MongoDB.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 平凡的生活,不平凡的人生
支付宝
微信打赏