简单记录一次nodejs项目部署过程

本文档详细介绍了在Linux服务器上处理前端Vue项目依赖错误、数据库导入问题、配置Nginx站点、安装Node.js并部署后端应用、解决跨域问题以及重启Nginx的过程。通过实例操作,包括解决权限问题、使用Navicat导入数据库、设置Nginx反向代理以实现前后端跨域,并确保服务稳定运行。

1.检查本地代码

运行本地vue项目代码,遇到 Module build failed true is not a PostCSS plugin,

解决方案:

npm uninstall autoprefixer -D

npm install autoprefixer@9.8.6  -D

2.整理数据库导入到服务器

在Navicat for MySql 创建查询加载sql数据文件 ,运行后报 out of memory,

解决方案:

在Navicat for MySql数据库左边树状菜单右键 操作的数据库,选择“ 运行sql文件 ”。

3.新建Linux服务器上 ngnix 站点

在conf.d 文件夹新建文件, 新文件名 website.com.conf

    server {
        listen       80;
        server_name  website.com;
        client_max_body_size 100m;

	    gzip on;
	    gzip_buffers 32 4K;
     	gzip_comp_level 6;
    	gzip_min_length 100;
    	gzip_types application/javascript text/css text/xml;
    	gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
    	gzip_vary on;
		
		proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
        location / {
            root   /website/com;
            index  index.html index.htm;
			try_files $uri $uri/ /index.html;
        }
	   
    }

ftp连通后不能操作上传 conf 文件,使用Xshell 7 选择协议SSH,端口22,输入账户密码,以 “ sudo chmod -R 777 后面跟上文件路径” ,后续提示依次操作后,解决无权限创建删除移动文件或文件夹的问题,连上ftp一切都好用了!

cd usr/sbin
sudo ./nginx

4.为部署后端站点安装Nodejs模块

登录Linux后,原地不动,不跑去其他文件夹,开始安装Nodejs九步操作:

第一步 到nodejs官网 复制 nodejs安装包链接

第二步 执行 wget 安装包链接地址

第三步 解压 tar -vxf 安装包

第四步移动解压文件夹 到指定目录 mv nodejs文件夹路径 /usr/local/node

第五步 修改环境变量

sudo vi /etc/profile

这里如果 vi /etc/profile  不加sudo,可能报错 E212: Can't open file for writing 或 E45: 'readonly' option is set (add ! to override)

接着加入下面的代码

#node

export NODE_HOME=/usr/local/node

export PATH=$PATH:$NODE_HOME/bin

export NODE_PATH=$NODE_HOME/lib/node_mudules

然后 退出保存

esc

:wq

这里强调下 :w 是保存 :w!是强制保存 :q是退出 :q!是强制退出

最后输入以下命令保存配置

source /etc/profile

第六步 创建软链接

ln -s /usr/local/node/bin/node /usr/local/bin/node

ln -s /usr/local/node/bin/npm /usr/local/bin/npm

第七步 检查是否安装成功

node -v

v16.XX.0

npm -v

v8.X.X

第八步 启动node项目

cd /website/api
sudo node ./bin/www

第九步 保持node项目在后台运行

npm install forever -g

进入项目目录运行

forever start  node项目启动文件路径

查看forever 运行的项目

forever list

停止服务

forever stop  node项目在forever list中的pid

5.前后端部署联调

因为前后端站点虽然部署在相同服务器但没用同一个端口,造成跨域问题

在nodejs代码里 配置跨域模块

      app.use(cors({

        //允许程序列表

        origin:["http://website.com"],

        credentials:true,

      }))

6. Linux 重启 nginx

由于后端端口 3000 不能放外网访问,在 nginx 里面配置反向代理,这么一来前后端兼容跨域问题就不存在。

    server {
        listen       80;
        server_name  website.com;
        client_max_body_size 100m;

	    gzip on;
	    gzip_buffers 32 4K;
     	gzip_comp_level 6;
    	gzip_min_length 100;
    	gzip_types application/javascript text/css text/xml;
    	gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
    	gzip_vary on;
		
		proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		
        location / {
            root   /website/com;
            index  index.html index.htm;
			try_files $uri $uri/ /index.html;
        }
	   

		location /api/ {
            proxy_pass  http://localhost:3000/;
        }

    }

执行重启 nginx 命令

cd /usr/sbin
nginx -s reload

因为连接账户没有权限导致如下报错:

nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges

换上以下命令

cd /usr/sbin
sudo nginx -s reload

提示输入账户密码,重启成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值