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

一、代码配置

前后端接口都保持 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 -tnginx: 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_historyrm -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.mzph.cn/news/82245.shtml

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

相关文章

RabbitMQ - 如保证消息的可靠性?

目录 一、消息可靠性 1.1、生产者消息确认(生产者角度) 1.1.1、理论 1.1.2、实践 1.2、消息持久化(消息角度) 1.2.1、理论 1.3、消费者消息确认(消费者角度) 1.3.1、理论 1.3.2、实践 1.4、失败重…

Matlab图像处理-Lab模型

Lab模型 Lab模型是由CIE(国际照明委员会)制定的一种彩色模型。该模型与设备无关,弥补了RGB模型和CMYK模型必须依赖于设备颜色特性的不足; 另外,自然界中的任何颜色都可以在Lab空间中表现出来,也就是说RGB和…

20230917后台面经总结

1.ping底层原理 Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。 基…

Unity之手游UI的点击和方向移动

一 Button的点击 1.1 新建UI -> Button 1.2 在Button上面右击添加空物体 1.3 创建脚本挂载到空物体上面 脚本内容添加点击方法,来控制物体的显示隐藏 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using Unit…

Nginx 文件解析漏洞复现

一、漏洞说明 Nginx文件解析漏洞算是一个比较经典的漏洞&#xff0c;接下来我们就通过如下步骤进行漏洞复现&#xff0c;以及进行漏洞的修复。 版本条件&#xff1a;IIS 7.0/IIS 7.5/ Nginx <8.03 二、搭建环境 cd /vulhub/nginx/nginx_parsing_vulnerability docker-compos…

【C++基于多设计模式下的同步异步日志系统】

文章目录 [toc] 1 :peach:项目介绍:peach:2 :peach:开发环境:peach:3 :peach:核心技术:peach:4 :peach:环境搭建:peach:5 :peach:日志系统介绍:peach:5.1 :apple:为什么需要日志系统&#xff1f;:apple:5.2 :apple:日志系统技术实现:apple:5.2.1 :lemon:同步写日志:lemon:5.2.2…

【excel密码】excel文件加密的三种方式

想要给Excel文件进行加密&#xff0c;方法有很多&#xff0c;今天分享三种Excel加密方法给大家。 一、打开密码 设置了打开密码的excel文件&#xff0c;打开文件就会提示输入密码才能打开excel文件&#xff0c;只有输入了正确的密码才能打开并且编辑文件&#xff0c;如果密码…

Unity实现简易太阳系

开发环境&#xff1a;Unity 2022.3.5f1c1 Visual Studio 2022 太阳系相关星体&#xff1a;太阳、八大行星、月球 模拟星系&#xff1a;太阳系、地月系 功能&#xff1a;支持行星以太阳为中心&#xff0c;任意轴进行公转&#xff0c;此处演示同一平面。 a1-a8为公转轴&#xff…

《ADS2011射频电路设计与仿真实例》功率放大器设计的输入输出匹配

徐兴福这本书的6.6 Smith圆图匹配这一节中具体匹配时&#xff0c;直接给出了电容与串联微带的值&#xff0c;没有给出推导过程&#xff0c;我一开始以为是省略了详细推导过程&#xff0c;后来发现好像基本上是可以随便自己设的。以输入匹配&#xff08;书本6.6.4输入匹配电路的…

景联文科技:数据供应商在新一轮AI热潮中的重要性

景联文科技是AI基础行业的头部数据供应商&#xff0c;可协助人工智能企业解决整个人工智能链条中数据标注环节的相对应问题。 随着全球新一轮AI热潮来袭&#xff0c;大量训练数据已成为推动AI算法模型进步和演化的不可或缺的重要因素。数据的质量和数量直接影响了模型训练和性能…

现在全国融资融券两融利率最低是多少?哪家证券公司券商费率低?

融资融券是指投资者通过向券商借入资金&#xff08;融资&#xff09;或借入证券&#xff08;融券&#xff09;&#xff0c;以达到获得更高收益、降低交易风险、提高资金利用效率的目的。通过融资&#xff0c;投资者可以用借入的资金买入更多的证券&#xff1b;通过融券&#xf…

多目标优化算法:基于非支配排序的海象优化算法(NSWOA)MATLAB

一、海象优化算法WOA 海象优化算法&#xff08;Walrus Optimization Algorithm&#xff0c;WOA&#xff09;由Trojovsk等人于2023年提出&#xff0c;该算法模拟海象的进食&#xff0c;迁移&#xff0c;逃跑和对抗捕食者的过程&#xff0c;WOA包含探索、迁移和开发三个阶段&…

cms之帝国cms安装

内容摘要 帝国网站管理系统&#xff0c;英文名称为EmpireCMS&#xff0c;简称“帝国CMS”&#xff0c;本文将介绍帝国网站管理系统的安装方法。 前言&#xff1a; 本文安装教程是以帝国CMS7.5版本为基础进行图文讲解。 各位看官&#xff0c;一定要按照每个步骤去执行&#xf…

【Django入门】第一个Django项目

Django&#xff0c;广为人知的Python Web框架&#xff0c;以其强大而又灵活的特点脱颖而出。其宣传口号是&#xff1a;“为完美主义者开发的框架”。这篇文章将为你揭示创建第一个Django项目的魔法以及Django项目的基本结构。 为什么选择Django&#xff1f; 在深入学习前&…

基于SSM的博客系统开发

文章目录 前言1.技术选型&#xff1a;2.主要功能&#xff1a;3.项目展示&#xff1a;前台页面&#xff1a;后台页面&#xff1a; 总结 前言 提示&#xff1a;人类与强权的斗争&#xff0c;就是记忆与遗忘的斗争。 --米兰昆德拉《笑忘录》 1.技术选型&#xff1a; 开发工具&am…

vue 01 创建一个简单vue页面

去vue官网下载vue.js 引用vue.js vue语法 一个vue实例&#xff0c;绑定一个容器&#xff0c;一对一关系 <!DOCTYPE html> <html><head><meta charset"UTF-8"/><title>初始Vue</title><script type"text/javascript&qu…

【JAVASE】图书管理系统

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 图书管理系统 1. 设计思路图2. 创建 boo…

MySQL常见面试题(一)

&#x1f600;前言 在数据库管理系统中&#xff0c;存储引擎起着核心的角色&#xff0c;它决定了数据管理和存储的方式。MySQL作为一个领先的开源关系型数据库管理系统&#xff0c;提供了多种存储引擎来满足不同的需求和优化不同的应用。除了选择合适的存储引擎&#xff0c;数据…

四川百幕晟科技:抖店精选联盟怎么使用?

近年来&#xff0c;电商平台的兴起让很多人纷纷加入进来&#xff0c;希望通过在网上销售产品来赚取更多的利润。在这个竞争激烈的市场中&#xff0c;如何找到稳定的渠道来推广自己的产品成为了每个卖家的追求。抖店精选联盟是一个不错的选择&#xff0c;可以帮助卖家快速提升销…

Mybatis学习笔记8 查询返回专题

Mybatis学习笔记7 参数处理专题_biubiubiu0706的博客-CSDN博客 1.返回实体类 2.返回List<实体类> 3.返回Map 4.返回List<Map> 5.返回Map<String,Map> 6.resultMap结果集映射 7.返回总记录条数 新建模块 依赖 目录结构 1.返回实体类 如果返回多条,用…