828华为云征文|使用Flexus X实例创建FDS+Nginx服务实现图片上传功能

一、Flexus X实例

什么是Flexus X实例呢,这是华为云最新推出的云服务器产品,如下图:

        华为云推出的Flexus云服务器X系列,是在华为顶尖技术团队,特别是荣获国家科技进步奖的领军人物顾炯炯博士及其团队的主导下精心研发的。这款服务器深度融合了擎天QingTian架构的先进设计理念、瑶光云脑的智能优化能力,以及盘古大模型的强大计算能力,开创性地成为市场上首个以应用需求为核心驱动的灵活算力解决方案。Flexus云服务器X实例广泛适用于高科技、零售、金融、游戏等多个行业的多元化工作负载场景,包括但不限于高效能网络应用部署、数据库服务优化、虚拟桌面环境构建、数据分析与索引加速、微服务架构支撑,以及持续集成/持续部署(CI/CD)流程的自动化等,全面满足各行业对云计算资源的多样化与灵活性需求。

1.1 应用场景

Flexus X实例广泛应用于多个行业和场景,包括但不限于:

  • 软件开发:为开发者提供便捷且经济高效的解决方案,助力开发者搭建开发测试环境,提高开发效率,缩短项目周期。
  • 电商直播:凭借其强大的算力和平滑扩容能力,Flexus X实例能够轻松应对电商直播期间的流量爆发式增长,确保电商平台的稳定运行。
  • 企业建站:适用于企业创建博客、搭建论坛、构建企业门户等场景,助力企业有效传播价值信息,增强品牌影响力和用户粘性。
  • 游戏服务:强大的网络加速能力和高并发处理能力使得Flexus X实例成为游戏后台服务器的理想选择,能够确保游戏的流畅性和稳定性。

1.2 产品定位

        Flexus X实例是华为云针对中小企业和开发者推出的一款高性能、灵活配置、易于管理的云服务器产品。它凭借华为云在云计算领域的深厚积累和不断创新的技术优势,致力于为企业提供更加高效、经济、智能的云计算解决方案。通过Flexus X实例,华为云希望帮助中小企业和开发者轻松应对数字化转型中的挑战,加速业务发展,实现业务创新。

        接下来我们就使用它来实现图片上传功能看一下吧,本次用到的技术有FastDFS文件存储服务以及Nginx的反向代理功能。具体操作如下:

二、在服务器上安装FastDFS

2.1 安装FastDFS

首先,我们进入Flexus云服务器X实例控制台,然后点击远程登录,使用CloudShell登录。登陆成功如下:

接下来我们要安装fastdfs之前先要下载安装gcc编译器,命令如下: 

yum install gcc-c ++ perl-devel pcre-devel openssl-devel zlib-devel wget
然后把我们的本地下载好的 FastDFS(V6.06.tar.gz) FastDFS 赖包 (V1.0.43.tar.gz) 上传到服务器的根目录上/
OK,可以看到我们都安装好相关依赖和上传好安装包了
这里这两个资源我绑定在文章里面了,有需要的自己下载就好啦
然后 依次按照下面命令执行按照FastDFS依赖
# 解压 FastDFS 依赖包
tar -zxvf V1.0.43.tar.gz -C /usr/local
# 进入依赖解压包
cd /usr/local/libfastcommon-1.0.43/
# 编译依赖
./make.sh
# 安装依赖
./make.sh install
看过程是没有什么问题,然后我们接着下来,再按照下面命令执行 安装 FastDFS
# 解压 FastDFS
cd /
tar -zxvf V6.06.tar.gz -C /usr/local
# 进入 FastDFS 解压包
cd /usr/local/fastdfs-6.06
# 编译 FastDFS
./make.sh
# 安装 FastDFS
./make.sh install
# 进入 etc 目录
cd /etc/fdfs/
# 复制配置文件
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

OK啊,看上图也是没有啥问题的,接下来我们就需要启动tracker(跟踪)服务和storage(存储)服务了。

2.2 启动tracker服务

首先先创建该服务的相关目录,命令如下:

# 创建 storage 目录
mkdir -p /data/fastdfs/base
mkdir -p /data/fastdfs/tracker
然后修改相关配置文件:
disabled = false                   # 启用配置文 件
port = 22122                       # 设置tracker的端口号
base_path = /data/fastdfs/tracker # 设置tracker的数据文件和日志目录
http .server_port = 8888           # 设置 http 端口号
最后启动tracker服务
# 启动 tracker 服务
/etc/init.d/fdfs_trackerd start
# 检查 tracker 服务
netstat -lntup |grep fdfs
OK啊,可以看到我们的tracker服务确实已经启动了,接下来处理 storage 服务

2.3 启动storage服务

启动storage服务也是如此先创建storage目录,具体命令和功能如下:

# 创建 storage 目录
mkdir -p /data/fastdfs/base
mkdir -p /data/fastdfs/storage
# 修改配置文件
vim /etc/fdfs/storage.conf
disabled = false                         # 启用配置文件
group_name = group1                     # 组名,根据实际情况修改
port = 23000                          
#storage 的端口号
base_path = /data/fastdfs/base        
#storage 的日志目录
store_path_count = 1                     # 存储路径个数
store_path0 = /data/fastdfs/storage     # 存储路径
tracker_server = 192 .168.0.159:22122  
#tracker 服务器路径
http .server_port = 8888                 # 设置http 端口号
最后启动服务
# 启动 storage 服务
/etc/init.d/fdfs_storaged start
# 查看 storage 服务
netstat -lntup |grep fdfs

OK,这下跟踪和存储服务都已经成功启动了。

三、在服务器上安装Nginx

3.1 安装Nginx

在安装Nginx之前,我们也是需要先下载好Nginx的相关依赖,命令如下:

yum install -y gcc gcc-c ++ zlib zlib-devel openssl openssl-devel pcre pcre-devel gd-devel epel-release
OK,因为前面下载了部分gcc依赖,因此这里就快了一点

然后我们还要上传fds的nginx模块包和nginx安装包,再依次执行下面命令进行安装:

# 解压 FastDFS Nginx 模块包
tar -zxvf V1.22.tar.gz -C /usr/local
# 解压 Nginx
tar -xzvf nginx-1.19.2.tar.gz -C /usr/local
# 进入 Nginx 安装路径
cd /usr/local/nginx-1.19.2/
# 建立 Makefile 文件,检查 Linux 系统环境以及相关的
关键属性。
./configure --add-module = /usr/local/fastdfs-nginx-module-1.22/src/
# 编译 Nginx
make
# 安装 Nginx
make install
OK,这里就已经安装好喽,接下来进行相关配置

3.2 配置FastDFS

再拷贝fastdfs的配置文件:
cp /usr/local/fastdfs-6.06/conf/mime.types /etc/fdfs/
cp /usr/local/fastdfs-6.06/conf/http.conf /etc/fdfs/
cp /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/

然后进行fastdfs存储配置:

# 编辑配置文件
vim /etc/fdfs/mod_fastdfs.conf
# 保存日志目录
base_path = /data/fastdfs/storage      
#tracker 服务器的 IP 地址以及端口号

tracker_server = 192 .168.0.159:22122  
# 文件 url 中是否有 group
url_have_group_name = true          
# 存储路径
store_path0 = /data/fastdfs/storage  
# 设置组的个数
group_count = 1                      
# 然后在末尾添加分组信息,目前只有一个分组,就只写
一个
[group1]
group_name = group1
storage_server_port = 23000
store_path_count = 1
store_path0 = /data/fastdfs/storage

 接下来对Nginx进行配置

3.3 配置Nginx

然后配置 Nginx,可能下面格式复制过来有点不太对劲,但是内容是一样的就行
# 编辑 Nginx 配置文件
vim /usr/local/nginx/conf/nginx. conf
server {
   
        listen       80;
   
        server_name localhost;
   
   
        location ~ /group[ 1-3 ]/ M00 {
       
        alias /data/fastdfs/storage/data;
              ngx_fastdfs_module;
  }
}

 

就是这样即可,这个配置就是说明了,我们上传的图片就是存放在/data/fastdfs/storage/data/M00的目录下方。

然后启动Nginx,命令如下:

# 进入 sbin 目录
cd /usr/local/nginx/sbin/
# 启动服务
./nginx -c /usr/local/nginx/conf/nginx.conf

OK,可以看得到我们的Nginx也是配置完成了 

四、实现图片上传

接下来我们在项目的yml文件中添加如下配置:

fdfs:
  so-timeout: 3000
  connect-timeout: 6000
  tracker-list: # TrackerList路径
    - 公网ip:22122
  fileUrl: http://公网ip # 自定义配置,文件访问路径

然后整体代码如下:

package com.example.shopping_file_service.service;

import com.example.shopping_common.exception.BusException;
import com.example.shopping_common.result.CodeEnum;
import com.example.shopping_common.service.FileService;
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
import com.github.tobato.fastdfs.service.FastFileStorageClient;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;

import java.io.ByteArrayInputStream;

@DubboService
@Transactional
public class FileServiceImpl implements FileService {

    @Autowired
    private FastFileStorageClient fastFileStorageClient;

    // nginx访问fastDFS文件路径
    @Value("${fdfs.fileUrl}")
    private String fileUrl;

    @Override
    public String uploadImage(byte[] fileBytes, String fileName) {
        if(fileBytes.length != 0){
            try {
                // 1.将字节数组转为输入流
                ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileBytes);
                // 2.获取文件的后缀名
                String fileSuffix = fileName.substring(fileName.lastIndexOf(".") + 1);
                // 3.上传文件
                StorePath storePath = fastFileStorageClient.uploadFile(byteArrayInputStream, byteArrayInputStream.available(), fileSuffix, null);
                // 4.返回图片路径
                String imageUrl = fileUrl + "/" + storePath.getFullPath();
                return imageUrl;
            } catch (Exception ioException){
                ioException.printStackTrace();
                throw new BusException(CodeEnum.UPLOAD_FILE_ERROR);
            }
        }
        else {
            throw new BusException(CodeEnum.UPLOAD_FILE_ERROR);
        }
    }

    @Override
    public void delete(String filePath) {
        fastFileStorageClient.deleteFile(filePath);
    }
}

接下来我们启动相关服务,查看是否能将图片上传,并且存储在服务器上,OK项目启动之后登录进去:

然后我们随机选择一张图片,这里就选择这个老鼠图吧,可以看得到也是成功传上去并且回显回来了。

然后我们去服务器上面查看是否将该图片上传进去了,应该是在/data/fastdfs/storage/data/M00这个目录下的啊,

可以看到该目录下确实多了一个文件啊,说明我们也是利用Flexus云服务器X实例成功上传了图片,还是非常不错滴,看上面那个gif响应速度也是很快。说明Flexus云服务器X实例还是非常好的

五、使用感觉

        整体来说还是非常可以的,但是这几天发现那个CloudShell那个失效时间建议可以延长一点,才20分钟,20分钟就自动断联了,要我们重新输入密码才能登录上去,并且之前的记录也不会继续显示,不方便我们截图记录问题。因为当出现我们基本都是需要查好久。所以还是希望这个失效时间可以适当延长一点。不过其余的功能还是非常完善滴

        本届828 B2B企业节由华为与17家联合发起伙伴,60家协办伙伴,200多家支持伙伴,150多家媒体、协会及行业组织共同发起,吸引了上万家合作伙伴共同参与,为融通数智供需,加速中国企业智改数转,推动中国数智产业与数字经济繁荣发展,注入新活力、新动能。

        譬如提及的华为云Flexus X系列云服务、赞奇超高清设计师云工作站两款与企业“上云”密切相关的产品与服务,不仅展现了华为云与生态伙伴在云服务领域的技术、生态优势,更切实解决了企业在云基础设施部署、用云成本优化、大模型智能调度等方面的“卡点”,让“上云”更高效、更轻松。还是非常值得我们去探索的

<think>好的,我需要帮助用户了解如何在华为云服务器上部署服务。首先,我需要根据用户提供的引用内容,整理出一个清晰的步骤指南。用户提到的引用[1]、[3]、[4]、[5]都与部署相关,特别是引用[1]和[4]提到了具体的部署步骤,比如使用OpenResty和前后端分离项目的部署。引用[5]提到了使用FileZilla和Python环境的配置,这些也是部署过程中常见的步骤。 首先,我应该分步骤讲解,从购买服务器实例开始,然后配置环境,上传代码,安装依赖,配置网络,最后启动服务。每个步骤需要参考对应的引用内容,确保信息准确。例如,在购买服务器时,引用[1]提到了Flexus服务器X实例,而引用[3]提到其经济性和性能优势,可以在步骤中推荐用户选择这个实例类型。 接下来,在环境配置部分,引用[5]提到了安装Python和pip,以及使用FileZilla上传文件,这些需要详细说明。例如,安装Python和pip的命令,以及如何使用SCP或FileZilla上传前端文件,如引用[4]中的示例。 然后,在部署Web服务器部分,引用[1]提到部署OpenResty,可能需要指导用户安装并配置Nginx或OpenResty。同时,引用[4]中的上传dist文件到指定目录,可以结合到前端部署步骤中。 网络和安全组配置部分,引用[2]提到虚拟IP的绑定,但用户的问题可能更基础,需要开放端口如80和443。此外,引用[4]中的SCP命令和引用[5]的FileZilla连接都是文件传输的方法,需要分别说明。 最后,启动和测试服务时,需要确保服务正常运行,并能够通过公网IP访问。可能还需要提到HTTPS配置,但用户可能暂时不需要,可以放在优化建议里。 生成相关问题的时候,要考虑用户可能进一步的问题,比如性能优化、HTTPS配置、自动化部署等,这些都能在引用中找到相关点,比如引用[3]提到的成本节省和性能优化,可以引导用户了解如何优化部署。 需要检查是否有遗漏的步骤,比如安全组设置是否正确,依赖安装是否全面,以及是否需要数据库配置等。不过根据现有引用,可能不需要涉及数据库,但可以建议用户根据项目需求安装其他服务。 另外,注意使用中文,避免使用Markdown格式,但根据用户的要求,回答中需要包含代码块和公式,不过用户的问题是关于部署服务的,可能不需要数学公式。但按照系统级指令,所有行内数学表达式要用$...$,不过在这里可能用不上,所以可能不需要处理。但需要确保LaTeX语法正确,如果有的话。 最后,确保每个引用在回答末尾正确标注,例如[^1]、[^4]等,引用标识要自然地加在对应的步骤后面。例如,在购买服务器实例时引用[1]和[3],在文件上传时引用[4]和[5]。 总结步骤应该是: 1. 购买云服务器实例 2. 配置环境(安装必要软件) 3. 上传项目文件 4. 部署Web服务器 5. 配置网络与安全组 6. 启动与测试服务 7. 进阶配置建议 每个步骤详细说明,结合引用内容,确保用户能逐步操作。同时,相关问题要围绕部署后的优化、安全设置和自动化部署等方面,引导用户深入了解更多内容。</think>### 华为云服务器部署服务分步指南 #### 1. **购买云服务器实例** - 进入华为云控制台,选择 **Flexus服务器X实例**,创建时根据业务需求选择配置(如CPU、内存、操作系统)。该实例性价比高,性能优于同类产品,迁移成本可降低30%[^3]。 - 推荐操作系统:openEuler(适合部署Web服务器)或Ubuntu/CentOS(通用性强)。 #### 2. **配置基础环境** - **连接服务器**:通过SSH工具(如PuTTY)登录实例。 ```bash ssh username@服务器公网IP ``` - **安装依赖**: - 安装Python环境(适用于后端服务): ```bash apt-get update apt-get install python3 python3-pip # 引用[5] ``` - 安装Web服务器(如OpenResty/Nginx): ```bash apt-get install openresty # 引用[1] ``` #### 3. **上传项目文件** - **方法一:使用SCP命令**(适合小文件): ```bash scp -r /本地项目路径/* username@服务器IP:/目标目录 # 如前端dist文件上传 ``` - **方法二:使用FileZilla**(可视化操作): - 在FileZilla中新建站点,输入服务器IP、用户名、密码,端口默认22(SFTP协议)[^5]。 #### 4. **部署Web服务** - **前端部署**(以Nginx为例): 1. 将前端文件(如`dist`目录)上传至`/var/www/myapp`。 2. 修改Nginx配置: ```nginx server { listen 80; server_name 你的域名或IP; root /var/www/myapp; index index.html; } ``` 3. 重启服务: ```bash systemctl restart nginx ``` - **后端部署**(以Python为例): 1. 安装依赖库: ```bash pip3 install -r requirements.txt # 引用[5] ``` 2. 启动服务(如使用Gunicorn): ```bash gunicorn -w 4 app:app ``` #### 5. **配置网络与安全组** - **开放端口**:在华为云控制台的**安全组**中放行所需端口(如HTTP 80、HTTPS 443、SSH 22)[^2]。 - **绑定域名**(可选):在域名解析服务商处将域名A记录指向服务器公网IP。 #### 6. **启动与测试服务** - 访问`http://服务器公网IP`,检查前端页面是否加载。 - 使用`curl http://localhost:后端端口`测试API接口。 #### 7. **进阶配置建议** - **HTTPS加密**:通过Let's Encrypt申请免费SSL证书,配置Nginx支持HTTPS。 - **负载均衡**:若需高可用,可结合华为云虚拟IP(VIP)实现实例负载均衡[^2]。 ---
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会洗碗的CV工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值