Ubuntu 16.04 手动安装 NextCloud 12

2017-7-21 13:54 Herald 3166 NextCloudUbuntuNextCloud 12Ubuntu 16.04

NextCloud 是 OwnCloud 的开源分支,使用 PHP 语言开发,类似程序通常采用 LAMP 或 LNMP 运行环境。本文介绍在 Ubuntu 16.04 LTS 系统上安装 NextCloud  11 最新版的标准方法。

过程概述

手动安装 NextCloud 实际就是搭建 Apache + MySQL + PHP 运行环境并配置使用的过程,由于 Ubuntu 16.04 的软件仓库中提供了搭建运行环境所需的一切,因此只需要几个命令即可完成安装和配置。

运行环境建议

  • WEB 服务器:Apache 2.x
  • 数据库:MariaDB
  • PHP:php 7.0

提示:本文使用 MariaDB 数据库,它是 MySQL 的开源分支,你也可以使用 MySQL,他们的命令和用法几乎完全一样。

服务器信息

为确保本指南的可用性,我在 Vultr 创建了一台云服务器,配置如下:

  • 位置:Silicon Valley – 硅谷
  • CPU:1 vCore
  • 内存:1024 MB
  • 硬盘:25 GB SSD
  • 系统:Ubuntu 16.04 x64
  • 主机名:ubuntu-1g-sv
  • IP 地址:45.63.45.63 (非真实地址,仅用于演示)

我同时创建了 herald 普通用户,它能够通过执行 sudo 命令获得 root 权限,相关内容请参考 《Ubuntu 16.04 服务器初始化设置指南》。

通过 SSH 连接到服务器

如果你还不知道如何登陆你的云服务器,请先阅读《如何使用 SSH 连接到你的云服务器》。

192:~ Herald$ ssh herald@45.63.45.63

配置 LAMP 环境

第一步 更新系统

更新软件列表

herald@ubuntu-1g-sv:~$ sudo apt update

执行软件更新

herald@ubuntu-1g-sv:~$ sudo apt -y upgrade

第二步 安装 Apache

herald@ubuntu-1g-sv:~$ sudo apt install apache2

第三步 安装 MariaDB

herald@ubuntu-1g-sv:~$ sudo apt install mariadb-server

第四步 安装 PHP 7.0

herald@ubuntu-1g-sv:~$ sudo apt install libapache2-mod-php7.0

第五步 安装 PHP 扩展

herald@ubuntu-1g-sv:~$ sudo apt install 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

准备 NextCloud 源代码

第一步 下载 NextCloud 12 源码包

访问 NextCloud 官方网站 https://nextcloud.com/changelog/ ,如下图,在这里能找到 NextCloud 的所有版本。

截止本文发稿,NextCloud 的最新版本为 12.0.0。提供 .tar.bz2.zip 两种压缩包,任选一种即可。

使用 wget 命令下载 .tar.bz2 格式的源码压缩包:

herald@ubuntu-1g-sv:~$ wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.tar.bz2

第二步 解压源码包

herald@ubuntu-1g-sv:~$ tar jxf nextcloud-12.0.0.tar.bz2

第三步 复制源代码到 web 服务器目录

将解压出来的 nextcloud 程序源代码目录复制到 /var/www/ 目录中:

herald@ubuntu-1g-sv:~$ sudo cp -r nextcloud /var/www/

第四步 设置 nextcloud 的目录权限

herald@ubuntu-1g-sv:~$ sudo chown -R www-data:www-data /var/www/nextcloud/

配置 apache 虚拟主机

第一步 绑定域名

在域名管理平台新增一条 A 记录,指向你所使用的服务器公网 IP 地址,本例中,我将 nc.onit.run 域名绑定到 45.63.45.63

第二步 创建 nextcloud.conf 虚拟主机配置文件

herald@ubuntu-1g-sv:~$ sudo nano /etc/apache2/sites-available/nextcloud.conf

将以下配置信息粘贴到配置文件中,注意,请将配置文件中的 nc.onit.run 替换成你自己的域名:

Alias /nextcloud "/var/www/nextcloud/"
<VirtualHost *:80>
  ServerName nc.onit.run
  DocumentRoot /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>
</VirtualHost>

第二步 让虚拟主机生效

herald@ubuntu-1g-sv:~$ sudo a2ensite nextcloud.conf

第三步 启用必须的 apache 模块

herald@ubuntu-1g-sv:~$ sudo a2enmod rewrite headers env dir mime ssl

第四步 重启 apache 服务器

herald@ubuntu-1g-sv:~$ sudo service apache2 restart

MariaDB 数据库设置

第一步 数据库安全初始化(可选,建议)

herald@ubuntu-1g-sv:~$ sudo mysql_secure_installation

通过交互式的命令,提示对数据库做安全初始化设置,过程略过不讲。

第二步 创建 nextcloud 所需的数据库和账户

请查阅《MySQL 数据库入门》了解 MySQL/MAriaDB 数据库操作基础知识。

打开数据库管理命令行:

herald@ubuntu-1g-sv:~$ sudo mysql -u root

创建 nextcloud 数据库:

MariaDB [(none)]> CREATE DATABASE ‘nextcloud’;

创建 nextcloud 用户,密码 password,请根据实际需要调整用户名和密码:

MariaDB [(none)]> CREATE USER ‘nextcloud’@’localhost’ IDENTIFIED BY ‘password’;

为 nextcloud 用户分配 nextcloud 数据库的管理权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO ‘nextcloud’@’localhost’;

刷新权限记录:

MariaDB [(none)]> FLUSH PRIVILEGES;

退出数据库命令行:

MariaDB [(none)]> EXIT;

安装 NextCloud

在浏览器中访问绑定的域名,即可看到下图所示的 NextCloud 安装向导。

按照页面的提示,填写表单。创建管理员用户名和密码比较简单,自行设置即可,重点是设置数据库信息,填写在 MariaDB 数据库配置环节创建的信息:

  • 数据库用户:nextcloud (填写实际设置的用户名)
  • 数据库密码:password (填写实际设置的密码)
  • 数据库名:nextcloud
  • localhost:数据库服务器地址,不用填。

安装完成,即可看到下图所示的用户界面。

启用 SSL 安全链接

此处我们使用 Let’s Encrypt 的免费 SSL 证书服务。

第一步 安装 certbot

添加 certbot PPA 软件源:

herald@ubuntu-1g-sv:~$ sudo add-apt-repository -y ppa:certbot/certbot

刷新软件列表:

herald@ubuntu-1g-sv:~$ sudo apt update

安装适用于 apache 的 certbot:

herald@ubuntu-1g-sv:~$ sudo apt install python-certbot-apache

第二步 获取 ssl 证书

运行 certbot 程序:

herald@ubuntu-1g-sv:~$ sudo certbot --apache

提示输入一个 email 用作接收通知和重置密钥:

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):test@torchtree.com

询问是否接受用户协议:

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

询问是否愿意把 email 地址共享给基金会:

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N

询问要为哪个域名获取 SSL 证书:

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: nc.onit.run
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):1

询问使用模式:

  1. Easy 简易模式:http 和 https 两种协议均可访问网盘
  2.  Secure 安全模式:所有请求都会转向 https 安全链接
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

刷新页面即可看到,超链接已经出现了绿色的安全标识,SSL 启用成功!

下一步

现在,你已经拥有了安全可靠的私有网盘,接下来,你可能想要《NextCloud 12 实现在线 Office 功能》。

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '2655' }}

回复 {{ reply_to }}