腾讯云服务器+宝塔面板部署Vue3项目超详细教程

emmm……有点长但是超详细

目录

  1. 腾讯云服务器购买与配置
  2. 宝塔面板安装与设置
  3. 环境配置
  4. Vue3项目部署
  5. 域名解析与SSL证书
  6. 性能优化
  7. 常见问题

1. 腾讯云服务器购买与配置

1.1 服务器购买步骤

  1. 访问腾讯云官网(cloud.tencent.com)并登录
  2. 选择【云服务器】产品
  3. 选择配置:
    • 地域:建议选择距离用户较近的地区
    • 机型:轻量应用服务器或普通云服务器(CVM)
    • 配置:建议2核4G以上
    • 带宽:5M起步
    • 系统:CentOS 7.6 或 Ubuntu 20.04

具体配置推荐:

实例规格:2核4G
系统盘:60G SSD云硬盘
带宽:5Mbps
操作系统:CentOS 7.6 64位

1.2 安全组配置

  1. 进入腾讯云控制台
  2. 找到【安全组】配置
  3. 添加以下端口:
22端口:SSH远程连接
80端口:HTTP服务
443端口:HTTPS服务
8888端口:宝塔面板
3306端口:MySQL(可选)

具体步骤:

  1. 点击【新建安全组】
  2. 填写名称和描述
  3. 添加入站规则:
协议:TCP
端口:22,80,443,8888,3306
来源:0.0.0.0/0
策略:允许

1.3 服务器初始化

  1. 重置root密码:

    • 在控制台选择【重置密码】
    • 设置一个强密码(建议包含大小写字母、数字和特殊字符)
  2. 远程连接服务器:

Windows用户:

# 使用PowerShell或CMD
ssh root@你的服务器IP

# 或使用XShell、PuTTY等工具连接
主机:服务器IP
用户名:root
密码:之前设置的密码
端口:22

Mac/Linux用户:

ssh root@你的服务器IP
  1. 更新系统包:

CentOS系统:

# 更新包管理器
yum update -y

# 安装常用工具
yum install -y wget vim net-tools

Ubuntu系统:

# 更新包管理器
apt update && apt upgrade -y

# 安装常用工具
apt install -y wget vim net-tools

2. 宝塔面板安装与设置

2.1 安装宝塔面板

  1. CentOS系统安装命令:
# 使用root用户执行
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
  1. Ubuntu系统安装命令:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
  1. 安装完成后会显示以下信息(务必保存):
外网面板地址: http://服务器IP:8888/xxxxxxxx
内网面板地址: http://服务器内网IP:8888/xxxxxxxx
username: xxxxxxxx
password: xxxxxxxx

2.2 首次登录配置

  1. 使用浏览器访问面板地址
  2. 输入用户名和密码登录
  3. 首次登录可能需要绑定宝塔账号
  4. 进入面板后的初始化设置:
    • 选择推荐安装套件
    • 设置后台入口
    • 修改默认用户名密码

2.3 安全设置

  1. 修改面板端口:

    • 进入【面板设置】
    • 修改面板端口(建议改为非常用端口)
    • 保存并重启面板
  2. 设置访问限制:

    • 开启【密码访问】
    • 设置【允许IP】
    • 开启【绑定域名】(如果有)
  3. 设置防火墙:

# 在面板中开启防火墙
# 添加放行端口:
80,443,8888(面板端口),3306(数据库端口),22(SSH端口)

3. 环境配置

3.1 安装LNMP环境

  1. 在宝塔面板中安装必要软件:

    • 点击【软件商店】
    • 搜索并安装以下软件:
      Nginx 1.18+ (推荐1.20)
      MySQL 5.7+
      PHP 7.4+
      
  2. Nginx配置优化:

    • 点击【配置修改】
    • 添加以下配置到http块:
# http块内添加以下配置
client_max_body_size 50m;
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;

3.2 安装Node.js环境

  1. 使用nvm安装Node.js:
# 安装nvm
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 重新加载配置
source ~/.bashrc

# 安装Node.js 16版本
nvm install 16

# 设置默认版本
nvm alias default 16

# 验证安装
node -v
npm -v
  1. 安装全局工具:
# 安装pm2
npm install -g pm2

# 安装pnpm(可选)
npm install -g pnpm

# 安装yarn(可选)
npm install -g yarn

3.3 配置Git(可选)

  1. 安装Git:
# CentOS
yum install git -y

# Ubuntu
apt install git -y
  1. 配置Git:
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

4. Vue3项目部署

4.1 项目打包准备

  1. 本地项目配置:
// vite.config.js
export default defineConfig({
  build: {
    // 生产环境移除console
    minify: 'terser',
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true,
      },
    },
    // 关闭生成map文件
    sourcemap: false,
    // 打包输出目录
    outDir: 'dist',
  },
})
  1. 环境变量配置:
# .env.production
VITE_API_BASE_URL=https://api.yourdomain.com
  1. 执行打包:
# npm
npm run build

# yarn
yarn build

# pnpm
pnpm build

4.2 上传项目文件

  1. 创建网站目录:

    • 在宝塔面板点击【网站】
    • 点击【添加站点】
    • 填写以下信息:
      域名:你的域名
      根目录:/www/wwwroot/你的域名
      PHP版本:纯静态
      
  2. 上传文件:

    • 方法一:宝塔面板上传

      1. 进入网站根目录
      2. 点击上传
      3. 选择本地dist目录所有文件
      
    • 方法二:使用FTP工具

      主机:服务器IP
      用户名:root
      密码:服务器密码
      端口:21或22(SFTP)
      

4.3 配置Nginx

  1. 基础配置:
server {
    listen 80;
    server_name your-domain.com;  # 替换为你的域名
    root /www/wwwroot/your-domain.com;
    index index.html index.htm;
    
    # 支持history路由模式
    location / {
        try_files $uri $uri/ /index.html;
    }
    
    # 静态资源缓存
    location /assets {
        expires 7d;
        add_header Cache-Control "public, no-transform";
    }
    
    # 图片缓存
    location ~* \.(jpg|jpeg|png|gif|ico|webp)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
    
    # gzip压缩
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    gzip_proxied any;
}
  1. 配置API代理(如果需要):
# 在server块内添加
location /api {
    proxy_pass http://backend-api.com;  # 后端API地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    
    # 跨域配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers '*';
    add_header Access-Control-Expose-Headers '*';
    
    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

5. 域名解析与SSL证书

5.1 域名解析配置

  1. 添加域名解析:

    • 登录域名服务商控制台
    • 找到域名解析设置
    • 添加以下记录:
      记录类型:A记录
      主机记录:@(根域名)或www(二级域名)
      记录值:服务器IP地址
      TTL:600秒
      
  2. 验证解析:

# 使用ping命令验证
ping your-domain.com

# 使用nslookup验证
nslookup your-domain.com

5.2 SSL证书申请与安装

  1. 免费证书申请:

    • 在宝塔面板中点击【SSL】
    • 选择【Let’s Encrypt】
    • 填写邮箱
    • 选择需要申请证书的域名
    • 点击申请
  2. 手动上传证书:

    • 点击【SSL】
    • 选择【其他证书】
    • 粘贴证书内容:
      证书文件:填写.pem文件内容
      私钥文件:填写.key文件内容
      
  3. SSL配置:

server {
    listen 443 ssl http2;
    server_name your-domain.com;
    
    ssl_certificate    /www/server/panel/vhost/cert/your-domain.com/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/your-domain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    
    root /www/wwwroot/your-domain.com;
    index index.html index.htm;
    
    # 其他配置保持不变...
}

# HTTP重定向HTTPS
server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$server_name$request_uri;
}

6. 性能优化

6.1 前端优化

  1. 路由懒加载:
// router/index.js
const routes = [
  {
    path: '/about',
    name: 'About',
    component: () => import('../views/About.vue')
  }
]
  1. 图片懒加载:
// main.js
import VueLazyload from 'vue-lazyload'

app.use(VueLazyload, {
  preLoad: 1.3,
  error: 'error.png',
  loading: 'loading.gif',
  attempt: 1
})
  1. 组件按需引入:
// 以Element Plus为例
import { createApp } from 'vue'
import { Button, Table } from 'element-plus'

const app = createApp(App)
app.use(Button)
app.use(Table)

6.2 服务器优化

  1. 内存优化:
# 编辑系统配置
vim /etc/sysctl.conf

# 添加以下内容
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
  1. Nginx优化:
# nginx.conf
worker_processes auto;
worker_rlimit_nofile 65535;

events {
    worker_connections 65535;
    multi_accept on;
    use epoll;
}

http {
    # 开启压缩
    gzip on;
    gzip_comp_level 6;
    gzip_min_length 1k;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    
    # 缓存设置
    open_file_cache max=65535 inactive=60s;
    open_file_cache_valid 80s;
    open_file_cache_min_uses 1;
    
    # 客户端配置
    client_max_body_size 50m;
    client_body_buffer_size 256k;
    client_header_timeout 3m;
    client_body_timeout 3m;
    
    # 代理设置
    proxy_connect_timeout 300s;
    proxy_read_timeout 300s;
    proxy_send_timeout 300s;
    proxy_buffer_size 64k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    proxy_ignore_client_abort on;
}

7. 常见问题解决

7.1 跨域问题

  1. 前端配置:
// vite.config.js
export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://backend-api.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})
  1. Nginx配置:
location /api {
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers '*';
    add_header Access-Control-Expose-Headers '*';
    
    if ($request_method = 'OPTIONS') {
        return 204;
    }
    
    proxy_pass http://backend-api.com;
}

7.2 部署后刷新404

  1. Nginx配置:
location / {
    try_files $uri $uri/ /index.html;
}

7.3 性能监控

  1. 安装监控工具:
# 安装网站监控工具
npm install -g @vue/cli-service
vue add performance
  1. PM2监控:
# 启动应用并监控
pm2 start app.js --name "vue-app" --watch

# 查看监控面板
pm2 monit

# 查看日志
pm2 logs

维护建议

  1. 定期备份:
# 备份网站文件
tar -zcvf website-backup-$(date +%Y%m%d).tar.gz /www/wwwroot/your-domain.com

# 备份数据库
mysqldump -u root -p database_name > backup-$(date +%Y%m%d).sql
  1. 日志管理:
# 查看Nginx错误日志
tail -f /www/wwwlogs/nginx_error.log

# 查看站点访问日志
tail -f /www/wwwlogs/your-domain.com.log
  1. 安全维护:
    • 定期更新系统包
    • 更新面板和插件
    • 检查安全日志
    • 配置防火墙规则

总结

成功部署Vue3项目需要注意:

  1. 服务器配置要合理
  2. 环境安装要完整
  3. Nginx配置要正确
  4. SSL证书要及时更新
  5. 性能优化要到位
  6. 安全防护要做好

参考资料

  1. Vue3官方文档
  2. 宝塔面板官方文档
  3. Nginx官方文档
  4. 腾讯云服务器文档

本教程详细介绍了在腾讯云服务器上使用宝塔面板部署Vue3项目的完整流程。如有问题,欢迎在评论区讨论。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐