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


    一、代码配置

    前后端接口都保持 127.0.0.1:3000

    vue创建文件 pm2.config.cjs

    40a88304317a4e7384ea7d9d86291240.png

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

    serve 创建文件 pm2.config.cjs

    69ae679801ac4a20800b600495d90733.png

     

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

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

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

    腾讯云:登录 - 腾讯云

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

    f8ade4b8618348f89ffb481da6ce9e21.png

    三、nginx 静态服务器配置

    登录 root 最高权限

    b719e5c6a301407f8c90749e5276bd7a.png

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

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

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

     

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

    1. #安装 yum 仓库管理
    2. sudo yum install yum-utils
    3. #创建文件
    4. sudo touch /etc/yum.repos.d/nginx.repo
    5. #编辑文件
    6. sudo vim /etc/yum.repos.d/nginx.repo
    7. #进入编辑模式之后按下 i 复制以下内容进入
    8. [nginx-stable]
    9. name=nginx stable repo
    10. baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    11. gpgcheck=1
    12. enabled=1
    13. gpgkey=https://nginx.org/keys/nginx_signing.key
    14. module_hotfixes=true
    15. [nginx-mainline]
    16. name=nginx mainline repo
    17. baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    18. gpgcheck=1
    19. enabled=0
    20. gpgkey=https://nginx.org/keys/nginx_signing.key
    21. module_hotfixes=true
    22. #按 ESC 退出编辑模式
    23. #按 :wq 退出并保存
    24. #安装 nginx
    25. sudo yum install nginx -y

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

    1. nginx -v
    2. # 更详细信息
    3. nginx -V

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

    1. sudo nginx -t
    2. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    3. nginx: configuration file /etc/nginx/nginx.conf test is successful

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

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

    启动 & 开机自动重启

    1. # 启动 1
    2. nginx
    3. OR
    4. sudo systemctl start nginx
    5. OR
    6. sudo service nginx start
    7. #开机自启动
    8. sudo systemctl enable nginx
    9. OR
    10. sudo service nginx enable

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

    bff157360d2b4318acfca5685b001445.png

    搭建 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版本。

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

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

    fac56815ea53490e8aad6ccd5bc645b3.png

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

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

    8e1457b2fb8649eea8156297b3038a6b.png

    cd .. 即是退到 home 文件下

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

    f46511700b054b4f862cbc8d2c203c83.png

    7c3de1d4e248410cb7ddeee11635a693.png

    前端

    1132bf4950f54efebb9f1fd782049bfd.png

    e4b81a7bd9bb4e2a8724bf0e95377abd.png

    后端

    5a1b1c94c194464d8b0602d75b079931.png

     

    搭建数据库 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默认密码

    1. rm -rf /root/.mysql_history
    2. rm -rf /root/mysql_secret

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

     

    安装MySQL

    1. 安装
    2. sudo yum install mysql-server -y
    3. 启动
    4. sudo systemctl start mysqld
    5. 查看状态
    6. sudo systemctl status mysqld

    ac42d4c383434f7f90833149028f54b9.png

     

    设置 MySQL root 密码

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

    vi /etc/my.cnf

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

    1. validate_password.check_user_name = 0
    2. validate_password.policy = 0
    3. validate_password.mixed_case_count = 0
    4. validate_password.number_count = 0
    5. validate_password.special_char_count = 0
    6. validate_password.length = 0

     

    进入vi后,按i

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

    打完字后,按ESC

    然后输入

    :wq

    就保存退出了。

     

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

    mysql -uroot -p

    进入 sql,无密码

    修改密码

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

    密码为 root

    d2864de1bf2748268ba2e638b83ea400.png

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

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

    select host, user, authentication_string, plugin from user; 

    f8348edbe5694cdead0d67ac1bd039ba.png

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

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

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

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

    重复

    select host, user, authentication_string, plugin from user; 

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

    cf18ceb782694d40a85d87d116f7d2b8.png

    ctrl + d 退出 mysql

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

    打开3306端口

    1. 开放端口需要先开启防火墙
    2. systemctl start firewalld
    3. 开放端口
    4. firewall-cmd --zone=public --add-port=3306/tcp --permanent
    5. 重新载入防火墙使设置生效
    6. firewall-cmd --reload
    7. 查看是否开放端口
    8. firewall-cmd --zone=public --query-port=3306/tcp
    9. 关闭已开放端口(如无须关闭 不用执行)
    10. firewall-cmd --zone=public --remove-port=3306/tcp --permanent

    恢复本地的数据库数据

    sudo chmod 777 ‘文件’

    sudo chmod -R 777 ‘文件’

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

    sudo chmod 777  '/home' 

    修改文件夹权限

    1839b46f7e434a59b1f3f61cad2aba7d.png

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

    进入 mysql 控制台

    mysql -u root -p

    create database xin

    show databases;

    use xin

    SOURCE /home/xin.sql

    cb33cae30ea44627ad13d51e4bf11b97.png

     

    开放防火墙 80 端口

    1. # 查看当前已经开放的端口
    2. sudo firewall-cmd --list-ports
    3. # 开放 80 端口
    4. sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    5. # 重新加载防火墙配置
    6. sudo firewall-cmd --reload

    5de9ef8d6f224b3f90fb893060e579cd.png

     

    pm2 守护进程、负载均衡

     

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

     

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

     

    在服务器上全局安装

    1. #安装nodejs
    2. yum install nodejs
    3. #若遇到No package alien available.Error: Nothing to do,可先执行以下命令再安装nodejs
    4. yum install epel-release
    5. #查看npm版本
    6. npm -v
    7. #1、安装pm2
    8. npm install -g pm2

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

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

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

    pm2 list

    3ebaa224606f4d58a5ee5a8934c5f64d.png

    b58ec3c007df4925b88d638c5d4b26fa.png

    https 协议域名设置

    腾讯云 ssl 证书申请,下载

    adb19036ea8b4c4293a8bada0f1a7122.png

    da62a280190b41a29ffafc879ddfb3c4.png

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

    sudo chmod -R 777 ‘/etc’

    nginx 代理配置

    配置nginx.conf 文件
    bash复制代码

    1. user nginx;
    2. worker_processes auto;
    3. error_log /var/log/nginx/error.log notice;
    4. pid /var/run/nginx.pid;
    5. events {
    6. worker_connections 1024;
    7. }
    8. http {
    9. include /etc/nginx/mime.types;
    10. default_type application/octet-stream;
    11. log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    12. '$status $body_bytes_sent "$http_referer" '
    13. '"$http_user_agent" "$http_x_forwarded_for"';
    14. access_log /var/log/nginx/access.log main;
    15. sendfile on;
    16. #tcp_nopush on;
    17. keepalive_timeout 65;
    18. #gzip on;
    19. include /etc/nginx/conf.d/*.conf;
    20. server {
    21. listen 443 ssl;
    22. ssl_certificate xinwangblog.cn_bundle.crt;
    23. ssl_certificate_key xinwangblog.cn.key;
    24. server_name xinwangblog.cn www.xinwangblog.cn;
    25. location / {
    26. proxy_pass http://127.0.0.1:3000;
    27. proxy_set_header X_FORWARDED_PROTO https;
    28. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    29. proxy_set_header Host $http_host;
    30. proxy_set_header X-Url-Scheme $scheme;
    31. proxy_redirect off;
    32. proxy_max_temp_file_size 0;
    33. }
    34. }
    35. server{
    36. listen 80;
    37. server_name xinwangblog.cn www.xinwangblog.cn;
    38. location / {
    39. proxy_pass http://127.0.0.1:3000;
    40. }
    41. }
    42. }

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

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

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    ByteV数字孪生实际应用案例-智慧矿山篇
    CentOS 8迁移Rocky Linux 8手记
    面试官:用Java如何设计阻塞队列,再说说ArrayBlocking和LinkedBlocking
    Runnable和Callable啥时候用?
    利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘
    Redis 服务器端优化方案
    CAS策略
    [附源码]SSM计算机毕业设计医学季节性疾病筛查系统JAVA
    3.5背景图像固定(背景附着)
    谈一谈 Android Application 的理解
  • 原文地址:https://blog.csdn.net/czxvzxzczcc/article/details/132949083