很早就买了一个云服务器,在腾讯云上面买的,当时买了好几年,用了几百块吧。具体的配置如下
本来就是想用来练手node+nginx+MongoDB的,一直没时间(其实是太懒了),所以没有着手做此项目。以前也弄过,不过总是断断续续的,而且没有记录,现在再想搭建的时候,已经忘得差不多了。写这篇文章的目的纯粹是为了记录下我搭建的步骤,以供以后查询。
购买服务器
首先就是需要购买一个服务器,不管是1+1+1(1G1核1M)还是其他的配置,只有有服务器就行,因为就是个练手的,没必要那么好。当然,如果你有钱,你可以选择黄金配置。腾讯云阿里云时不时的会有一些活动出来,如果有活动,我会放在本文的下方,以供你们参考。
安装系统
云服务器也是需要安装系统的,以腾讯云的云服务器为例
点击右边更多 ==> 重装(安装)系统 ==> 选择系统配置,输入密码开始重装
我这里是用的centerOS系统,你可以使用别的系统,当然,如果是其他的系统,那么安装工具的方法可能会有不同。
Tip:密码可能在第一次使用的时候需要重置。
进入服务器安装工具
上面的配置好了基本上就可以进入服务器安装工具(node+nginx+MongoDB等等)了。
那么,怎么进入呢?同样是腾讯云服务器
链接服务器
登录方式不同的操作系统是不同的,具体的操作系统可在在相关云服务器网站上面找到。
mac和linux用自带的终端或者使用 Item2 ,windows使用 Putty 是不错的选择。
以下操作按照mac的来
使用Item2连接服务器
1 | ssh 用户名@IP地址 |
链接错误
1 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
解决:删除之前的 known_hosts
文件
1 | rm -rf ~/.ssh/known_hosts |
之后重新执行命令就可以链接成功
安装工具
安装可以使用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
2ln -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
2node -v
npm -v
出现如下请求,即创建成功
安装Nginx
1 | yum install nginx |
启动nginx1
service nginx start
每一次修改了 nginx.conf 文件后都需要停止 nginx 并重启
1 | 强制停止: pkill -9 nginx |
这里我使用的是yum
安装的nginx,默认的安装目录是在 /etc/nginx
这个目录,nginx的配置文件也是在 /etc/nginx/nginx.conf
这里
配置 nginx 代理,编辑 nginx.conf
nginx 默认的服务配置只有一个80端口,配置如下
1 | server { |
这时候我想要添加一个8090端口,我的配置代码如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19server {
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
4user 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?
里面明明就有这个东西啊?
既然里面已经放了东西了,还是 404, 值得我们思考。我们看看默认的 80 端口的 root
配置为 /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-devel1
yum install curl-devel
你还需要生成一个 key 用于git的识别
生成 sshkey,敲三次回车即可1
ssh-keygen -t rsa -C"xxxxx@xxxxx.com"
查看你的 public key,并把他添加到github1
cat ~/.ssh/id_rsa.pub
安装MongoDB
前往MongoDB官网选择对应版本,复制下面的链接1
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.21.tgz
1 |
|
进入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 | curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo |
安装pm2
这个依赖是可以在服务器上面运行node项目的,相比于原生的node启动的文件
1 | npm install -g 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这些项目。我刚开始犯错了。