阿里云轻量级服务器利用宝塔面板部署前后端分离项目

服务器部署简明指南

  1. 服务器准备
  • 购买阿里云轻量服务器(选择宝塔镜像)
  • 记录关键信息(账号密码、配置等)
  • 登录宝塔面板,按需安装MySQL/Redis等组件
  1. 后端部署
  • 开放安全组端口(阿里云+宝塔)
  • 配置数据库连接(本地host改为localhost)
  • Maven打包项目,上传jar包至服务器
  • 在宝塔"Java项目"中添加并启动服务
  1. 前端部署
  • 修改axios配置(生产环境baseURL)
  • npm build生成dist静态文件
  • 宝塔新建站点:
    • 无代理:添加伪静态路由规则
    • 需代理:配置Nginx反向代理(指定/api等路径)
  1. 注意事项
  • 确保所有使用端口已放行
  • 代理配置需区分路由请求
  • 数据库文件可通过Workbench导出导入

注意:这一连串下来可能涉及多个账号密码或者配置什么的,最好一边搞一边拿记事本把重要信息贴下来 

购买服务器

上阿里云买一个轻量级服务器,选择宝塔镜像

 然后在实例这根据面板一步步操作,登录宝塔面板

宝塔准备

登录宝塔后会让你选择下载哪些应用,可以先不下,也可以选最推荐的先下了,然后再根据自己需要增加或删除,我这个是下了这几个,注意一下软件版本

 数据库:我这里用的是mysql和redis

 至于数据库的sql文件去本地workebench导出就行

 至于redis下了就有,默认没有密码

 后端部署

首先端口设置成你已经开放的,端口安全组开放直接搜很简单的(注意阿里云那里和宝塔都要开放)

然后数据库就设置成刚刚服务器安装的 ,因为数据库和后端运行在同一服务器,所以host改为localhost,不是的话按你数据库在哪配置,这里用户名和密码就是你刚刚设置的

然后利用maven.package 将项目打成jar包,执行后在target目录下会有一个jar,右击在explorer中打开

 然后点击宝塔面板的文件目录创个文件夹取个应景的名字上传你的jar包

然后来到"网站"目录里面,选择java项目.点击添加java项目

 指定刚上传的jar包,填写相关信息,jdk按你项目使用的下载

 点击确定就ok了,然后启动一下如果是未启动的话,接着可以访问后端接口测试一下了

 前端部署

关注你的axios配置,如果你是这样配置,baseURL得改成你后端部署的url

const service = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL, // 从环境变量读取
  timeout: 60000,
});

如果你没有指定baseURL而是通过server转发,因为前端的 devServer.proxy 配置仅在本地开发时生效,当你将前端代码打包并部署到服务器后,这个配置不会生效。这是因为它属于 webpack-dev-server 的配置,仅用于开发环境(npm run dev),而生产环境(打包后的静态文件)不会使用这些代理规则。这种情况标记成需要代理.

server: {
    port: 39005,
    proxy: {
      "/api": {
        // target: 'http://localhost:9090',
        target: 'http://47.122.88.208:39001',
        changeOrigin: true, // 是否修改请求源
        ws: false,
        secure: false,  
        // rewrite: (path) => path.replace(/^\/api/, ''), // 可选: 重写路径 
        // target: 'http://202.194.14.120:9090,
      },

 然后前端执行npm run build 打包成dist文件夹

宝塔新建站点

点击确认后会生成

点击根目录直接去上传前端文件 

 

确认后点击网站名 

 域名管理按需添加,默认80

 

不需要代理时在伪静态这里添加如下代码保存:这段伪静态代码的作用是在用户请求的路径不存在对应静态资源时,将请求转发(重定向)到 index.html,并带上原请求路径参数 s=/<路径>,帮助前端单页应用进行路由控制。

location / {
  if (!-e $request_filename) {
    rewrite  ^(.*)$ /index.html?s=/$1  last;
    break;
  }
}

 需要代理情况下不要配置伪代码,而是点击反向代理

添加后默认任何请求都会转发到后端,但对路由的请求不应该转发到后端,所以要修改配置文件 

点击配置文件,将内容替换为下面 将需要代理的路径替换成你的,ip也替换成你的,不会就问ai

#PROXY-START/
location / {
    try_files $uri $uri/ /index.html;
}

# 代理 /api 路径到后端
location ^~ /api {
    proxy_pass http://47.122.88.208:39001;
    proxy_set_header Host 47.122.88.208;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;

    add_header X-Cache $upstream_cache_status;

    # 静态文件缓存规则
    set $static_fileQ5Xpo0Qc 0;
    if ($uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$") {
        set $static_fileQ5Xpo0Qc 1;
        expires 1m;
    }
    if ($static_fileQ5Xpo0Qc = 0) {
        add_header Cache-Control no-cache;
    }
}

# 新增:代理 /auth 路径到后端
location ^~ /auth {
    proxy_pass http://47.122.88.208:39001;
    proxy_set_header Host 47.122.88.208;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_http_version 1.1;

    add_header X-Cache $upstream_cache_status;
    add_header Cache-Control no-cache;  # 认证接口通常不缓存
}

#PROXY-END/

然后所有部署就结束了,注意把需要用到的端口都放行了

<think>好的,我现在需要处理用户关于LightPicture的查询。用户希望寻找与LightPicture相关的IT内容,特别是图片处理和轻量级方面。首先,我要回忆一下用户提供的引用内容,里面有关于LightPicture的安装、功能、部署等信息。 首先,用户提到的引用[1]到[5]中,引用[1]和[5]详细说明了LightPicture的功能,比如支持多用户、多种云存储、权限控制等。引用[2]和[3]主要涉及安装步骤,使用宝塔面板服务器部署。引用[4]提到图床的必要性和自建趋势。引用[5]还提到了技术架构,比如Vue前后端分离。 接下来,我需要根据这些信息来构建回答,确保覆盖用户关心的几个方面:系统概述、核心功能、技术架构、部署步骤、应用场景、同类对比以及社区资源。同时,用户希望问题与IT相关,所以可能需要包含技术实现细节、部署常见问题、扩展开发等。 需要检查是否所有引用的信息都被合理利用,并且正确标注引用标记。例如,在介绍多存储支持时,引用[5]提到支持多个云存储,所以需要添加[^5]。在安装部分,引用[2]和[3]提供了步骤,所以引用标记要放在相应的位置。 另外,用户可能对如何扩展或二次开发感兴趣,因此需要根据引用中的技术架构(Vue前后端分离)给出建议,如修改前端或后端API,并引用。同时,对比同类系统时,需要确保提到的对比点如轻量化、多存储支持等都有引用支持。 生成的相关问题需要涵盖部署、功能扩展、对比、存储配置、安全、性能优化等方面,确保每个问题都能在现有引用中找到依据,或者引导用户进一步探索。 最后,确保回答结构清晰,分点明确,符合用户要求的系统级指令,如正确使用LaTeX格式(虽然这里可能用不上,但需要注意是否有数学公式),使用中文,引用标记正确放置。同时检查是否有遗漏的重要信息,比如LightPicture的开源性质,颜值高,这些在引用[1][5]中提到,也需要在回答中突出。</think>以下是与LightPicture图床系统相关的IT技术内容整理,结合其轻量化、图片处理等特性进行分析: ### 一、系统概述 LightPicture是**开源轻量化图床系统**,采用前后端分离架构(前端Vue+后端PHP/ThinkPHP),支持多用户管理和多样化存储方案。其核心定位是为中小型网站提供**高性能图片托管服务**,同时通过模块化设计实现快速部署[^1][^4]。 ### 二、核心功能 1. **存储扩展性** - 支持本地存储 + 主流云存储(阿里云OSS/腾讯云COS/七牛云) - 可同时管理多个存储桶,实现资源分级管理[^5] 2. **上传能力** ```python # 伪代码示例:多协议上传实现 def upload_image(file, storage_type): if storage_type == 'OSS': return aliyun_oss_client.put(file) elif storage_type == 'COS': return tencent_cos_client.upload(file) else: return local_storage.save(file) ``` 支持拖拽上传、API接口上传、粘贴板上传等多种方式 3. **权限控制** - 基于RBAC模型的细粒度权限管理 - 用户组可关联特定存储桶并设置空间配额[^5] ### 三、技术架构 $$ \begin{array}{|l|l|} \hline \text{层级} & \text{技术栈} \\ \hline 前端 & Vue.js + ElementUI \\ 后端 & ThinkPHP6 + MySQL \\ 部署 & Nginx/Apache + PHP7.4+ \\ 安全 & JWT令牌 + 操作日志审计 \\ \hline \end{array} $$ ### 四、部署实践(宝塔面板) 1. **环境准备** - PHP7.4+(需安装fileinfo扩展) - MySQL5.7+ - 配置伪静态规则:`location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; }}`[^2] 2. **关键配置** ```nginx # 宝塔面板伪静态设置示例 location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } } ``` 需设置运行目录为`/public`并调整文件权限[^3] ### 五、应用场景 1. 自媒体多平台图片托管 2. 电商网站商品图集中管理 3. 开发团队API接口测试图床 ### 六、同类系统对比 | 特性 | LightPicture | Chevereto | Lychee | |--------------------|--------------|-----------|--------| | 开源协议 | MIT | 商业授权 | MIT | | 存储扩展性 | ★★★★☆ | ★★★☆☆ | ★★☆☆☆ | | 多用户管理 | 支持 | 付费版支持 | 不支持 | | 部署复杂度 | 中等 | 简单 | 简单 |[^1] ### 七、扩展开发建议 1. **二次开发方向** - 增加WebP自动转换模块 - 集成CDN刷新接口 - 开发CLI批量迁移工具 2. **API扩展示例** ```javascript // 示例:使用axios调用上传接口 axios.post('/api/upload', formData, { headers: { 'Authorization': 'Bearer '+jwtToken, 'Content-Type': 'multipart/form-data' } }) ``` 系统提供标准RESTful API接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值