公司共享文件夹的建立(共享服务器搭建方案 )

一次性付费进群,长期免费索取教程,没有付费教程。

公司共享文件夹的建立(共享服务器搭建方案 )

ID:Computer-network

或许您没有立即想到企业文件分享的问题,但学习更多Linux提供的Web服务方法也是一个不错的选择。这里讨论的文件分享,指的是拥有大量必须被访问的文档或其他媒体文件,且安全可靠地维护文件。

设想一个涉及几十个开发人员的项目,这些开发人员被分成若干个小组,并分布在3个或4个物理位置上。除了可能存在于私有资源库中的代码,每个小组还会制作很多设计文档、演示视频、项目融资提案及视频聊天记录,更不用说PDF格式的合同和工作声明了。为了让这种系统运转,需要在并不安全的网络环境中确保系统能被安全地访问,但必须小心地控制访问权限,以便只让合适的人看到合适的资源。

我们将建立一个Nextcloud服务器,用来阐述如何使用一些重要的Linux管理技能完成这项工作。您将看到Ubuntu的新snapd包管理器,学习如何扩展Apache配置的限制,理解应用程序如何管理它们的配置,以及理解如何跨越多个设备存储数据。

1、企业文件共享和Nextcloud

使用Nextcloud,可以构建Dropbox或Google Drive私有版本,根据设置的条款,不需要担心可用性或服务/隐私协议的意外变化。

对于特别敏感的数据,可以把所有东西都存档在内部,还可以构建一个Nextcloud服务器作为前端,以良好地控制用户与媒体交互,并将数据本身自动、安全地保存到更便宜可靠的第三方服务中。如果需要从Dropbox中移出数据,可以在用户完全察觉不到变化的情况下移出数据。

2、使用snaps安装Nextcloud

snaps是一个完全独立完整的软件包。需要的只是一个兼容snap的Linux发行版本以及一个包的名称。如果在一个Linux终端中运行命令:

它将会自动安装完整的Blender 3D创作套件,以及所有的运行环境依赖和它需要的扩展。更新和补丁也将在后台处理。

Blender只是一个例子而已。作为一个高度图形化的程序,只有在桌面版的Linux上安装snap是有意义的;在服务器上安装不会有良好的效果。

Ubuntu Core是一个特殊的轻量级发行版本,主要是为物联网(IoT)设备建造的,如智能家电和车联网,以及码头集装箱群。设计时,Core只用snap进行包管理。

snap系统不仅是一个包管理器。如图1中看到的,snap本身是独立的沙箱,对其他系统资源的访问是有限的。

图1 snap体系结构:注意如何谨慎地控制snap和系统资源交换数据以保持安全隔离

如图1所示,与其他snap通信是通过一个仅在合适处连接的接口实现的。snap可以访问文件系统的特殊位置(在/var/snap/<snapname>/)并写入数据。如果机器上还没有安装snap,需要snap包:

应用程序开发人员已经构建了几百个snap,它们被托管在不同的源,如Ubuntu Store(https://snapcraft.io)。可以使用snap find在命令行中寻找可用的snap,还可以通过关键字描述正在寻找的内容。以下是一些包含关键字sever的snap搜索结果:

事实证明,Nextcloud是第一批将其软件包添加为snap的大型应用程序之一。在一个全新的、干净的Ubuntu 17.04 VirtualBox VM上运行snap install nextcloud,将会带给您一个功能齐全的Nextcloud服务器,并且无须事先手动安装LAMP组件:

为什么使用Ubuntu 17.04,为什么使用VirtualBox?

将snap集成到LXC环境中的速度似乎比预期要慢一些,并且Ubuntu 16.10以前的版本还不兼容LXC容器。因为在工作站上运行的是Ubuntu 16.04,所以启动一个运行Ubuntu17.04 ISO映像的VirtualBox虚拟机是最快且最简单的解决方案。

这也是学习多种虚拟化技术价值的一个例证:当一个失败时,另一个可能会起作用。

3、手动安装Nextcloud

如果安装一个Nextcloud snap如此简单明了,为什么还用手动的方式呢?这里有几个原因。其一是snap可能过于简单,不允许在设计和配置方面有较大的灵活性。另一个原因是,有的snap版本还不能添加和完全管理应用程序。手动安装应用软件意味着更深入地了解Linux系统内部工作原理,并且识别和解决问题。

(1)硬件预备知识

检查应用程序的文档以确定有足够的硬件和软件条件来处理负载总是一个好习惯。

图2展示了Nextcloud的系统需求网页。如果计划部署一个简单的、为几十个用户使用的轻量级服务器,那么将发现Nextcloud非常好用,不需要任何不能用现成容器处理的东西。

图2 Nextcloud安装的软硬件推荐配置与最低配置

所有老旧的低配硬件在我们的技术测试中都运行良好,但尽量不要在旧电脑上运行一个LXC容器来服务成千上万用户并处理TB级的数据。

如果计划一个企业级部署,Nextcloud提供了一个好用的多级部署指南以提供全强度平台支持。举个例子,在这里Nextcloud推荐一个至多150人的工作组,访问至多10 TB数据:

● 一个具有双核CPU的服务器。

● 16 GB RAM。

● 通过轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP,一个广泛使用的分布式信息协议)进行身份验证。

● 红帽企业级Linux或供应商支持的Ubuntu 16.04。

● 有TLS/SSL加密认证的Apache。

● MySQL或MariaDB数据库。

● 使用nodatacow进行Nextcloud数据分区的Btrfs文件系统,可以保证零停机备份。

● 使用memcache缓存加速访问性能。

Btrfs是一个文件系统类型,尽管比ext4应用更少,但它的设计目的是在大规模数据下提供卓越的性能和数据可靠性。

(2)建立LAMP服务器

下一步应该足够简单。建议启动一个全新的容器或虚拟机,如果没有其他更多原因的话这将是一个非常好的练习实践。以下是服务器可能需要的软件包,它们可以通过单个命令安装。加入了wget和nano,以防它们还没有安装:

如果对使用MySQL或使用MariaDB不是特别挑剔,而且是在Ubuntu服务器上,那么可以轻松地为自己省下大量的输入量,然后再安装LAMP服务器综合功能包。再次提醒,在包名的末尾不要忘记脱字符(^):

安装成功后,记得运行MySQL安全安装工具:

如果选择了MariaDB路线并发现必须使用带sudo的命令,以下是一个快速修复的方法:

安装好LAMP软件,搭建并运行数据库之后,已经准备好告诉Apache想让它与应用程序如何协同工作。

(3)配置Apache

为了确保Apache能够与Nextcloud通信,不得不做一些简单的调整。首先,需要通过a2enmod工具启用几个(一对)Apache模块,rewrite模块用于在客户端和服务器端实时重写URL。header模块则起到与HTTP报头类似的功能:

如果不打算将该服务器用于其他目的,那么将Nextcloud应用程序文件放在Apache文档的根目录就行。因为/etc/apache2/sites-available/目录下的000-default.conf文件中的DocumentRoot已经指向/var/www/html/,这里已经不需要再做什么了。但是将Nextcloud的数据文件存放在默认的文档根目录下存在潜在的安全风险。可以将Nextcloud放入文件系统的其他地方。

有两种方法可以告诉Apache如何查找不在文档根目录下的站点文件。Ubuntu方法涉及在现有的000-default.conf文件中增加一个包含所有必要信息的新部分。似乎更多的人更喜欢在/etc/apache2/sites-available/目录下为每个新服务都新增一个.conf文件的方式。两种方法都有效果,假设将应用程序放在了/var/www/目录下而不是文档根目录下,那么图3是单独文件应该有的样子。

图3/etc/apache2/sites-available/nextcloud.conf文件内容

使用Ubuntu方法的一个类似指令涉及在000-default.conf文件中添加一个部分。如图4所示。

图4000-default.conf Apache配置文件中的示例Nextcloud指令

图5 Apache读取/etc/apache2/sites-enabled/中的配置文件并使用这些配置重定向请求

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

符号链接是什么?当Apache启动时,它读取/etc/apache2/sites-enabled/中的内容寻找配置点加载。这些配置并不真正存在于/etc/apache2/sites-enabled/中,但那里一定有一个指向/etc/apache2/sites-available/中实际文件的符号链接。

符号链接(Symbolic link)是代表文件系统中其他位置的文件或目录的对象。它们允许使用者在一个位置执行或浏览资源,即使这个资源本身在其他位置。

(4)下载和解压缩Nextcloud

可以在Nextcloud安装网页(https://nextcloud.com/install)上下载最新版本的Nextcloud软件包。如果正在向一个容器或虚拟机安装,或者在没有安装桌面GUI的服务器上安装,最简单的方法是获得软件包的下载链接URL并从命令行中下载软件包。

图6 Nextcloud下载链接截图:.tar.bz2或.zip格式都可以

可以将.tar.bz2 URL复制给wget命令,无论是右击终端选择Paste,还是按Shift-Ctrl-v。以下是命令的样子:

单击Details and Download options按钮时不要忘记单击显示的MD5或SHA256散列链接。然后确认这些值与下载存档文件中生成的散列相同。

下载的存档文件具有.tar.bz2扩展名而不是.tar.gz。.gz存档文件与.bz2存档文件是使用不同的压缩算法创建的。gzip存档文件压缩时需要的时间似乎更少,但是生成的存档文件比BZ2大。

解压缩一个.tar.bz2存档文件需要xjf参数,而不是解压.gz时用到的xzf:

下一步是将解压过的文件和目录复制到它们的新家:/var/www/。这是根目录外的位置。

增加-r将递归地复制文件,以包含子目录及其内容:

Apache将需要访问Nextcloud目录下所有文件的完整权限以完成它的工作。可以让root用户拥有它们,但是这意味着不得不给访客用户root权限以访问这些文件。给互联网上的每个人这种访问文件的权限会带来一些安全隐患。

许多Web服务器使用一个特殊的称为www-data的系统用户。下一条指令将使用chown将所有这些用户和组的文件所有权交给Web服务器用户www-data。使用大写字母-R(像和cp一起使用的小写字母-r一样)将这条命令递归地应用在层次结构目录的所有文件和目录下:

在Apache没有开启的时候,它并不知道我们在做什么。最好通过重新启动这项服务来使它保持良好的运转状态:

如果重启没有成功,那么请记录所有错误提示,看看什么是可以处理的。也可以使用tail命令显示最近的10个日志条目,从而更深入地研究日志。例如,可能有某一行出现nextcloud.conf文件:

将数据库资源和非根数据库用户关联在一起具有安全和逻辑上的优势。当多个应用程序使用单个数据库中的资源时,推荐通过创建多个分离的账户保持应用程序的独立性。

一旦信息被接收,就会展示Nextcloud的客户端应用,然后将它放进图7中的管理控制台。在这里,可以上传、浏览并分享一些文档和媒体文件。

图7 主Nextcloud控制台,有完整示例的文件夹和文件。可以像使用操作系统文件管理一样使用对象

作为站点管理员,也可以创建组和用户,分配权限和配额,以及管理站点功能。现在我们来看看如何管理Nextcloud。

4、Nextcloud管理

随着Nextcloud站点复杂性的增长以及人们需求的变化(例如,使用脚本管理不断增长的资源可能更加高效),有时会需要在命令行级别使用管理资源。最好知道东西在哪里,长什么样。

与许多Linux应用程序使用/etc/的方法不同,Nextcloud将它的主要配置文件(名为config.php)放在/var/www/nextcloud/config/目录下。文件中包含身份验证信息和环境信息,以及关键数据库连接细节。

与所有优秀的Linux应用程序一样,Nextcloud有一个功能齐全的命令行shell叫作occ command。要使用它,需要准备一个极度详细的字符串作为使用PHP的www-data用户运行命令。键入sudo-u www-data php occ-h会显示基本的语法帮助,而list会打印出所有的可用命令:

图9 在左侧面板中有指向各种管理程序链接的主页面,中间是警告和状态信息

对服务器上的文件进行加密将阻止任何以某种方式获得存储设备访问权限的人增加文件或者读取文件内容。这些人可能是谁?假设有人入侵网络,或者有人带走了服务器设备。如果文件是加密的,它们将只能为窃贼提供很少或没有价值的东西。

图10 在Nextcloud中启用服务器端加密是一个简单的、一键式的过程,但是应该意识到一些后果

ID:Computer-network

【推荐书籍】

发表评论

登录后才能评论