一、购买服务器并远程连接

1.购买服务器和域名

可以选择阿里云或者是其他的厂商的服务器。然后会获得服务器ip地址,用户名和密码。

购买域名,将域名绑定到ip地址上。

2.下载xshell,winscp

xshell和winscp都是可以用来操控服务器的,比如上传上传文件,修改文件权限等。

一个是有图形化的操作,一个是用代码操控。

我两个都下了,因为我怕xsehll没能操控好的地方,用可视化图形来操控。

连接服务器

打开xshell

二、安装node

参考这篇文章:https://blog.csdn.net/q3585914/article/details/75306447

1.首先切换到/usr/local/src 使用wget下载node文件

cd /usr/local/src

wget https://nodejs.org/dist/v6.11.1/node-v6.11.1-linux-x64.tar.xz

 

如果不知道wget是什么,那就去node官网直接下载tar.xz后缀的文件到自己电脑。

node官网所有版本的下载地址:https://nodejs.org/en/download/releases/

打开winscp连接服务器,连接方式和xshell差不多。

找到root文件夹。把下载的tar.xz文件上传上去。注意要下linux版本的。

2.解压到当前文件夹

打开xsehll我们可以看到是一个撇的路径这就是已经在root目录下了。

注意:如果不是一个撇,通过直接cd回车就可以回到这个root目录下。

不要输入成cd /  变成这样 。这个就不是在root目录下了

解压刚才上传到服务端的文件:

tar xvf node-v6.11.1-linux-x64.tar.xz

3.创建软链接,设置全局环境便令使node和npm命令全局有效

通过创建软链接的方法,使得在任意目录下都可以直接使用node和npm命令:

ln -s /usr/local/src/node-v6.11.1-linux-x64/bin/node /usr/local/bin/node

ln -s /usr/local/src/node-v6.11.1-linux-x64/bin/npm /usr/local/bin/npm

node -v 查看node版本检测是否安装成功。

如果报如下错误:

bash node :command not found

那就需要设置全局环境变量:修改/etc/profile文件使其永久性生效,并对所有系统用户生效。

 vi /etc/profile

  

按键盘j字母移动到最下面一行加上:

export NODE_HOME=/usr/local/src/node-v10.15.0-linux-x64/bin

export PATH=$NODE_HOME:$PATH

然后保存退出,重启,之后node、npm就配置好了

如果不会使用vi命令编辑文件,通过winscp将文件下载到本地,然后使用sublime,vs code等编辑器打开,不要直接记事本打开,编辑保存,上传到服务端。

不要使用记事本直接打开,也不要只用winscp提供的编辑器打开编辑,会造成一些错误,下面会说到。

三、安装mongodb

1.安装

到官网下载,见官网有安装说明。https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

选择社区版,以及选择合适的linux版本。我的是centOS所以选择了RedHat

安装MongoDB

sudo yum install -y mongodb-org

取消自动升级

新版本出来yum会自动升级,添加以下代码到/etc/yum.repos.d/mongodb-org-3.4.repo文件中

exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

下面是mongdb默认数据库文件以及日志的指令位置

  • /var/lib/mongo (the data directory)
  • /var/log/mongodb (the log directory)

开启mongodb

sudo service mongod start

关闭MongoDB

sudo service mongod stop

重启MongoDB.

sudo service mongod restart

四、配置mongoDB

创建用户

否则不可以可以使用如mongoimport上传数据等一些操作。

原因见:https://www.jianshu.com/p/1404b32432d0

创建一个顶级用户,用于存放所有的用户。

开启mongodb服务:

sudo service mongod start

开启数据库:

mongo

创建admin数据库:

use admin 

建立一个超级用户admin,命令如下:  

db.createUser( 

  { 

    user: "admin", 

    pwd: "admin", 

    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] 

  } );

建立针对某个数据库的用户

admin虽然是超级管理员,但是对具体的数据库,还是需要有对应的用户,用户是和数据库走的,因此还需要建立ta数据库的用户。

use ta

//使用数据库,需要注意的是在建立ta数据库用户的时候一定要先启用ta数据库,否则会出现问题。

db.createUser({user:'test1',pwd:'test1',roles:[{role:'readWrite',db:'ymall'}]})

开启数据库权限:

编辑配置文件: vi /etc/mongod.conf

添加以下:

security:

authorization: enabled

保存并重新启动。

如下错误:是因为我们添加security:authorization: enabled的时候格式没有写对,多试试格式。

ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=2)

重启mongod:

systemctl restart mongod.service

启用 db.auth(用户名,密码),认证登录,认证登录使用数据库:

db.auth('admin', 'admin123')  返回1表示成功

再次执行show dbs

启用ta数据库,查看该数据库集合:

执行 db.auth('test1','test1')  然后再对ta数据库进行相应的操作。 

将winscp上传到服务器中的数据导入到数据库中

mongoimport --host=127.0.0.1 --port 27017 -u 用户名 -p 密码 -d ymall -c users --file /home/web-shop/models/mall-users

四、安装nginx

下载:  yum install nginx

开启nginx服务:systemctl start nginx

要关闭防火墙

查看防火墙状态    firewall-cmd --state

停止firewall    systemctl stop firewalld.service

禁止firewall开机启动     systemctl disable firewalld.service

五、pm2

npm install -g pm2

查询pm2的安装路径 显示是: /usr/local/bin/pm2

whereis pm2

为了可以在任何目录都可以使用pm2命令,我们将此文件夹加入环境变量

ln  -s /usr/local/bin/pm2 /usr/local/bin

六、部署自己代码

参考链接:

https://blog.csdn.net/u014054437/article/details/79981307

https://segmentfault.com/a/1190000012186563

上传项目文件夹:

我选择了服务器中home目录下将自己之前编写的node服务端代码server文件j夹,以及前端的packages.json一起上传。

server文件夹重命名为vue-project。

上传vue文件

npm run build后会生成的dist文件夹,将里面所有文件都拷贝到vue-project下的public目录。

为什么拷贝到public文件夹下呢?

因为自己node使用express框架,并用express-generator生成了项目结构。其中app.js设置了express解析的静态资源路径:

app.use(express.static(path.join(__dirname, 'public')));

也可以是直接将dist文件夹直接上传vue-project。修改app.js

app.use(express.static(path.join(__dirname, 'dist')));

npm install 安装依赖包

开启node服务 node /bin/www,或者是pm2 /bin/www

修改nginx配置

修改配置文件:vi /etc/nginx/nginx.conf

在http{}里添加一个server{}

    server {
listen 80;
server_name aa.xxxx.com; //自己的一级或者是二级域名
location / {
root /home/vue-project/public; //app.js中配置的静态资源路径文件夹
index index.html index.htm; //主页入口文件
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:5000; //开启的node项目的端口号
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

保存重启nginx

systemctl restart nginx.service

关于nginx的报错

检查修改的配置文件是否有错:nginx -t -c /etc/nginx/nginx.conf

报错:nginx: [emerg] unknown directive "#" in  nginx/conf/nginx.conf:5

【原因】:
conf文件被记事本编辑过,保存了含BOM头的文件,(查阅资料所得:类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。)
 
 
【解决】:
 
用其他编辑器另存为其他编码再保存上传的也解决不了。
最后还是新建了文件,将nginx.conf将内容复制过来,然后将服务端的删掉,本地再上传上去,解决。
 
 

原文链接:

https://blog.csdn.net/dafei4/article/details/86562399

https://www.cnblogs.com/djlele/p/6991683.html

https://www.cnblogs.com/jstarseven/p/4683679.html

访问网站

保证mongdb,nginx,node开启,防火墙关闭。

输入域名就可以访问了。

多页面的配置

自己也写了一个多页面,不过使用了xtpl作为模板。

所有的步骤都是一样的,仅在niginx中添加配置的server的时候,有点不同local中不用配置root和 index属性就可以访问到了。不过自己也没有深究,先占坑吧。

    server {
listen 80;
server_name xxxx.com www.xxxx.com;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

最后

自己也是小白,里面有错误之处还请指正。

mongdb添加用户开启权限访问的部分的内容是自己以前看到,然后保存在word里没有记录原链接。还是向原作者表示感谢。

centOS7下 安装nodejs+nginx+mongodb+pm2部署vue项目的更多相关文章

  1. 【安装Express】CentOS7 下安装NodeJs+Express+MongoDB+Redis

    上一篇介绍了一下怎么安装Nodejs,那么这一篇就说说怎么安装express,express有个中文站点非常非常方便,http://www.expressjs.com.cn/创建express框架的站 ...

  2. 【安装MongoDB】CentOS7 下安装NodeJs+Express+MongoDB+Redis

    MongoDB,V3.2版本,官网说的很详细,见链接:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1.创建 ...

  3. 【安装Nodejs】CentOS7 下安装NodeJs+Express+MongoDB+Redis

    最近想拿NodeJS做个文档管理系统玩玩,看看mongdb的gridfs效率咋样,谁晓得因为一个Yeoman的脚手架,整来整去的把文件权限全部搞乱,一想算了,还是重来搞一套吧! 1.安装  yum i ...

  4. 【安装Redis】CentOS7 下安装NodeJs+Express+MongoDB+Redis

    Redis,V3.2,官网l官方链接:http://www.redis.io/download,参考:http://blog.csdn.net/mlks_2008/article/details/19 ...

  5. Linux环境下安装NodeJS和mongoDB

    前面的话 本文将详细介绍如何下Linux环境下安装NodeJS和mongoDB NodeJS [1]使用二进制包安装 1.在官网下载Linux环境下的NodeJS安装包 2.通过xftp软件将安装包上 ...

  6. CentOS7下安装配置Nginx

    一:安装依赖项 1.pcre:2.openssl:3.zlib:4.gcc:可直接通过yum安装 二:创建nginx账户(可以配置nginx.conf的user为此账户) useradd nginx ...

  7. centos7 下安装和配置 mongodb (重点)

    1.下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.4.tgz 2.解压 tar -zxvf m ...

  8. centos7下安装nodejs

    http://www.runoob.com/nodejs/nodejs-install-setup.html这个教程中注明 注意:Linux上安装Node.js需要安装Python 2.6 或 2.7 ...

  9. nginx反向代理部署vue项目(history模式)的方法

    前言: 根据标题我们要区分出两个信息 1. history 模式部署 ( vue的路由模式如果使用history,刷新会报404错误.) 2. Nginx 做反向代理 问题1思考: vue-route ...

随机推荐

  1. Defining and using constants from PySide in QML

    Defining and using constants from PySide in QML This PySide tutorial shows you how to define constan ...

  2. [雅礼NOIP2018集训 day4]

    感觉状态极差啊,今天居然爆零了 主要是以下原因: 1.又是T1看错题肝了两个小时,发现题意理解错误瞬间心态爆炸 2.T2交错了文件名 3.T3暴力子任务和正解(假的)混在一起,输出了两个答案 都想为自 ...

  3. C#语言基础之第一个C#程序

    1.在记事本中编写如下代码,保存为Simple.cs文件. using System; class Hello World{ public static void Main(){ Console.Wr ...

  4. bind方法使用案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. HDU 1394 Minimum Inversion Number【 树状数组 】

    题意:给出n个数,每次可以把第一个数挪到最后一个位置去,问这n种排列里面的最小逆序对数 先把最开始的逆序对数求出来 然后对于一个数a[i],比它小的数有a[i] - 1个,比它大的数有n - a[i] ...

  6. 玩转HTML5移动页面(动效篇)

    为一名前端,在拿到设计稿时你有两种选择: 快速输出静态页面 加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有志向的前端,当然是选2啦!可是需求时间又很短很短,怎么办呢? 这次就来谈谈一些 ...

  7. React中的AES加解密请求

    引言 在我们使用React开发Web前端的时候,如果是比较大的项目和正常的项目的话,我们必然会用到加解密,之前的文章中提到.NET的一些加解密,那么,这里我就模拟一个例子: 1.后台开发API接口,但 ...

  8. pycharm日常填坑

    pycharm坑很多,今天又遇见了,好吧 ,填坑 场景:从别的地方拷贝过来的项目,导入本地的pycharm 然后选择 然后 还会报错....心累 报错内容: django commands canno ...

  9. NOIp2018模拟赛三十二

    继续挂成傻逼 成绩:100+0+10(90)=110 A全场一眼题,C没取模挂八十分,然后没特判特殊情况又挂十分 A:[agc009b]tournament(太简单,咕了) B:[ATC2142]Bu ...

  10. java几种远程服务调用协议的比较

    原文地址:http://www.cnblogs.com/jifeng/archive/2011/07/20/2111183.html 一.综述 本文比较了RMI,Hessian,Burlap,Http ...