华为根技术 | 华为欧拉系统中部署FTP服务与Filestash应用:实现高效文件管理和共享

举报
江湖有缘 发表于 2024/12/08 13:39:11 2024/12/08
【摘要】 华为根技术 | 华为欧拉系统中部署FTP服务与Filestash应用:实现高效文件管理和共享

前言


华为云EulerOS凭借其卓越的性能优化、安全性及稳定性,为企业级应用提供了坚实的基础。该操作系统不仅广泛兼容各类硬件和软件生态,还特别针对云计算、大数据处理等场景进行了深度优化,确保了高效的资源利用和数据处理能力。此外,华为云EulerOS内置丰富的安全机制,保障了系统的长期稳定运行和数据的安全可靠。在本篇文章中,我们将基于华为云EulerOS搭建FTP服务,并集成Filestash应用,以实现更加便捷高效的文件管理和共享解决方案。


一、相关服务介绍

1.1 Huawei Cloud EulerOS介绍

  • Huawei Cloud EulerOS简介

Huawei Cloud EulerOS 2.0 是由华为公司开发的企业级Linux操作系统,旨在为数据中心和云环境提供高性能、高可靠性和安全性的计算平台。EulerOS是基于开源社区版本,并结合了华为在电信和企业市场的丰富经验与技术积累。

  • Huawei Cloud EulerOS特性
  • 性能优化:针对云计算、大数据处理、数据库等应用场景进行了深度优化,以确保最佳性能。
  • 安全性:内建多种安全机制,包括SELinux支持、加密功能以及访问控制策略,保护数据隐私和系统安全。
  • 稳定性:经过严格的测试流程,确保长时间运行的稳定性和可靠性,适用于关键任务型应用。
  • 兼容性:广泛支持各类硬件设备和软件生态,能够良好地运行于x86架构服务器之上。
  • 易于管理:提供图形化和命令行两种界面,简化了系统的安装、配置及日常维护工作。
  • 容器支持:对Docker等容器技术有良好的支持,方便用户构建微服务架构的应用程序。
  • 更新与支持:长期稳定的更新和支持周期,确保用户可以获得最新的安全补丁和技术改进。
  • Huawei Cloud EulerOS应用场景
  • 云计算平台:作为云服务的基础操作系统,支持虚拟化和弹性计算资源分配。
  • 大数据分析:适配Hadoop、Spark等大数据框架,助力企业挖掘数据价值。
  • Web服务和应用托管:适合部署各种Web应用程序和服务。
  • 数据库服务器:支持MySQL、PostgreSQL等多种主流数据库管理系统。

1.2 Filestash介绍

Filestash是一款功能强大的网络文件管理工具,它允许用户在单一界面下管理分布于不同地点和平台的数据。无论是FTP、SFTP、WebDAV服务器,还是Git仓库,亦或是S3、Minio、Dropbox、Google Drive等云存储服务,Filestash都能提供便捷的访问和管理途径。通过Filestash,用户可以轻松实现文件的上传、下载、编辑、搜索和版本控制,无需在多个应用程序或服务之间切换,极大地提升了数据管理和协作的效率。尤其对于需要频繁处理多源文件的专业人士或团队,Filestash无疑是一个理想的解决方案。

1.3 华为云Flexus应用服务器L实例介绍

  • 华为云Flexus应用服务器L实例简介

华为云Flexus云服务是一款专为中小企业和开发者设计的新一代高性价比云服务产品,强调开箱即用的便捷性和卓越用户体验。其中,Flexus应用服务器L实例作为该系列的一员,是特别针对中低负载应用场景优化的轻量级云服务器。对于刚开始接触云计算服务的新手用户、寻求高效部署方案的个人开发者,或是希望以较低成本实现业务上云的中小企业而言,Flexus应用服务器L实例是一个理想的选择,它能够帮助用户轻松开启云端之旅,同时确保稳定可靠的服务体验。

  • 华为云Flexus应用服务器L实例特点

Flexus应用服务器L实例提供了经过严格筛选的丰富应用镜像库,支持一键部署,大大简化了网站构建、开发测试环境搭建、企业级应用部署、数据分析以及音视频服务等多种场景的操作流程。此实例具备以下优势:

  • 易用性:快速启动,配置简单,无需复杂的前期设置。
  • 经济性:提供高品价比,适合预算有限但追求性能的用户。
  • 维护简便:降低日常运维复杂度,节省管理成本。
  • 安全性:内置安全措施,保护您的应用程序和数据。

二、本次实践介绍

2.1 本次实践介绍

1.本次实践环境为华为云Flexus应用服务器L实例,个人测试环境,生产环境请谨慎;
2.本次实践主要为在openEuler系统下部署FTP服务和Filestash工具。

2.2 本次环境规划

本次环境规划如下所示:

服务器 HostName 系统镜像 操作系统 内核版本 部署项目
华为云Flexus应用服务器L实例 hcss-ecs-d368 Huawei Cloud EulerOS 2.0 Huawei Cloud EulerOS 2.0 (x86_64) 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 FTP服务和Filestash工具

三、检查云服务器环境

3.1 登录华为云

登录华为云官网,进入华为云Flexus云服务控制台,可以看到当前购买的Flexus应用服务器L实例。当前使用的系统镜像为 Huawei Cloud EulerOS 2.0,我们复制其弹性公网IP地址,后面远程连接和访问应用都需要用上。

在这里插入图片描述

3.2 SSH远程连接

我们本地通过Xshell工具,远程连接其Flexus应用服务器L实例。

在这里插入图片描述

3.3 检查系统环境

  • 检查操作系统版本,当前安装版本为Huawei Cloud EulerOS 2.0 (x86_64)
[root@hcss-ecs-d368 ~]# cat /etc/os-release
NAME="Huawei Cloud EulerOS"
VERSION="2.0 (x86_64)"
ID="hce"
VERSION_ID="2.0"
PRETTY_NAME="Huawei Cloud EulerOS 2.0 (x86_64)"
ANSI_COLOR="0;31"
  • 检查内核版本,当前内核版本为5.10.0-182.0.0.95.r2220_156.hce2.x86_64
[root@hcss-ecs-d368 ~]# uname -r
5.10.0-182.0.0.95.r2220_156.hce2.x86_64

四、部署Docker环境

4.1配置Docker仓库

为Docker安装了Filestash工具,首先需安装Docker环境,这是一个开源平台,允许将应用及其依赖打包进轻量级、可移植的容器中。通过Docker,我们能够实现一次构建、处处运行,确保应用在任何环境中的一致性和易移植性。我们执行以下操作,配置Docker-ce的镜像仓库。

vim /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://repo.huaweicloud.cn/docker-ce/linux/centos/9/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://repo.huaweicloud.cn/docker-ce/linux/centos/gpg

执行以下命令,重新生成缓存。

dnf clean all && dnf makecache

4.2 检查Docker仓库状态

执行以下命令,查看Docker仓库状态正常。

[root@hcss-ecs-d368 ~]# dnf repolist all
repo id                                             repo name                                                    status
base                                                HCE 2.0 base                                                 enabled
debuginfo                                           HCE 2.0 debuginfo                                            disabled
docker-ce-stable                                    Docker CE Stable - x86_64                                    enabled
updates                                             HCE 2.0 updates                                              enabled

4.3 安装Docker

执行以下命令,我们使用dnf一键安装Docker。

dnf  install docker-ce -y

在这里插入图片描述

4.4 检查Docker版本

安装完毕后,检查Docker版本,当前安装Docker版本为27.3.1

[root@hcss-ecs-d368 ~]#  docker -v
Docker version 27.3.1, build ce12230

检查docker compose版本,当前安装docker compose版本为v2.29.7

[root@hcss-ecs-d368 ~]# docker compose version
Docker Compose version v2.29.7

4.5 启动Docker服务

启动Docker服务,并使开机自启。

sudo systemctl start  docker
sudo systemctl enable  docker

检查Docker服务状态,确保Docker服务正常运行。

[root@hcss-ecs-d368 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2024-12-07 14:47:09 CST; 3min 5s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 6464 (dockerd)
      Tasks: 8
     Memory: 26.0M
     CGroup: /system.slice/docker.service

4.6 配置镜像加速

执行以下命令,配置Docker镜像加速。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [ "https://80c84f5330e14908928ca78944e61dc4.mirror.swr.myhuaweicloud.com" ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker


五、安装FTP服务

5.1 FTP的主动模式和被动模式

FTP(文件传输协议)有两种主要的工作模式:主动模式(Active Mode)和被动模式(Passive Mode)。这两种模式的主要区别在于数据连接的建立方式。下面是关于这两种模式的详细介绍:

  • 主动模式(Active Mode)
  1. 客户端发起命令连接:客户端首先与服务器的21端口建立一个控制连接,用于发送命令和接收响应。
  2. 客户端监听端口:客户端选择一个本地端口(通常大于1024),并通知服务器将要使用的这个端口号。
  3. 服务器发起数据连接:服务器从其20端口向客户端指定的端口发起数据连接请求,以传输文件或目录列表。
优点:
- 对于简单的网络配置来说,主动模式工作良好。
 缺点:
- 客户端防火墙可能会阻止来自外部的数据连接请求。
- 在NAT环境中,客户端的内部IP地址和端口可能无法直接被外部服务器访问。
  • 被动模式(Passive Mode)
  1. 客户端发起命令连接:同样地,客户端与服务器的21端口建立一个控制连接。
  2. 服务器提供数据端口:当需要进行数据传输时,服务器在高编号端口(通常大于1024)上监听,并通过控制连接告知客户端它所选择的端口号。
  3. 客户端发起数据连接:客户端然后从自己的任意可用端口连接到服务器提供的端口,以建立数据传输通道。
 优点:
- 更适合现代网络环境,特别是当客户端位于防火墙之后或使用NAT时。
- 客户端可以更容易地配置防火墙规则来允许数据连接。

 缺点:
- 服务器端可能需要配置防火墙以允许动态端口范围内的入站连接。
- 如果服务器也位于防火墙之后,则可能需要额外的配置才能支持被动模式。

5.2 安装vsftpd软件

vsftpd(Very Secure FTP Daemon)是一个用于Linux和类Unix系统的高性能、安全的FTP服务器软件,主要用于提供文件传输服务。执行以下命令,我们使用dnf命令,一键快速安装vsftpd软件。

dnf install vsftpd -y

在这里插入图片描述

5.3 启动vsftpd服务

执行以下命令,启动vsftpd服务并设置开机自启。

systemctl start vsftpd  && systemctl enable vsftpd

我们检查vsftpd服务状态,确保vsftpd服务运行正常。

[root@hcss-ecs-d368 ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
     Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2024-12-07 14:54:48 CST; 34s ago
   Main PID: 7031 (vsftpd)
      Tasks: 1 (limit: 11431)
     Memory: 420.0K
     CGroup: /system.slice/vsftpd.service
             └─ 7031 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 07 14:54:48 hcss-ecs-d368 systemd[1]: Starting Vsftpd ftp daemon...
Dec 07 14:54:48 hcss-ecs-d368 systemd[1]: Started Vsftpd ftp daemon.

5.4 新增FTP服务用户

我们为FTP服务创建一个用户,这里用户名我们设置为jeven。

adduser jeven

执行以下命令,我们给新建用户设置密码,自定义设置即可。

 passwd jeven

在这里插入图片描述

5.5 创建FTP目录

执行以下命令,我们为FTP服务创建目录和文件。

mkdir -p /data/ftp/
echo "Huawei Cloud EulerOS" >  /data/ftp/aa.txt

将该FTP目录的权限的属主和属组都设置为jeven,如下所示:

chown -R jeven:jeven /data/ftp/

5.6 修改vsftpd配置文件

修改/etc/vsftpd/vsftpd.conf配置文件,注意将以下内容的pasv_address值改为弹性公网IP地址。

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
local_root=/data/ftp
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
allow_writeable_chroot=YES
pasv_address=IP
pasv_min_port=3000
pasv_max_port=3100

5.7 创建chroot_list文件

chroot_list 文件用于定义不受主目录限制的用户例外名单。若要允许某个用户访问超出其主目录的权限,可将该用户名添加到此文件中。即使没有需要设置例外的用户,也应保持 chroot_list 文件存在,但可以为空。如果需要修改chroot_list文件,可在/etc/vsftpd/vsftpd.conf文件中修改以下配置:

配置项 说明
chroot_local_user YES 所有本地用户都将被限制在其主目录中。
chroot_list_enable YES 启用例外用户名单,允许列表中的用户不受主目录限制。
chroot_list_file /etc/vsftpd/chroot_list 指定例外用户名单文件的位置,默认为/etc/vsftpd/chroot_list
allow_writeable_chroot YES 允许用户的主目录是可写的,即使启用了chroot_local_user。这通常是为了避免某些系统上的安全警告或错误。

需要注意事项:

  • 修改上述配置后,请确保chroot_list文件存在,并根据需要添加例外用户。
  • 在应用更改之前,请备份原始配置文件。
  • 完成配置修改后,记得重启vsftpd服务以使更改生效:sudo systemctl restart vsftpd

由于我们在/etc/vsftpd/vsftpd.conf配置文件中启动了`chroot_local_user等配置项,我们新建一个空的chroot_list文件。

touch   /etc/vsftpd/chroot_list

5.8 重启vsftpd服务

将以上所有步骤全部完成后我,我们重启vsftpd服务

systemctl restart vsftpd.service

5.9 安全组设置

在华为云Flexus应用服务器L实例的安全组的入方向上,放行21端口和3000-3100端口。

在这里插入图片描述

在这里插入图片描述

5.10 访问测试

在浏览器中ftp://<FTP服务器公网IP>:21访问FTP服务,输入密码后效果如下所示:

在这里插入图片描述

在这里插入图片描述

六、部署Filestash应用

6.1 拉取Filestash镜像

执行以下命令,拉取Filestash镜像。

docker pull registry.cn-hangzhou.aliyuncs.com/jeson/filestash
docker pull registry.cn-hangzhou.aliyuncs.com/jeson/documentserver

在这里插入图片描述

6.2 编辑部署文件

编辑docker-compose.yaml部署文件,内容如下所示,可自定义修改宿主机映射端口。

vim docker-compose.yaml
version: '3'
services:
  app:
    container_name: filestash
    image: registry.cn-hangzhou.aliyuncs.com/jeson/filestash
    restart: always
    environment:
      #    - APPLICATION_URL=
      #    - GDRIVE_CLIENT_ID=<gdrive_client>
      #    - GDRIVE_CLIENT_SECRET=<gdrive_secret>
      #    - DROPBOX_CLIENT_ID=<dropbox_key>
    - ONLYOFFICE_URL=http://onlyoffice
    ports:
    - "8334:8334"
    volumes:
    - filestash:/app/data/state/

  onlyoffice:
    container_name: filestash_oods
    image: registry.cn-hangzhou.aliyuncs.com/jeson/documentserver
    restart: always
    security_opt:
      - seccomp:unconfined

volumes:
    filestash: {}

6.3 创建Filestash容器

使用docker compose up -d命令,快速创建Filestash容器。

[root@hcss-ecs-d368 filestash]# docker compose up -d
WARN[0000] /data/filestash/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 4/4
 ✔ Network filestash_default     Created                                                                            0.1s
 ✔ Volume "filestash_filestash"  Created                                                                            0.0s
 ✔ Container filestash           Started                                                                            1.5s
 ✔ Container filestash_oods      Started                                                                            1.5s

6.4 检查Filestash容器状态

检查Filestash容器状态,确保Filestash容器正常启动。

[root@hcss-ecs-d368 filestash]# docker compose ps
WARN[0000] /data/filestash/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME             IMAGE                                                    COMMAND                  SERVICE      CREATED        STATUS          PORTS
filestash        registry.cn-hangzhou.aliyuncs.com/jeson/filestash        "/app/filestash"         app          46 seconds ago   Up 45 seconds   0.0.0.0:8334->8334/tcp, :::8334->8334/tcp
filestash_oods   registry.cn-hangzhou.aliyuncs.com/jeson/documentserver   "/app/ds/run-documen…"   onlyoffice   46 seconds ago   Up 45 seconds   80/tcp, 443/tcp

在这里插入图片描述

七、访问Filestash应用

7.1 安全组设置

在华为云Flexus应用服务器L实例的安全组的入方向上,放行8334端口。

在这里插入图片描述

7.2 访问Filestash初始页

在本地浏览器:http;//服务器IP地址:8334,地址填写自己云服务器的弹性公网IP地址,可以看到已经正常在浏览器访问到Filestash的初始页。

在这里插入图片描述

7.3 设置访问密码

在Filestash初始页,填写访问密码,自定义设置即可。

在这里插入图片描述
在这里插入图片描述

八、访问FTP服务器

8.1 登录FTP服务器

我们选择了Filestash的FTP功能,配置了弹性公网IP地址,并设置了FTP访问账号jeven和对应的密码。利用这些设置,我们成功登录了FTP服务器。

在这里插入图片描述
在这里插入图片描述

8.2 新建目录和文件

  • 点击新目录选项,填写目录名称,按回车键确认。

在这里插入图片描述

  • 点击新文件,填写文件名称,按回车键确认。

在这里插入图片描述

8.3 编辑文件内容

双击新建的文件,进入该文件编辑页面。编辑文件内容完成后,点击保存即可。

在这里插入图片描述

总结


通过在华为云EulerOS上部署FTP服务并与Filestash应用集成,我们不仅充分利用了华为欧拉系统卓越的性能优化和高安全性特性,还为用户带来了无缝、高效的文件管理体验。华为云EulerOS以其稳定性和广泛的兼容性,确保了各类应用和服务的顺畅运行,特别适合需要处理多源文件的专业人士和团队。结合华为云Flexus应用服务器L实例的使用,本方案为中小企业和个人开发者提供了一个成本效益高且易于部署的云端解决方案,极大地促进了数据管理和协作效率。华为欧拉系统及其相关云服务产品为企业提供了坚实的技术支持,助力其业务发展与创新。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。