亚马逊AWS官方博客
手把手教你如何部署企业级云存储网盘
Nextcloud 是一个开源的、功能强大的云存储网盘项目。它提供了一个安全和灵活的解决方案,允许用户共享一个或多个文件和目录,并与Nextcloud服务器同步。
部署演示
我们会使用快速入门的“Ubuntu Server 18.04 LTS”系统镜像部署并运行Nextcloud,接着我们会配置NextCloud的LDAP应用程序以允许活动目录(Active Directory)的用户登陆并使用Nextcloud,并将用户的工作目录设置到Amazon EFS文件系统,同时挂载S3存储桶作为共享盘。本次部署需要准备的前提条件包括:
-Amazon EC2 实例
-Ubuntu Server 18.04 LTS
-Nextcloud
-AWS Directory Service
-Amazon EFS文件系统
-S3 存储桶
安装Nextcloud
在AWS EC2控制台上点击启动实例,然后从快速入门中选择“Ubuntu Server 18.04 LTS”系统镜像,选择c5.large或更高配置的实例类型启动实例。实例启动后使用密钥登陆Ubuntu系统。
步骤一:安装LAMP
安装完成后,检查服务是否已经启动和启用了自动启动。
注意:如果没有启动或者没有启用自动启动,使用下面的命令启动并启用自动启动。
步骤二:安装MariaDB
回答提示问题:
为 root 输入当前密码(默认是没有,回车即可)
Enter current password for root (enter for none):
是否设置root密码(建议设置一个复杂的安全密码)
Set root password? [Y/n] y
是否删除匿名用户
Remove anonymous users? [Y/n] y
是否禁止远程登陆
Disallow root login remotely? [Y/n] y
是否删除自带的test测试数据库
Remove test database and access to it? [Y/n] y
是否重新加载权限表
Reload privilege tables now? [Y/n] y
步骤三:配置Nextcloud数据库
确保数据库完成安装之后,登陆数据库:
运行以下 sql 命令,请注意使用您的密码替换以下命令中的“PASSWORD”。
步骤四:配置 Nextcloud
从Nextcloud官方网站(点击查看)下载最新版本的Nextcloud:
解压并复制到web服务器的根目录下,并设置所有权:
为 Nextcloud 创建一个 Apache 配置文件:
启用新的配置和模块:
重新启动 Apache2服务,使更改生效:
步骤五:通过图形向导完成Nextcloud的安装
在开始配置之前,我们还需要将TCP端口80的入站规则添加到安全组,并将该安全组与实例相关联。如果使用HTTPS,还需要将TCP端口443的入站规则添加到安全组。
打开浏览器,指向以下地址: http://IP/nextcloud/
安装向导加载后,创建一个Nextcloud管理员帐户。输入用户名和密码,并配置数据库。
安装完成后,您将看到以下窗口。单击将出现在蓝色窗口右侧的向前箭头继续并按照提示进行操作。
然后在下一个窗口中,单击Start Using Nextcloud开始使用。
步骤六:配置 S3存储桶为外部存储
Amazon S3提供99.999999999% 的持久性,提供了一个高度扩展、高持久性和高可用的分布式数据存储服务。Nextcloud完全兼容 S3 的 API 接口,可以很容易地将S3存储桶挂载为外部存储。在开始配置之前,我们需要创建一个S3存储桶和一个可以编程方式访问该存储桶的IAM用户。如果使用已经存在的S3存储桶和IAM用户,可以跳到Nextcloud配置外部存储。
登陆S3控制台,创建一个存储桶,详见官方文档。
登陆IAM控制台,从访问管理菜单中单击策略,创建策略。
JSON内容如下,请将nextcloud更改为您的存储桶名字。
从访问管理菜单中单击用户,添加用户。
附加刚刚创建的策略
下载密钥文件
点击右上角的Admin用户图标,选择Apps
点击搜索框图标,搜索 “External storage support“,在单击External storage support的Enable按钮启用
启用后,点击Admin用户图标,选择Settings
单击左边Administration菜单下的External storages
下图是配置宁夏区域S3存储桶的示例。如果是配置海外区域的S3存储桶,请参考官方文档。
宁夏区域S3的主机名是 s3.cn-northwest-1.amazonaws.com.cn
北京区域S3的主机名是 s3.cn-north-1.amazonaws.com.cn
配置完成后,单击左上方的文件夹图标,选择“All files”,可以看到我们刚刚配置的S3存储桶。
步骤七:配置 LDAP
在配置LDAP之前,我们需要创建一个活动目录。如果使用已经存在的活动目录,可以跳到Nextcloud配置LDAP。
参考文档创建活动目录,如下图:
回到Nextcloud控制台,和上面的步骤一样,点击右上角的Admin用户图标,选择Apps,搜索LDAP并启用。
启用LDAP后,点击Admin用户图标,选择Settings,单击左边Administration菜单下的“LDAP / AD integration”。
具体配置详见Nextcloud的 LDAP配置文档。我们根据活动目录的信息填写配置,单击“Test Base DN”测试配置是否正确。
注意:Server地址为活动目录的DNS地址,端口为389。
选择允许登陆Nextcloud的用户组。在AWS托管的活动目录里,新创建的用户默认会分配到组“Domain Users”。可单击下方的“Verify settings and count users”查找该用户组的成员数。
配置登陆方式。如果希望使用AD用户的邮箱地址登陆,则可以勾选“LDAP / AD Email Address”如下图。可在下方的“Test Loginname”输入AD用户名验证。
最后,默认情况下,在 Nextcloud 上不会有 LDAP 组。我们选择活动目录的默认用户组“Domain Users”在Nextcloud 可用。
用户工作目录的命名规则默认是根据LDAP的用户属性创建,如果是迁移或者升级后设置失效,可以运行以下命令强制启用命名规则:
sudo -u www-data php /var/www/html/nextcloud/occ config:app:set user_ldap enforce_home_folder_naming_rule –value=”true”
我们还可以运行以下命令设置LDAP的同步间隔,间隔以秒为单位,例如设置为一天,即86400秒。
sudo -u www-data php /var/www/html/nextcloud/occ config:app:set user_ldap updateAttributesInterval --value=86400
更多命令可以请参考文档。
注意,除了LDAP APP外,Nextcloud还有非常丰富的APP,例如draw.io流程图绘制应用、WebMail插件RainLoop、开源办公onlyoffice应用等等。
步骤七:配置域名
Nextcloud安装后,默认信任的域名只有IP地址,如果希望通过域名连接Nextcloud,需要添加信任域名,运行如下命令:
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set trusted_domains 1 --value=nextcloud.example.com
或者修改配置文件 /var/www/html/nextcloud/config/config.php
中的array变量
步骤八:配置EFS
从上面步骤的截图我们看到'datadirectory' => '/var/www/html/nextcloud/data'
,这是Nextcloud的默认配置,用户的工作目录均放在路径/var/www/html/nextcloud/data
,为了更好的持久性和可扩展性,建议将所有用户的工作目录放在可扩展的、弹性原生云 NFS 文件系统Amazon Elastic File System。这样一来,我们可以实现多台主备服务器同时挂载EFS,提高可用性。
创建EFS文件系统,详见博客 利用 EFS 快速搭建 NFS 文件系统。
通过SSH登陆Nextcloud服务器,挂载EFS,然后运行以下命令修改datadirectory的路径:
进入维护模式:
拷贝现有文件到EFS,假设EFS挂载在/efs:
修改datadirectory参数:
退出维护模式:
注意,您也可以直接进入维护模式之后,将EFS挂载到/var/www/html/nextcloud/data
,这样就不需要更改目录路径。
步骤九:登陆Nextcloud客户端
Nextcloud支持Windows、Mac、Android、iOS、Linux 等各种平台的客户端(点击下载)。下载安装后,打开客户端,选择login。
输入nextcloud的IP地址或者域名,http://Server_IP/nextcloud/
注意,演示使用的是HTTP。
单击Next,将跳转到浏览器,单击Log in,登陆并授权。
设置同步。
打开软件,选择Settings并设置同步S3存储桶。
打开Nextcloud云盘,即可看到用户自己的工作目录(存放在EFS,仅自己可见),还有作为共享盘的S3存储桶(所有成员可见)。
总结
在本次演示中,考虑到仅在VPC内使用,所以没有配置SSL,若是在生产环境中使用,建议配置SSL证书,使用HTTPS连接。Nextcloud是一款开源免费的云存储网盘项目。除了上述的安装方式,还支持Docker快速安装,配合AWS S3和EFS服务,我们可以快速地构建企业级的云存储网盘,从而实现跨平台跨设备的文件同步、共享、版本控制和团队协作等功能。