aws s3 上传文件_如何使用Nextcloud设置基于AWS S3的企业网络文件共享

本文介绍了如何利用Nextcloud搭建企业级文件共享平台,并结合AWS S3作为主要存储,实现低成本、高可靠性。通过在Linux服务器上部署Nextcloud,配置Apache服务器,然后连接到S3存储桶,可以实现私有化的Dropbox或Google Drive服务,同时具备灵活的数据迁移能力。文章详细阐述了从硬件需求、LAMP服务器构建、Apache配置到连接S3的全过程。
摘要由CSDN通过智能技术生成

aws s3 上传文件

Nextcloud is an open source software suite that, when installed on a Linux server, can leverage storage capacity for saving, editing, and consuming a wide range of document types — including services like audio/video call hosting. Nextcloud also provides _client_ applications that allow users on Linux, Windows, MacOS, and smart phone platforms to engage with media resources.

Nextcloud是一个开源软件套件,当安装在Linux服务器上时,可以利用存储容量来保存,编辑和使用各种文档类型,包括音频/视频呼叫托管之类的服务。 Nextcloud还提供_client_应用程序,这些应用程序允许Linux,Windows,MacOS和智能手机平台上的用户与媒体资源互动。

Using Nextcloud, you can create your own private versions of Dropbox or Google Drive, but on your terms and without having to worry about unexpected changes to availability or service/privacy agreements.

使用Nextcloud,您可以创建自己的Dropbox或Google云端硬盘私有版本,但要按您的条件进行,而不必担心可用性或服务/隐私协议的意外更改。

So great. Nextcloud has some real benefits. But going it alone means you’re on the hook for the costs and complexity of data hosting, replication, and backups. Is it really worth all the trouble and expense when you can get lots of storage at little or no cost using any one of those other services?

很好。 Nextcloud有一些真正的好处。 但是,单独使用它意味着您要承担数据托管,复制和备份的成本和复杂性。 如果您可以使用其他任何一项服务以很少的成本或没有成本的价格获得大量存储,是否真的值得所有麻烦和支出?

Good news: you can have it both ways. For particularly sensitive data, you can keep the whole thing in-house. But you can also build a Nextcloud server as your front end (to finely control how users interface with your media), but have the data itself automatically and securely saved to cheaper, reliable third party services including Dropbox, Google Drive, and Amazon’s S3. If, down the line, you find you need to migrate your data away from a third-party provider like S3, you can do it without your users ever noticing the change.

好消息:两种方法都可以。 对于特别敏感的数据,您可以将整个内容保留在内部。 但是,您也可以构建一个Nextcloud服务器作为前端(以精确控制用户与媒体的交互方式),但可以将数据本身自动安全地保存到更便宜,更可靠的第三方服务中,包括Dropbox,Google Drive和Amazon的S3。 如果发现您需要从第三方供应商(如S3)迁移数据,那么您就可以做到,而您的用户却不会注意到这一变化。

硬件先决条件 (Hardware prerequisites)

Based on content from my Manning book, Linux in Action, let’s put something together using Ubuntu.

根据我在曼宁(Manning)的书《 Linux in Action》中的内容 ,让我们使用Ubuntu进行整合。

It’s always a good idea to check out an application’s documentation to make sure that you’ve got enough hardware and software muscle to handle the load. The figure below shows Nextcloud’s System Requirements web page. If you’re planning to host a simple, lightly-used server providing for just a few dozen users, then you’ll find Nextcloud is a fairly easy to get along with, demanding nothing that can’t be handled by an off-the-shelf container.

检查应用程序的文档以确保您具有足够的硬件和软件能力来处理负载始终是一个好主意。 下图显示了Nextcloud的系统要求网页。 如果您打算托管一个仅供几十个用户使用的简单,轻量级服务器,那么您会发现Nextcloud非常容易相处,不需要任何无法通过常规方式处理的内容-货架容器。

Any old minimal hardware configuration will work just fine for technology testing, but I wouldn’t want to rely on a single LXC container running off an old PC to serve tens of thousands of users and terabytes of data. Planning an enterprise-scale deployment? Nextcloud provides a useful, multi-level Deployment Recommendations guide to provisioning full-strength platforms.

任何旧的最小硬件配置都可以很好地用于技术测试,但是我不想依靠运行在旧PC上的单个LXC容器来服务成千上万的用户和TB的数据。 规划企业规模的部署? Nextcloud 提供了有用的多级部署建议指南,以配置完整强度的平台。

Here, for instance, is what Nextcloud recommends for a smaller work group with up to 150 users accessing up to 10TB of data:

例如,以下是Nextcloud针对较小的工作组(最多150个用户访问10 TB数据)的建议:

  • One sever with 2 CPU cores

    一台服务器,带有2个CPU内核
  • 16GB of RAM

    16GB RAM
  • Authentication through Lightweight Directory Access Protocol (LDAP) (a widely-used distributed information protocol)

    通过轻型目录访问协议(LDAP)(一种广泛使用的分布式信息协议)进行身份验证
  • Red Hat Enterprise Linux or Ubuntu 16.04 _with_ vendor support

    红帽企业版Linux或Ubuntu 16.04 _with_供应商支持

    Apache with TLS/SSL encryption certificate

    带有TLS / SSL加密证书的Apache

  • The MySQL or MariaDB database

    MySQL或MariaDB数据库
  • The Btrfs file system mounted with _nodatacow_ for Nextcloud data partitions to permit _zero downtime_ backups

    装有_nodatacow_的Btrfs文件系统用于Nextcloud数据分区,以允许_zero downtime_备份
  • Caching with memcache to speed up access performance

    使用Memcache进行缓存以加快访问性能

建立一个LAMP服务器 (Building a LAMP server)

Building a base environment suitable for testing the package should be simple enough. Here are all the packages you’ll need for your server in a single command. I threw in wget and nano just in case they’re not already installed. In the interest of keeping the base image as small as possible, packages like nano are often not installed by default on some virtualized platforms like LXC containers.

建立适合于测试软件包的基础环境应该足够简单。 在单个命令中,这是服务器所需的所有软件包。 我投入了wget和nano,以防万一尚未安装。 为了使基本映像尽可能小,默认情况下通常不会在某些虚拟化平台(例如LXC容器)上安装像nano这样的软件包。

# apt install apache2 mariadb-server libapache2-mod-php7.0 \
 php7.0-gd php7.0-json php7.0-mysql php7.0-curl php7.0-mbstring \
 php7.0-intl php7.0-mcrypt php-imagick php7.0-xml php7.0-zip \
 wget nano

If you’re not picky about using MySQL rather than MariaDB — and you’re on an Ubuntu server — then you could just as easily spare yourself a lot of typing and go with the LAMP server metapackage I mentioned in the previous chapter. Again: don’t forget the caret (`^`) at the end of the package name.

如果您对使用MySQL而不是MariaDB而不是挑剔的-并且您使用的是Ubuntu服务器-那么您可以轻松地节省很多输入时间,并使用上一章中提到的LAMP服务器元包。 同样:不要忘记包名称末尾的插入号(`^`)。

apt install lamp-server^

Once installed, don’t forget to run the MySQL secure installation tool:

一旦安装,别忘了运行MySQL安全安装工具:

mysql_secure_installation

If you chose the MariaDB route and found yourself having to use sudo with that command, here’s a quick fix:

如果您选择了MariaDB路由,并且发现自己必须在该命令中使用sudo,则可以使用以下快速修复方法:

MariaDB [(none)]> SET PASSWORD = PASSWORD(‘your-password’);
MariaDB [(none)]> update mysql.user set plugin = ‘mysql_native_password’ where User=’root’;
MariaDB [(none)]> FLUSH PRIVILEGES;

Apache配置 (Apache configuration)

To ensure that Apache will be able to communicate with Nextcloud, there are a few relatively simple adjustments you’re going to have to make. First off, you should enable a couple of Apache modules through the a2enmod tool. The rewrite module is used to rewrite URLs in real time as they’re moved between a client and the server. The headers module performs a similar function for HTTP headers.

为了确保Apache能够与Nextcloud进行通信,您需要进行一些相对简单的调整。 首先,您应该通过a2enmod工具启用几个Apache模块。 重写模块用于在URL在客户端和服务器之间移动时实时重写URL。 标头模块对HTTP标头执行类似的功能。

a2enmod rewrite
a2enmod headers

If you’re not planning to use this server for any other purpose, locating the Nextcloud application files in the Apache document root would work. Since the value of the `DocumentRoot` entry in the 000-default.conf file in your /etc/apache2/sites-available/ directory already points to /var/www/html/, there’s really nothing left for you to do.

如果您不打算将此服务器用于任何其他目的,则可以在Apache文档根目录中找到Nextcloud应用程序文件。 由于/ etc / apache2 / sites-available /目录中000-default.conf文件中`DocumentRoot`条目的值已经指向/ var / www / html /,因此实际上没有什么可做的。

However, placing Nextcloud’s data files in the default document root presents a potential security risk, so you will probably want your Nextcloud application in some other part of your file system.

但是,将Nextcloud的数据文件放在默认文档根目录中会带来潜在的安全风险,因此您可能希望将Nextcloud应用程序放在文件系统的其他部分。

There are two ways to tell Apache how to find site files that aren’t in the document root. The “Ubuntu method” involves adding a new section to your existing 000-default.conf file that contains all the necessary information. However, most people seem to prefer creating a new .conf file in the /etc/apache2/sites-available/ directory for each new service. Both work just fine, but here’s what the separate file should look like assuming you placed the application in /var/www/ rather than the document root:

有两种方法可以告诉Apache如何查找不在文档根目录中的站点文件。 “ Ubuntu方法”涉及在现有的000-default.conf文件中添加一个新部分,其中包含所有必要的信息。 但是,大多数人似乎更喜欢在/ etc / apache2 / sites-available /目录中为每个新服务创建一个新的.conf文件。 两者都可以正常工作,但是假设您将应用程序放置在/ var / www /而不是文档根目录中,则这是单独文件的外观:

Alias /nextcloud “/var/www/nextcloud/”
<Directory /var/www/nextcloud/>
 Options +FollowSymlinks
 AllowOverride All
<IfModule mod_dav.c>
 Dav off
 </IfModule>
SetEnv HOME /var/www/nextcloud
 SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

Note that the “Alias” line associates the contents of the /var/www/nextcloud/ directory with the “nextcloud” host (or “site”), and the two “SenEnv” lines assign environment variables that will define the way the Nextcloud application works

请注意,“ Alias”行将/ var / www / nextcloud /目录的内容与“ nextcloud”主机(或“ site”)相关联,并且两个“ SenEnv”行分配环境变量,这些变量将定义Nextcloud的方式应用工程

A similar directive using the Ubuntu method would involve adding a section in your 000-default.conf file that might look something like this:

使用Ubuntu方法的类似指令将涉及在000-default.conf文件中添加一个可能类似于以下内容的部分:

<VirtualHost *:443> <1>
 ServerName bootstrap-it.com
 DocumentRoot /var/www/nextcloud
 ServerAlias bootstrap-it.com/nextcloud <2>
</VirtualHost>

As you can see in the figure, when Apache reads this file, it will redirect all incoming traffic addressed to example.com/nextcloud to the application files in /var/www/ (assuming, again, that your domain is example.com…as before, an IP address will work just as well).

如图所示,当Apache读取此文件时,它将把发往example.com/nextcloud的所有传入流量重定向到/ var / www /中的应用程序文件(再次假设您的域是example.com…与以前一样,IP地址也将正常工作)。

Finally, you’ll need to create a symbolic link in the /etc/apache2/sites-enabled/ directory pointing to the nextcloud.conf file you created in /etc/apache2/sites-available/.

最后,您需要在/ etc / apache2 / sites-enabled /目录中创建指向您在/ etc / apache2 / sites-available /中创建的nextcloud.conf文件的符号链接。

ln -s /etc/apache2/sites-available/nextcloud.conf \
    /etc/apache2/sites-enabled/nextcloud.conf

But why? And what’s a symbolic link?

但为什么? 什么是符号链接?

When Apache starts up, it reads the contents of /etc/apache2/sites-enabled/ looking for site configurations to load. Those configurations won’t actually exist in /etc/apache2/sites/enabled/, but there will be symbolic links to the real files in /etc/apache2/sites-available/.

Apache启动时,它将读取/ etc / apache2 / sites-enabled /的内容,以查找要加载的站点配置。 这些配置实际上不会在/ etc / apache2 / sites / enabled /中存在,但是在/ etc / apache2 / sites-available /中将有指向实际文件的符号链接。

So why not just tell Apache to read /etc/apache2/sites-available/ in the first place and cut out the middleman? Because hanging it all on symbolic links makes it really easy and convenient to quickly disable a site and then — when you’ve finished a round of edits — re-enable it once again. Rather than having to actually delete and rewrite the real file, you’ll only need to play with an easy-to-manage link to it.

那么,为什么不只告诉Apache首先阅读/ etc / apache2 / sites-available /并切掉中间人呢? 因为将所有内容都挂在符号链接上,使快速禁用站点变得非常容易和方便,然后在完成一轮编辑后再次重新启用它。 无需真正删除和重写真实文件,您只需要播放一个易于管理的链接即可。

Symbolic links? They’re just objects that represent files or directories living elsewhere on a file system. They allow a user to execute or view a resource in one place, even though the resource itself is elsewhere.

符号链接? 它们只是代表位于文件系统其他位置的文件或目录的对象。 它们允许用户在一个地方执行或查看资源,即使资源本身在其他地方也是如此。

下载和解压缩Nextcloud (Downloading and unpacking Nextcloud)

You can download the most recent Nextcloud package from the Nextcloud Install page. If you’re installing to a container or VM — or from a server without a desktop GUI installed — then the most convenient approach is to get the package’s download URL and grab the package from the command line.

您可以从Nextcloud安装页面下载最新的Nextcloud软件包。 如果要安装到容器或VM(或从未安装桌面GUI的服务器)安装,则最方便的方法是获取程序包的下载URL并从命令行获取程序包。

One quick way to get that URL from the Nextcloud site (from a regular session on your own PC) is to click the Download tab beneath Get Nextcloud Server and then, as you can see below, the Details and Download options button. Right click on the .tar.bz2 link and select Copy Link Address from the menu.

从Nextcloud站点(从您自己的PC上的常规会话)获取URL的一种快速方法是单击“获取Nextcloud服务器”下方的“下载”选项卡,然后单击“详细信息和下载选项”按钮,如下所示。 右键单击.tar.bz2链接,然后从菜单中选择“复制链接地址”。

You can copy that URL into a `wget` command either through right-clicking in the terminal and selecting paste, or through SHIFT+CTRL+v.

您可以通过右键单击终端并选择粘贴,或通过SHIFT + CTRL + v将该URL复制到`wget`命令中。

wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.tar.bz2

Don’t forget to click the MD5 or SHA256 hash links and confirm that those values are identical to the hashes you generate from the downloaded archive. Unpacking a .tar.bz2 archive requires the xjf arguments rather than the `xzf` you would use for a .gz.

不要忘记单击MD5或SHA256哈希链接,并确认这些值与您从下载的归档文件中生成的哈希值相同。 解压缩.tar.bz2归档文件需要xjf参数,而不是用于.gz的`xzf`。

tar xjf nextcloud-12.0.0.tar.bz2

The next step involves copying the unpacked files and directories to their new home — which, following the best practices I mentioned earlier — will be in /var/www/, a location outside the document root. Adding -r to the copy command will copy the files “recursively”, to include subdirectories and their contents.

下一步涉及将解压缩后的文件和目录复制到新目录中(按照我前面提到的最佳实践),该目录将位于/ var / www /中,即文档根目录之外的位置。 在复制命令中添加-r将“递归”复制文件,以包括子目录及其内容。

cp -r nextcloud /var/www/

Just two more small steps and you’re good to go. Apache will need full access to all the files in the Nextcloud directories in order to do its job. You could have root own them, but that means you’d have to give visiting users root powers to access those files. As you might imagine, giving everyone on the internet that kind of access to your files poses just a wee problem. So, many web servers use a special system user called www-data.

仅需两个小步骤,您就可以开始了。 Apache将需要对Nextcloud目录中所有文件的完全访问权限才能完成其工作。 您可能拥有root所有权,但这意味着您必须授予访问用户root权限才能访问这些文件。 就像您想象的那样,向Internet上的每个人提供对文件的访问权限只是一个小问题。 因此,许多Web服务器使用称为www-data的特殊系统用户。

This next command will use chown to turn the user and group ownership of all those files over to the web server user www-data. Using the uppercase -R will (like the lowercase -r you used with cp) apply the command recursively to all files and directories in the directory hierarchy.

下一个命令将使用chown将所有这些文件的用户和组所有权移交给Web服务器用户www-data。 使用大写的-R将(与cp一起使用的小写的-r一样)递归地将命令应用于目录层次结构中的所有文件和目录。

chown -R www-data:www-data /var/www/nextcloud/

Apache has no idea of the kinds of stuff we’ve been up to while it wasn’t looking, so you’d better let it in on the fun by restarting the service.# systemctl restart apache2

Apache不了解我们一直在寻找的东西,所以最好通过重新启动服务让它变得有趣。#systemctl restart apache2

If that restart _wasn’t_ successful, then make a note of any error messages and see if there’s anything you can fix. You can also dig a bit deeper into the logs by displaying the last ten entries in the Journal. There might, for instance, be a reference to a specific line in the nextcloud.conf file.

如果重新启动成功了,请记下所有错误消息,看看是否有可以解决的问题。 您还可以通过显示“日志”中的最后十个条目来对日志进行更深入的研究。 例如,在nextcloud.conf文件中可能有对特定行的引用。

journalctl | tail

But if everything went well, then direct your browser to your container’s IP address followed by `nextcloud`. You’ll be taken to a page where you’re asked to create a new admin account and provide valid login credentials for your MariaDB database. Unless you’ve created a different database user account for the purpose, you’ll use `root` and the password you gave it earlier.

但是,如果一切顺利,则将浏览器定向到容器的IP地址,后跟`nextcloud`。 您将被带到一个页面,要求您创建一个新的管理员帐户并为您的MariaDB数据库提供有效的登录凭据。 除非为此目的创建了另一个数据库用户帐户,否则将使用`root`以及之前提供的密码。

10.0.3.36/nextcloud

Once your information is digested, you’ll be shown links to Nextcloud’s client apps and then dropped into the administration console you can see in the next figure. That’s where you can upload, view, and share documents and media files.

消化完信息后,将显示指向Nextcloud客户端应用程序的链接,然后将其放到管理控制台中,如下图所示。 您可以在其中上载,查看和共享文档和媒体文件。

As the site administrator, you can also create groups and users, assign permissions and quotas, and manage how the site functions.

作为站点管理员,您还可以创建组和用户,分配权限和配额以及管理站点的功能。

使用AWS S3作为主要的Nextcloud存储 (Using AWS S3 as your primary Nextcloud storage)

The thing about storing stuff is that you have to find space to put it all. And, since all storage devices will eventually fail without warning, you’ll need multiple copies of each device. Figuring out how to provision, connect, and maintain such storage arrays is time consuming, and keeping it going is relatively expensive.

关于存储东西的事情是,您必须找到空间以放置所有东西。 而且,由于所有存储设备最终都会在没有警告的情况下发生故障,因此您将需要每个设备的多个副本。 弄清楚如何配置,连接和维护这样的存储阵列非常耗时,并且保持运行相对昂贵。

Cloud storage, on the other hand, is comparatively cheap and — as you can read in my Manning “Learn Amazon Web Services in a Month of Lunches” book — simple to set up. Since the big cloud providers invest vast funds in data security and resilience, their services are pretty much guaranteed to be more reliable than anything you could put together.

另一方面,云存储相对便宜,并且-正如您可以在我的曼宁的“ 在一个月的午餐中学习Amazon Web服务 ”一书中所读到的那样,它易于设置。 由于大型云提供商在数据安全性和弹性上投入了大量资金,因此可以保证他们的服务比您提供的任何服务都更加可靠。

Therefore, using cloud-based data as a back end to your locally hosted Nextcloud site is a serious option to explore. Here’s how it works.

因此,使用基于云的数据作为本地托管的Nextcloud站点的后端是一个值得探索的严肃选择。 运作方式如下。

You’ll first need to enable the External storage support App bundle. From the gear icon at the top right, click the Apps item, and then the Disabled apps link in the left panel. As the figure shows, the External storage support option appears in the list. Click Enable.

首先,您需要启用外部存储支持应用程序捆绑包。 在右上方的齿轮图标中,单击“应用程序”项,然后单击左侧面板中的“禁用的应用程序”链接。 如图所示,“外部存储支持”选项出现在列表中。 单击启用。

将Nextcloud连接到S3存储桶 (Connect Nextcloud to an S3 bucket)

From the command line on any computer with the AWS CLI installed and configured for your AWS account (see chapter 12 of my AWS in a Month of Lunches book for details), create a new bucket with a globally unique name.$ aws s3 mb nextcloud32327

在为您的AWS账户安装并配置了AWS CLI的任何计算机上的命令行上(有关详细信息,请参阅我的AWS的《午餐月》一书中的第12章 ),创建一个具有全局唯一名称的新存储桶。aws s3 mb nextcloud32327

Retrieve a set of account Access Keys from the Your Security Credentials page in the AWS console (chapter 7 in the AWS book). You can also use an existing set of keys if you’ve got one available.

从AWS控制台的“您的安全凭证”页面( AWS书的第7章 )中检索一组帐户访问密钥。 如果有可用的密钥,也可以使用一组现有的密钥。

Now head back to your Nextcloud console, click on Admin from the gear drop-down, and then on the External storages link that should be visible in the left panel. This will open the External storages page, where you can click the Add storage drop-down and select Amazon S3 from the list — which also includes Dropbox and Google Drive.

现在回到您的Nextcloud控制台,从齿轮下拉列表中单击Admin,然后在左侧面板中应该可见的External storages链接上。 这将打开“外部存储”页面,您可以在其中单击添加存储下拉菜单,然后从列表中选择Amazon S3,其中还包括Dropbox和Google Drive。

You’ll be prompted to enter the S3 bucket you want to use along with your Access and Secret keys. All other fields — which allow you to customize your configuration using things like non-standard ports or SSL encryption — are optional. When you’re done, clicking the check mark to the right will save your settings and set Nextcloud off trying to authenticate with AWS.

系统将提示您输入要使用的S3存储桶以及访问和秘密密钥。 所有其他字段(使您可以使用非标准端口或SSL加密等自定义配置)是可选的。 完成后,单击右侧的复选标记将保存您的设置,并将Nextcloud设置为尝试通过AWS进行身份验证。

If you’re successful, you’ll see a happy green circle to the left, as is visible in the figure. If it doesn’t work, the most likely cause is that you somehow used invalid authentication keys. It can’t hurt to confirm network connectivity to the internet and, in particular, AWS.

如果成功,您将在左侧看到一个快乐的绿色圆圈,如图所示。 如果不起作用,则最有可能的原因是您以某种方式使用了无效的身份验证密钥。 确认与互联网(尤其是AWS)的网络连接无害。

You can test your new storage configuration by copying and pasting a file from your computer into the folder in your Nextcloud console. Then, from your AWS CLI, list the contents of your bucket.

您可以通过将文件从计算机复制并粘贴到Nextcloud控制台的文件夹中来测试新的存储配置。 然后,从您的AWS CLI中,列出存储桶的内容。

aws s3 ls s3://nextcloud32327
testfile.pdf

Of course, you’ll need to test it the other way too. Copy a local file to the bucket from your command line.

当然,您也需要以其他方式对其进行测试。 从命令行将本地文件复制到存储桶。

aws s3 cp test.txt s3://nextcloud32327

That test.txt file should appear in your console. Glorious multi-platform storage integration.

该test.txt文件应出现在您的控制台中。 光荣的多平台存储集成。

This article is excerpted from my Manning “Linux in Action” book. There’s lots more fun where this came from, including a hybrid course called Linux in Motionthat’s made up of more than two hours of video and around 40% of the text of Linux in Action. Who knows…you might also enjoy my Learn Amazon Web Services in a Month of Lunches.

本文摘自我的 曼宁“ Linux in Action”一书 这有很多有趣的 地方 ,包括一个名为 Linux in Motion 的混合课程 它由两个多小时的视频和大约40%的Linux in Action文本组成。 谁知道……您可能还会 在一个月的午餐中 享受我的 Learn Amazon Web Services

翻译自: https://www.freecodecamp.org/news/aws-s3-based-enterprise-network-file-sharing-using-nextcloud/

aws s3 上传文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值