Skip to content

Latest commit

 

History

History
753 lines (475 loc) · 27.6 KB

File metadata and controls

753 lines (475 loc) · 27.6 KB

十三、容器、虚拟机和云

在本章中,我们将涵盖以下主题:

  • 使用 Linux 容器
  • 使用 Docker
  • 在 Linux 中使用虚拟机
  • 云中的 Linux

介绍

现代 Linux 应用可以部署在专用硬件、容器、虚拟机或云上。每种解决方案都有优点和缺点,它们都可以用脚本和图形用户界面来配置和维护。

如果您想要部署单个应用的多个副本,其中每个实例都需要自己的数据副本,那么容器是理想的选择。例如,容器可以很好地与数据库驱动的 web 服务器配合使用,在这种情况下,每台服务器都需要相同的 web 基础设施,但都有私有数据。

然而,容器的缺点是它依赖于主机系统的内核。您可以在一个 Linux 主机上运行多个 Linux 发行版,但不能在一个容器中运行 Windows。

如果您需要一个对所有实例都不相同的完整环境,使用虚拟机是最佳选择。借助虚拟机,您可以在单个主机上运行 Windows 和 Linux。当您不希望办公室里有一打盒子,但需要针对不同的发行版和操作系统进行测试时,这是验证测试的理想选择。

虚拟机的缺点是体积庞大。每个虚拟机实现一个完整的计算机操作系统、设备驱动程序、所有应用和实用程序等等。每个 Linux 虚拟机至少需要一个内核和 1 GB 内存。一个 Windows 虚拟机可能需要两个内核和 4 GB 内存。如果您希望同时运行多个虚拟机,您需要足够的内存来支持每个虚拟机;否则,主机将开始交换,性能将受到影响。

云就像指尖上有许多计算机和大量带宽。您可能实际上运行在云中的虚拟机或容器上,或者您可能有自己的专用系统。

云的最大优势是它可以扩展。如果您认为您的应用可能会像病毒一样传播,或者您的使用是循环的,那么无需购买或租赁新硬件新连接就能快速扩展和缩减的能力是必要的。例如,如果您的系统处理大学注册,它将过度工作大约两周,一年两次,并且在其余时间几乎处于休眠状态。这两个星期你可能需要十几套硬件,但你不想让它们闲置一年。

云的缺点是你看不到它。所有的维护和配置都必须远程完成。

使用 Linux 容器

Linux 容器 ( lxc )包提供了 Docker 和 LXD 容器部署系统使用的基本容器功能。

Linux 容器使用内核级支持控制组 ( )和第 12 章中描述的systemd工具来调整 Linux 系统。cgroups 支持提供工具来控制一组程序可用的资源。这将通知内核控件在容器中运行的进程可用的资源。容器对设备、网络连接、内存等的访问可能有限。这种控制防止容器相互干扰或潜在地损坏主机系统。

准备好

库存分配中不提供容器支持。您需要单独安装它。跨发行版的支持水平不一致。 lxc 容器系统是由 Canonical 开发的,所以 Ubuntu 发行版有完整的容器支持。在这方面,Debian 9 (Stretch)比 Debian 8 (Jessie)更好。

Fedora 对 lxc 容器的支持有限。创建特权容器和桥接以太网连接很容易,但是从 Fedora 25 开始,非特权容器所需的cgmanager服务不可用。

SuSE 支持有限使用 lxc。SuSE 的libvirt-lxc套餐与 lxc 相似但不完全相同。SuSE 的libvirt-lxc套餐不在本章讨论范围内。在 SuSE 下很容易创建没有以太网的特权容器,但是它不支持非特权容器和桥接以太网。

以下是如何在主要发行版上安装lxc支持。

对于 Ubuntu,使用以下代码:

    # apt-get install lxc1

接下来是 Debian。Debian 发行版可能只包括/etc/apt/sources.list中的安全存储库。如果是,您需要将deb http://ftp.us.debian.org/debian stretch main contrib添加到/etc/apt/sources.list,然后执行apt-get update before,加载lxc包:

    # apt-get install lxc

对于 OpenSuSE,请使用以下代码:

    # zypper install lxc
 RedHat, Fedora:

对于基于红帽/软呢帽的系统,添加以下Epel存储库:

    # yum install epel-release

完成此操作后,请在安装 lxc 支持之前安装以下软件包:

    # yum install perl libvirt debootstrap

libvirt包提供网络支持,debootstrap需要运行基于 Debian 的容器:

    # yum install lxc lxc-templates tunctl bridge-utils

怎么做...

lxc包给你的系统增加了几个命令。其中包括:

  • lxc-create:这是创建一个 lxc 容器
  • lxc-ls:这是可用容器的列表
  • lxc-start:这是启动一个容器
  • lxc-stop:这是停止一个容器
  • lxc-attach:这是连接一个容器的根壳
  • lxc-console:这是连接到容器中的登录会话

在基于红帽的系统上,您可能需要在测试时禁用 SELinux。在开放系统上,您可能需要禁用设备。通过yast2禁用设备后,您需要重新启动。

Linux 容器有两种基本类型:特权和非特权。特权容器由根创建,底层系统具有根特权。非特权容器由用户创建,并且只有用户权限。

特权容器更容易创建,并且得到更广泛的支持,因为它们不需要uidgid映射、设备权限等等。但是,如果用户或应用设法逃离容器,他们将在主机上拥有完全权限。

创建特权容器是确认系统上安装了所有必需包的好方法。创建特权容器后,为应用使用非特权容器。

创建特权容器

开始使用 Linux 容器最简单的方法是在特权容器中下载预构建的发行版。lxc-create命令创建一个基本容器结构,并可以用预定义的 Linux 发行版填充它。lxc-create命令的语法如下:

    lxc-create -n NAME -t TYPE

-n选项定义了该容器的名称。当容器启动、停止或重新配置时,该名称将用于标识该容器。

-t选项定义了用于创建该容器的模板。类型download将您的系统连接到预构建容器的存储库,并提示您下载容器。

这是试验其他发行版或创建需要不同于主机 Linux 发行版的发行版的应用的简单方法:

    $ sudo lxc-create -t download -n ContainerName

下载模板从互联网检索可用预定义容器的列表,并从网络存档中填充容器。create 命令提供可用容器的列表,然后提示输入分发发布和架构。只有当您的硬件支持此体系结构时,才能运行容器。如果您的系统具有英特尔 CPU,则不能运行 Arm 容器,但是您可以在具有 64 位英特尔 CPU 的系统上运行 32 位 i386 容器:

$ sudo lxc-create -t download -n ubuntuContainer
...
ubuntu  zesty   armhf   default 20170225_03:49
ubuntu  zesty   i386    default 20170225_03:49
ubuntu  zesty   powerpc default 20170225_03:49
ubuntu  zesty   ppc64el default 20170225_03:49
ubuntu  zesty   s390x   default 20170225_03:49
---

Distribution: ubuntu
Release: trusty
Architecture: i386 

Downloading the image index
Downloading the rootfs
Downloading the metadata
The image cache is now ready
Unpacking the rootfs

---
You just created an Ubuntu container (release=trusty, arch=i386, variant=default)
To enable sshd, run: apt-get install openssh-server
For security reason, container images ship without user accounts and without a root password.
Use lxc-attach or chroot directly into the rootfs to set a root password or create user accounts.

通过选择与当前安装相匹配的模板,您可以基于当前分发创建一个容器。模板在/usr/share/lxc/templates中定义:

    # ls /usr/share/lxc/templates
 lxc-busybox   lxc-debian   lxc-download ...

要为当前分发创建容器,请选择适当的模板并运行lxc-create命令。下载过程和安装需要几分钟时间。以下示例跳过了大多数安装和配置消息:

$ cat /etc/issue
Debian GNU/Linux 8
$ sudo lxc-create -t debian -n debianContainer
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/debian/rootfs-jessie-i386 ... 
Downloading debian minimal ...
I: Retrieving Release 
I: Retrieving Release.gpg 
I: Checking Release signature
I: Valid Release signature (key id 75DDC3C4A499F1A18CB5F3C8CBF8D6FD518E17E1)
...
I: Retrieving Packages 
I: Validating Packages 
I: Checking component main on http://http.debian.net/debian...
I: Retrieving acl 2.2.52-2
I: Validating acl 2.2.52-2
I: Retrieving libacl1 2.2.52-2
I: Validating libacl1 2.2.52-2

I: Configuring libc-bin...
I: Configuring systemd...
I: Base system installed successfully.
Current default time zone: 'America/New_York'
Local time is now:      Sun Feb 26 11:38:38 EST 2017.
Universal Time is now:  Sun Feb 26 16:38:38 UTC 2017.

Root password is 'W+IkcKkk', please change !

前面的命令从包管理器中定义的存储库中填充新的容器。在使用容器之前,您必须启动它。

启动容器

lxc-start命令启动容器。与其他 lxc 命令一样,您必须提供要启动的容器的名称:

    # lxc-start -n ubuntuContainer

启动序列可能会挂起,您可能会看到类似以下的错误。这些问题是由容器的引导序列试图执行图形操作引起的,例如在客户端显示没有图形支持的闪屏:

    <4>init: plymouth-upstart-bridge main process (5) terminated with   
    status 1
 ...

您可以等待这些错误超时并忽略它们,也可以禁用闪屏。禁用闪屏因发行版和版本而异。文件可能在/etc/init中,但这不能保证。

在容器中有两种工作方式:

  • lxc-attach:这直接连接到运行容器上的根帐户
  • lxc-console:这将为正在运行的容器上的登录会话打开一个控制台

容器的第一个用途是直接附加以创建用户帐户:

# lxc-attach -n containerName
root@containerName:/#
root@containerName:/# useradd -d /home/USERNAME -m  USERNAME
root@containerName:/# passwd USERNAME
Enter new UNIX password:
Retype new UNIX password:

创建用户帐户后,以非特权用户或 root 用户身份登录lxc-console应用:

$ lxc-console -n containerName
Connected to tty 1
Type <Ctrl+a q> to exit the console, 
<Ctrl+a Ctrl+a> to enter Ctrl+a itself
Login:

停止集装箱

lxc-stop命令停止容器:

    # lxc-stop -n containerName

列出已知的容器

lxc-ls命令列出了当前用户可用的容器名称。这不会列出系统中的所有容器,只会列出当前用户拥有的容器:

    $ lxc-ls
 container1Name container2Name...

显示容器信息

lxc-info命令显示关于容器的信息:

$ lxc-info -n containerName
Name:   testContainer
State:   STOPPED

不过,该命令将只显示单个容器的信息。使用 Shell 循环,如第 1 章Shell 化所述,我们可以显示所有容器的信息:

$ for c in `lxc-ls` 
do
lxc-info -n $c
echo
done
Name:  name1
State:  STOPPED

Name:  name2
State:  RUNNING
PID:  1234
IP  10.0.3.225
CPU use:  4.48 seconds
BlkIO use:  728.00 KiB
Memory use:  15.07 MiB
KMem use:  2.40 MiB
Link:  vethMU5I00
 TX bytes:  20.48 KiB
 RX bytes:  30.01 KiB
 Total bytes:  50.49 KiB

如果容器停止,则没有可用的状态信息。运行中的容器记录它们的中央处理器、内存、磁盘(块)、输入/输出和网络使用情况。这个工具可以让你监控你的容器,看看哪些是最活跃的。

创建非特权容器

建议正常使用非特权容器。配置不良的容器或配置不良的应用有可能允许控制从容器中逸出。由于容器在主机内核中调用系统调用,如果容器作为根运行,系统调用也将作为根运行。但是,非特权容器以普通用户权限运行,因此更安全。

要创建非特权容器,主机必须支持 Linux 控制组和 uid 映射。这种支持包含在基本的 Ubuntu 发行版中,但是需要添加到其他发行版中。并非所有发行版都提供cgmanager套装。没有此包,您无法启动非特权容器:

    # apt-get install cgmanager uidmap systemd-services

开始cgmanager:

    $ sudo service cgmanager start

Debian 系统可能需要启用克隆支持。如果您在创建容器时收到一个chown错误,这些行将修复它:

    # echo 1 > /sys/fs/cgroup/cpuset/cgroup.clone_children
 # echo 1 > /proc/sys/kernel/unprivileged_userns_clone 

允许创建容器的帐户的用户名必须包含在etc映射表中:

    $ sudo usermod --add-subuids 100000-165536 $USER
 $ sudo usermod --add-subgids 100000-165536 $USER
 $ sudo chmod +x $HOME

这些命令将用户添加到用户标识和组标识映射表(/etc/subuid/etc/subgid中,并将来自100000 -> 165536的用户标识分配给用户。

接下来,为容器设置配置文件:

    $ mkdir ~/.config/lxc
 $ cp /etc/lxc/default.conf ~/.config/lxc

~/.config/lxc/default.conf增加以下几行:

    lxc.id_map = u 0 100000 65536
 lxc.id_map = g 0 100000 65536

如果容器支持网络访问,则在/etc/lxc/lxc-usernet处添加一行,定义将访问网桥的用户:

    USERNAME veth BRIDGENAME COUNT

这里,USERNAME是拥有容器的用户的名字。veth是虚拟以太网设备的常用名称。BRIDGENAMEifconfig显示的名称。通常不是br0就是lxcbroCOUNT是允许的同时连接数:

    $ cat /etc/lxc/lxc-usernet
 clif veth lxcbr0 10

创建以太网桥

容器无法直接访问您的以太网适配器。它需要虚拟以太网和实际以太网之间的桥梁。最近的 Ubuntu 发行版在您安装 lxc 包时会自动创建一个以太网桥。Debian 和 Fedora 可能要求您手动创建桥。要在 Fedora 上创建桥,首先使用libvirt包创建虚拟桥:

    # systemctl start libvirtd

然后,编辑/etc/lxc/default.conf引用virbr0而不是lxcbr0:

    lxc.network_link = virbr0

如果您已经创建了一个容器,也可以编辑该容器的配置文件。

要在 Debian 系统上创建桥,必须编辑网络配置和容器配置文件。

编辑/etc/lxc/default.conf。注释掉默认的空网络,并为 lxc 桥添加一个定义:

    # lxc.network.type = empty
 lxc.network.type = veth
 lxc.network.link = lxcbr0
 lxc.network.flage = up`

接下来,创建网络桥:

    # systemctl enable lxc-net
 # systemctl start lxc-net

执行这些步骤后创建的容器将启用网络。通过将lxc.network行添加到容器的配置文件中,可以将网络支持添加到现有的容器中。

它是如何工作的...

lxc-create命令创建的容器是一个目录树,其中包括容器的配置选项和根文件系统。特许集装箱在/var/lib/lxc下建造。非特权集装箱存放在$HOME/.local/lxc下:

    $ ls /var/lib/lxc/CONTAINERNAME
 config rootfs

您可以通过编辑容器顶部目录中的配置文件来检查或修改容器的配置:

    # vim /var/lib/lxc/CONTAINERNAME/config

rootfs文件夹包含容器的根文件系统。这是正在运行的容器的根(/)文件夹:

    # ls /var/lib/lxc/CONTAINERNAME/rootfs
 bin   boot cdrom dev  etc   home  lib   media mnt   proc
 root  run  sbin  sys  tmp   usr   var

您可以通过添加、删除或修改rootfs文件夹中的文件来填充容器。例如,为了运行 web 服务,容器可能通过包管理器安装了基本的 web 服务,并且通过将文件复制到rootfs来安装每个服务的实际数据。

使用 Docker

lxc容器很复杂,很难操作。这些问题导致了 Docker 包。Docker 使用namespacescgroups相同的底层 Linux 功能来创建轻量级容器。

Docker 仅在 64 位系统上得到官方支持,这使得lxc成为遗留系统的更好选择。

Docker 容器和 lxc 容器之间的主要区别在于 Docker 容器通常运行一个进程,而 lxc 容器运行多个进程。要部署数据库支持的 web 服务器,您至少需要两个 Docker 容器—一个用于 web 服务器,一个用于数据库服务器—但只有一个 lxc 容器。

Docker 的理念使得从更小的构建块构建系统变得容易,但它会使开发块变得更难,因为如此多的 Linux 实用程序预计将在一个完整的 Linux 系统中运行,该系统带有crontab条目,以执行清理、日志循环等操作。

一旦创建了 Docker 容器,它将在其他 Docker 服务器上完全按照预期运行。这使得在云集群或远程站点上部署 Docker 容器变得非常容易。

准备好

大多数发行版都没有安装 Docker。它通过 Docker 的存储库分发。使用这些需要用新的校验和向包管理器添加新的存储库。

Docker 的主页上有每个发行版和不同发行版的说明,可在http://docs.docker.com获得。

怎么做...

当 Docker 首次安装时,它没有运行。您必须使用如下命令启动服务器:

    # service docker start

Docker 命令有许多提供功能的子命令。这些命令将找到一个 Docker 容器,并下载和运行它。这是关于子命令的一点:

  • # docker search:这将在 Docker 档案中搜索名称与关键字匹配的容器
  • # docker pull:这将命名容器拉到您的系统中
  • # docker run:这将在容器中运行应用
  • # docker ps:这里列出了正在运行的 Docker 容器
  • # docker attach:这个附着在一个运行的容器上
  • # docker stop:这将停止一个容器
  • # docker rm:这将移除一个容器

默认的 Docker 安装要求docker命令作为root或使用sudo运行。

每个命令都有一个man页面。该页面是通过将命令和子命令与破折号组合起来命名的。要查看docker search手册页,请使用man docker-search

下一个食谱演示了如何下载一个 Docker 容器并运行它。

寻找容器

docker search命令返回与搜索词匹配的 Docker 容器列表:

    docker search TERM

这里的术语是一个字母数字字符串(没有通配符)。搜索命令将返回多达 25 个名称中包含字符串的容器:

# docker search apache
NAME            DESCRIPTION                STARS OFFICIAL   AUTOMATED
eboraas/apache  Apache (with SSL support)  70                   [OK]
bitnami/apache  Bitnami Apache Docker      25                   [OK]
apache/nutch    Apache Nutch               12                   [OK]
apache/marmotta Apache Marmotta             4                   [OK]
lephare/apache  Apache container            3                   [OK]

这里,星号代表容器的等级。首先订购等级最高的集装箱。

下载容器

docker pull命令从 Docker 注册表中下载一个容器。默认情况下,它从位于registry-1.docker.io的 Docker 公共注册中心提取数据。下载的容器将添加到您的系统中。容器通常储存在/ var/lib/docker下:

# docker pull lephare/apache
latest: Pulling from lephare/apache
425e28bb756f: Pull complete 
ce4a2c3907b1: Extracting [======================> ] 2.522 MB/2.522 MB
40e152766c6c: Downloading [==================>    ] 2.333 MB/5.416 MB
db2f8d577dce: Download complete 
Digest: sha256:e11a0f7e53b34584f6a714cc4dfa383cbd6aef1f542bacf69f5fccefa0108ff8
Status: Image is up to date for lephare/apache:latest

启动 Docker 容器

docker run命令启动容器中的进程。通常,流程是一个bashShell,允许您连接到容器并启动其他流程。此命令返回定义此会话的哈希值。

当 Docker 容器启动时,会自动为其创建网络连接。

运行命令的语法如下:

    docker run [OPTIONS] CONTAINER COMMAND

docker run命令支持多种选项,包括:

  • -t:分配一个伪 tty(默认为 false)
  • -i:在未连接时保持交互会话打开
  • -d:启动容器分离(后台运行)
  • --name:要分配给此实例的名称

此示例在先前被拉取的容器中启动 bash shell:

 # docker run -t -i -d --name leph1 lephare/apache  /bin/bash
 1d862d7552bcaadf5311c96d439378617d85593843131ad499...

列出 Docker 会话

docker p的命令列出了当前正在运行的 Docker 会话:

# docker ps
CONTAINER ID  IMAGE           COMMAND   CREATED  STATUS  PORTS  NAMES
123456abc     lephare/apache  /bin/bash 10:05    up      80/tcp leph1

-a选项将列出您系统上的所有 Docker 容器,无论它们是否正在运行。

将您的显示器连接到正在运行的 Docker 容器

docker attach命令将您的显示附加到正在运行的容器中的tty会话。您需要在这个容器中作为根运行。

要退出附加会话,请键入^P^Q

本示例创建一个 HTML 页面,并在容器中启动 Apache 网络服务器:

$ docker attach leph1
root@131aaaeeac79:/# cd /var/www
root@131aaaeeac79:/var/www# mkdir symfony
root@131aaaeeac79:/var/www# mkdir symfony/web
root@131aaaeeac79:/var/www# cd  symfony/web
root@131aaaeeac79:/var/www/symfony/web# echo "<html><body><h1>It's Alive</h1></body></html>"   
    >index.html
root@131aaaeeac79:/# cd /etc/init.d
root@131aaaeeac79:/etc/init.d# ./apache2 start
[....] Starting web server: apache2/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation 
    not permitted)
Setting ulimit failed. See README.Debian for more information.
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 
    172.17.0.5\. Set the 'ServerName' directive globally to suppress this message
. ok 

浏览至172.17.0.5将显示It's Alive页面。

停止 Docker 会话

docker stop命令终止正在运行的 Docker 会话:

    # docker stop leph1

删除 Docker 实例

docker rm命令移除一个容器。移除容器之前,必须将其停止。容器可以通过名称或标识符移除:

    # docker rm leph1

或者,您可以使用以下方法:

    # docker rm 131aaaeeac79

它是如何工作的

Docker 容器使用与lxc容器相同的namespacecgroup内核支持。最初,Docker 是lxc之上的一层,但后来它演变成了一个独特的系统。

服务器的主要配置文件存储在/ var/lib/docker/etc/docker处。

在 Linux 中使用虚拟机

在 Linux 中使用虚拟机有四种选择。三个开源选项是 KVM、XEN 和 VirtualBox。在商业上,VMware 提供了一个可以在 Linux 中托管的虚拟引擎和一个可以运行虚拟机的管理人员。

VMware 支持虚拟机的时间比任何人都长。它们支持作为主机的 Unix、Linux、Mac OS X 和 Windows,以及作为来宾系统的 Unix、Linux 和 Windows。对于商业用途,VMware Player 或 VMWare Workstation 是您的两个最佳选择。

KVM 和 VirtualBox 是 Linux 最流行的两个虚拟机引擎。KVM 提供了更好的性能,但它需要支持虚拟化的 CPU(英特尔 VT-x)。大多数现代英特尔和 AMD 处理器都支持这些功能。VirtualBox 的优势是可以移植到 Windows 和 Mac OS X,让你可以轻松地将一个虚拟机移动到另一个平台。VirtualBox 不需要 VT-x 支持,因此它既适用于传统系统,也适用于现代系统。

准备好

大多数发行版都支持 VirtualBox,但它可能不属于这些发行版的默认包存储库。

要在 Debian 9 上安装 VirtualBox,您需要将 virtualbox.org 存储库添加到 apt-get 将从以下站点接受包的站点:

# vi /etc/apt/sources.list
## ADD:
deb http://download.virtualbox.org/virtualbox/debian stretch contrib

安装正确的钥匙需要curl包。如果尚不存在,请在添加密钥和更新存储库信息之前安装它:

# apt-get install curl
# curl -O https://www.virtualbox.org/download/oracle_vbox_2016.asc
# apt-key add oracle_vbox_2016.asc
# apt-get update

存储库更新后,您可以使用apt-get安装 VirtualBox:

# apt-get install virtualbox-5.1

OpenSuSE 
# zypper install gcc make kernel-devel
Open yast2, select Software Management, search for virtualbox.
Select virtualbox, virtualbox-host-kmp-default, and virtualbox-qt.

怎么做...

安装 VirtualBox 后,它会在开始菜单中创建一个项目。它可能位于系统或应用/系统工具下。图形用户界面可以从终端会话作为virtualbox或作为VirtualBox启动。

VirtualBox 图形用户界面使创建和运行虚拟机变得容易。图形用户界面左上角有一个名为“新建”的按钮;这用于创建一个新的空虚拟机。向导会提示您输入新虚拟机的内存和磁盘限制等信息。

创建虚拟机后,启动按钮将被激活。默认设置将虚拟机的光盘连接到主机的光盘。您可以将安装盘放入光盘中,然后单击“开始”在新的虚拟机上安装操作系统。

云中的 Linux

使用云服务器有两个主要原因。服务提供商使用商业云服务,如亚马逊的 AWS,因为它允许他们在需求较高时轻松增加资源,在需求较低时降低成本。云存储提供商,如谷歌文档,允许用户从任何设备访问他们的数据,并与其他人共享数据。

OwnCloud 包将您的 Linux 服务器转换为私有云存储系统。您可以将 OwnCloud 服务器用作私人公司文件共享系统,与朋友共享文件,或者用作手机或平板电脑的远程备份。

OwnCloud 项目于 2016 年分叉。预计 NextCloud 服务器和应用将使用与 OwnCloud 相同的协议,并且可以互换。

准备好了

运行 OwnCloud 包需要 LAMP ( Linux、Apache、MySQL、PHP )安装。所有 Linux 发行版都支持这些软件包,尽管默认情况下可能不会安装。管理和安装 MySQL 在第 10 章管理调用中讨论。

大多数发行版在其存储库中不包括 OwnCloud 服务器。相反,OwnCloud 项目维护存储库来支持发行版。在下载之前,您需要将自己的云附加到您的 RPM 或 apt 存储库中。

Ubuntu 16.10

以下步骤将在 Ubuntu 16.10 系统上安装 LAMP 堆栈。类似的命令适用于任何基于 Debian 的系统。不幸的是,不同版本的软件包名称有时会有所不同:

 apt-get install apache2
 apt-get install mysql-server php-mysql

OwnCloud 需要超出默认设置的安全性。mysql_secure_installation脚本将正确配置 MySQL:

    /usr/bin/mysql_secure_installation

配置OwnCloud存储库:

curl \ https://download.owncloud.org/download/repositories/stable/ \ Ubuntu_16.10/Release.key/'| sudo tee \ /etc/apt/sources.list.d/owncloud.list

apt-get update

一旦存储库就位,apt 将安装并启动服务器:

    apt-get install owncloud

风滚草

Yast2 安装堆。打开yast2,选择软件管理,安装apache2mysqlowncloud-client

接下来,选择System选项卡,并从该选项卡中选择Services Manager选项卡。确认mysqlapache2服务已启用并处于活动状态。

这些步骤会安装 OwnCloud 客户端,让您将工作区与 OwnCloud 服务器和服务器的系统要求同步。

OwnCloud 需要超出默认设置的安全性。mysql_secure_installation脚本将正确配置 MySQL:

    /usr/bin/mysql_secure_installation

以下命令将安装并启动 OwnCloud 服务器。前三个命令将zypper配置为包含 OwnCloud 存储库。一旦添加了这些存储库,Owncloud 包就会像任何其他包一样安装:

rpm --import https://download.owncloud.org/download/repositories/stable/openSUSE_Leap_42.2/repodata/repomd.xml.key

zypper addrepo http://download.owncloud.org/download/repositories/stable/openSUSE_Leap_42.2/ce:stable.repo

zypper refresh

zypper install owncloud 

怎么做...

一旦安装了 OwnCloud,您就可以配置一个管理帐户,并从那里添加用户帐户。下一代云安卓应用将与自己的云服务器以及下一代云服务器进行通信。