vue+express、gitee pm2部署轻量服务器

news2024/11/16 18:08:05

一、代码配置

前后端接口都保持 127.0.0.1:3000

vue创建文件 pm2.config.cjs

module.exports = {
  apps: [
    {
      name: 'xin-web', // 应用程序的名称
      script: 'npm', // 启动脚本
      args: 'run dev', // 启动脚本的参数
      cwd: '/home/vue/xin_web', // Vite 项目的根目录
      interpreter: 'none', // 告诉 PM2 不使用解释器
      autorestart: true, // 如果应用程序崩溃,自动重新启动
      watch: false, // 监视文件变化
      max_memory_restart: '1G', // 如果应用程序占用的内存超过 1GB,则重新启动
      env: {
        NODE_ENV: 'production', // 设置环境变量
      },
    },
  ],
};

serve 创建文件 pm2.config.cjs

module.exports = {
  apps: [
    {
      name: 'xin-service', // 应用程序的名称
      script: 'npm', // 启动脚本
      args: 'run start', // 启动脚本的参数
      cwd: '/home/server/xin_serve', // Vite 项目的根目录
      interpreter: 'none', // 告诉 PM2 不使用解释器
      autorestart: true, // 如果应用程序崩溃,自动重新启动
      watch: false, // 监视文件变化
      max_memory_restart: '1G', // 如果应用程序占用的内存超过 1GB,则重新启动
      env: {
        NODE_ENV: 'production', // 设置环境变量
      },
    },
  ],
};

记得 bd.js 配置好数据库的名称密码

二、服务器购买、安装系统

腾讯云:登录 - 腾讯云

服务器重装系统选择 CentOS stream 8 版本。

三、nginx 静态服务器配置

登录 root 最高权限

不同系统使用不同语句安装 分别对应 CentOS Ubuntu Fedora

sudo yum install epel-release && yum install nginx   [On CentOS/RHEL]
sudo dnf install nginx                               [On Debian/Ubuntu]
sudo apt install nginx                               [On Fedora]

我使用 sudo yum install epel-release && yum install nginx

这里有个 centOS 7.6 - 8 stream - 安装步骤 我没用这个方法

#安装 yum 仓库管理
sudo yum install yum-utils

#创建文件
sudo touch /etc/yum.repos.d/nginx.repo

#编辑文件
sudo vim /etc/yum.repos.d/nginx.repo

#进入编辑模式之后按下 i 复制以下内容进入
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

#按 ESC 退出编辑模式

#按 :wq 退出并保存

#安装 nginx
sudo yum install nginx -y

校验是否安装成功,运行下面命令,能正确输出nginx版本号就OK。

nginx -v

# 更详细信息
nginx -V

查看配置文件安装目录, 在启动 Nginx 服务之前,可以检查它的配置语法是否正确。尤其是当你修改或添加配置时很有用。 命令如下:

sudo nginx -t

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

PS: 如果有 Permission 这种字眼,是权限问题,给没有权限的所有路径授权 解决:

sudo chown -R nginx:nginx /var/log/nginx/ # 这个文件路径改成报错的路径
sudo chown nginx:nginx /var/run/nginx.pid # 这个文件路径改成报错的路径
sudo systemctl restart nginx							# 重启

启动 & 开机自动重启

# 启动 1
nginx
OR
sudo systemctl start nginx 
OR
sudo service nginx start   

#开机自启动
sudo systemctl enable nginx 
OR
sudo service nginx enable   

在浏览器中输入服务器的公网IP地址,能正确输出 nginx welcome 页面即可。

搭建 node.js 环境、上传项目、安装 git 工具

安装分布式版本管理系统 Git

yum install git -y
git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`

依次运行以下命令,配置NVM的环境变量。

echo ". ~/.nvm/nvm.sh" >> /etc/profile

ps:遇到权限问题解决

sudo bash -c 'echo ". ~/.nvm/nvm.sh" >> /etc/profile'

刷新文档

source /etc/profile

运行以下命令,修改npm镜像源为阿里云镜像,以加快Node.js下载速度。

export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node

运行以下命令,查看Node.js版本。

nvm list-remote

有必要的话安装多个Node.js版本。  v14.0.0 可指定版本号

nvm install v14.0.0

我这里使用的 18.16.0

nvm install v18.16.0

查看已安装的Node.js版本。

设置使用版本,再设置默认版本

nvm use 18.x.x or 18
nvm alias default v18.16.0

一般是 cd.. 看看退出几层 能到达

/home 文件夹下面创建 vue server 文件夹,git clone 对应的项目,npm i 对应依赖

cd .. 即是退到 home 文件下

再 cd .. 可以看到大的文件目录

前端

后端

搭建数据库 Mysql - Centos steam 8

ps:卸载MySQL

执行如下命令查看已经安装

rpm -qa|grep -i mysql

执行如下命令卸载所有mysql软件包

yum -y remove mysql*

执行如下命令查找mysql的相关安装目录

find / -name mysql

通过rm -rf xxx 命令将上述步骤查询到的目录依次删除(注意分辨)

删除mysql配置文件

rm -rf /etc/my.cnf

删除mysql默认密码

rm -rf /root/.mysql_history

rm -rf /root/mysql_secret

---------------------------------------------------------------------------------------------------------------------------------

安装MySQL

安装
sudo yum install mysql-server -y
启动
sudo systemctl start mysqld
查看状态
sudo systemctl status mysqld

设置 MySQL root 密码

我们自己进行测试时使用的roo t密码不必太复杂,通过设置my.cnf,可以设置简单密码(对mysql 8.0适用)

vi /etc/my.cnf

 把下面写入( 设置的是一些密码长度策略什么的 )

validate_password.check_user_name = 0
validate_password.policy = 0
validate_password.mixed_case_count = 0
validate_password.number_count = 0
validate_password.special_char_count = 0
validate_password.length = 0

进入vi后,按i

移动上下左右键到,你想插入的位置,然后打字。这时跟记事本是一样的。

打完字后,按ESC

然后输入

:wq

就保存退出了。

设置完这些策略之后,必须执行 sudo systemctl restart mysqld ,才可使之生效

mysql -uroot -p

进入 sql,无密码

修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

密码为 root

允许远程连接
设置权限,允许远程连接root用户

在 mysql 数据库的 user 表中查看当前 root 用户的相关信息

select host, user, authentication_string, plugin from user; 

执行完上面的命令后会显示一个表格

查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。

授权 root 用户的所有权限并设置远程访问

update user set host='%' where user='root';

重复

select host, user, authentication_string, plugin from user; 

GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。

ctrl + d 退出 mysql

firewall-cmd --zone=public --add-port=3306/tcp --permanent

打开3306端口

开放端口需要先开启防火墙
systemctl start firewalld

开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

重新载入防火墙使设置生效
firewall-cmd --reload

查看是否开放端口
firewall-cmd --zone=public --query-port=3306/tcp

关闭已开放端口(如无须关闭 不用执行)
firewall-cmd --zone=public --remove-port=3306/tcp --permanent

恢复本地的数据库数据

sudo chmod 777 ‘文件’

sudo chmod -R 777 ‘文件’

这样  -r 的意思是 文件夹下面的所有内容

sudo chmod 777  '/home' 

修改文件夹权限

Navicat 导出数据库备份 db.sql 文件,通过腾讯云上传工具上传到任意地方,pwd 记录当前的路径

进入 mysql 控制台

mysql -u root -p

create database xin

show databases;

use xin

SOURCE /home/xin.sql

开放防火墙 80 端口

# 查看当前已经开放的端口
sudo firewall-cmd --list-ports

# 开放 80 端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

# 重新加载防火墙配置
sudo firewall-cmd --reload

pm2 守护进程、负载均衡

PM2 是 node 进程管理工具,可以利用他来简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等。而且使用非常简单。

目前使用 node server.js 在服务器启动服务之后,不能随意去做其他的操作。

在服务器上全局安装

#安装nodejs
yum install nodejs
#若遇到No package alien available.Error: Nothing to do,可先执行以下命令再安装nodejs
yum install epel-release
#查看npm版本
npm -v

#1、安装pm2
npm install -g pm2

切换到对应位置 用 pm2 启动 项目

运行以下命令来使用 PM2 启动应用程序
pm2 start pm2.config.cjs

使用以下命令来查看应用程序的状态

pm2 list

https 协议域名设置

腾讯云 ssl 证书申请,下载

将 crt 和 key 上传到 /etc/nginx/nginx.conf 文件同级目录

sudo chmod -R 777 ‘/etc’

nginx 代理配置

配置nginx.conf 文件
bash复制代码
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
    server {
    	listen  443 ssl;
        ssl_certificate xinwangblog.cn_bundle.crt;
        ssl_certificate_key xinwangblog.cn.key;
        server_name xinwangblog.cn www.xinwangblog.cn;
	    location / {
            proxy_pass http://127.0.0.1:3000; 
            proxy_set_header X_FORWARDED_PROTO https;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header  Host $http_host;
            proxy_set_header  X-Url-Scheme $scheme;
            proxy_redirect    off;
            proxy_max_temp_file_size 0;
        }
    } 
    server{
	listen 80;
        server_name xinwangblog.cn www.xinwangblog.cn;
        location / {
            proxy_pass http://127.0.0.1:3000;
        }
	}
}

这里还要检查你的 ssl 证书,要删掉 443 那个
检查 文件合法
bash复制代码nginx -t

重启 nginx
bash复制代码nginx -s reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1018918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java基础-并发编程-CountDownLatch(JDK1.8)源码学习

CountDownLatch方法调用与类关系图 一、初始化&#xff1a;public CountDownLatch(int count) public CountDownLatch(int count) {if (count < 0) throw new IllegalArgumentException("count < 0");this.sync new Sync(count);}Sync(int count) {// 将参数…

pte初步认识学习

我们的时间的确很少&#xff0c;但是我们每天都乐意将珍贵的时间浪费在大量毫无意义的事情上 目录 pte介绍 PTE口语评分规则 pte架构 计算机科学23 QS排名 《芭比》 pte介绍 PTE口语评分规则 有抑扬顿挫 对于连读 不能回读 native pte对于个别单词没有读好&#xff0c…

JSP 学习笔记(基础)

出现背景&#xff1a; 由于 Servlet 输出 HTML 比较困难&#xff0c;所以出现了 JSP 这个代替品。 特点&#xff1a; 基于文本&#xff0c;HTML 和 Java 代码共同存在&#xff08;用 write() 来写 HTML 标签&#xff09;其本身就是个被封装后的 Servlet&#xff08;被编译为…

JavaScript的BOM操作

一、BOM 1.认识BOM BOM&#xff1a;浏览器对象模型&#xff08;Browser Object Model&#xff09; 简称 BOM&#xff0c;由浏览器提供的用于处理文档&#xff08;document&#xff09;之外的所有内容的其他对象&#xff1b;比如navigator、location、history等对象&#xff…

Android 使用Camera1实现相机预览、拍照、录像

1. 前言 本文介绍如何从零开始&#xff0c;在Android中实现Camera1的接入&#xff0c;并在文末提供Camera1Manager工具类&#xff0c;可以用于快速接入Camera1。 Android Camera1 API虽然已经被Google废弃&#xff0c;但有些场景下不得不使用。 并且Camera1返回的帧数据是NV21…

JSP ssm 零配件管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java ssm 零配件管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用…

ThinkPHP 5.0通过composer升级到5.1,超级简单

事情是这样的&#xff0c;我实现一个验证码登录的功能&#xff0c;但是这个验证码的包提示tp5的版本可以是5.1.1、5.1.2、5.1.3。但我使用的是5.0&#xff0c;既然这样&#xff0c;那就升个级呗&#xff0c;百度了一下&#xff0c;结果发现大部分都是讲先备份application和修改…

python之pyQt5实例:PyQtGraph的应用

1、显示逻辑 "MainWindow": "这是主窗口&#xff0c;所有的其他组件都会被添加到这个窗口上。", "centralwidget": "这是主窗口的中心部件&#xff0c;它包含了其他的部件。","pushButton": "这是一个按钮&#xff0c…

算法刷题 week3

这里写目录标题 1.重建二叉树题目题解(递归) O(n) 2.二叉树的下一个节点题目题解(模拟) O(h) 3.用两个栈实现队列题目题解(栈&#xff0c;队列) O(n) 1.重建二叉树 题目 题解 (递归) O(n) 递归建立整棵二叉树&#xff1a;先递归创建左右子树&#xff0c;然后创建根节点&…

贪心算法的思路和典型例题

一、贪心算法的思想 贪心算法是一种求解问题时&#xff0c;总是做出在当前看来是最好的选择&#xff0c;不从整体最优上加以考虑的算法。 二.用贪心算法的解题策略 其基本思路是从问题的某一个初始解出发一步一步地进行&#xff0c;根据某个优化测度&#xff0c;每一步都要确保…

Idea 下载不了源码 cannot download source

一、打开Terminal (AltF12)&#xff0c;找到项目具体模块所在的文件夹&#xff0c;输入一下指令 mvn dependency:resolve -Dclassifiersources 如果你的idea 终端无法使用mvn指令&#xff0c;要配置你idea中的maven的环境变量&#xff1a; 1、找到maven在idea中的位置&#xf…

Linux备份策略:保证数据安全

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

第十章 数据库恢复技术

第十章 数据库恢复技术 10.1 事务的基本概念 事务 事务是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个不可分割的工作单位。例事务的特性&#xff08;ACID特性&#xff08;ACID properties&#xff09;&#xff09; 原…

【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型

【测试开发】概念篇 文章目录 【测试开发】概念篇1. 什么是需求1.1 需求的定义1.2 为什么有需求1.3 测试人员眼里的需求1.4 如何深入了解需求 2. 什么是测试用例2.1 为什么有测试用例2.2 练习>手机打电话 3. 什么是bug4. 开发模型和测试模型4.1 软件生命周期4.2 开发模型4.3…

七、线性规划问题

文章目录 1、线性规划问题定义2、单纯形算法THE END 1、线性规划问题定义 \qquad 线性规划问题的一般表示形式如下所示&#xff1a;假设现有 n n n个变量&#xff0c; m m m个约束&#xff0c;令最大化(或者最小化) c 1 x 1 c 2 x 2 . . . c n x n c_1x_1c_2x_2...c_nx_n c1…

IDEA中创建Java Web项目方法2

以下过程使用IntelliJ IDEA 2021.3 一、创建Maven项目 1. File -> New -> Projects... 2. 选择Maven&#xff0c;点击Next 3. 输入项目名称&#xff0c;Name: WebDemo3。点击 Finish&#xff0c;生成新的项目 二、添加框架支持 1. 在项目名上右键&#xff0c;选择 A…

快速搭建SpringBoot3.x项目

快速搭建SpringBoot3.x项目 写在前面一、创建项目二、配置多环境三、连接数据库查询数据3.1 新建数据库mybatisdemo并且创建sys_user表3.2 创建实体类3.2 创建Mapper接口3.3 添加mybatis.xml文件3.4 新建service 接口及实现类3.5 创建Controller 四、封装统一结果返回4.1 定义 …

计算平均值

任务描述 编程实现&#xff1a;编写程序实现如下功能&#xff1a;通过键盘&#xff0c;用指针输入10个元素的值&#xff0c;再通过指针计算各元素的平均值&#xff0c;输出平均值。 测试说明 平台会对你编写的代码进行测试&#xff1a; 测试样例1&#xff1a; 测试输入&…

applicationId和packageName 的异同

关于作者&#xff1a; CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP&#xff0c;带领广告团队广告单日营收超千万。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业化变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读…

安卓机型固件系统分区的基础组成 手机启动规律初步常识 各分区的基本含义与说明

此贴为基本常识。感兴趣的友友可以了解手机的启动顺序和各模式的基本操作与意义。另外了解手机系统分区各文件夹的含义 分区说明对应贴&#xff1a;安卓机型固件中分区对应说明 手机开机基本启动顺序 当我们按下手机开机键的时候。基本的启动顺序为 注意&#xff1a;该结构图…