NextCloud服务部署

这个教训告诉我们,不要随便相信别人博客里的东西,文档还是官方的靠谱 ___

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


运行环境

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

配置 LAMP 环境

运行docker

docker run -i -t -v ~/nextcloud:/home -p 9001:22 -p 9002:8000 -p 9003:80 --name nextcloud ubuntu:16.04 /bin/sh

1.更新系统

root@Ubuntu:~$ apt-get update
root@Ubuntu:~$ apt-get upgrade

2.安装 Apache

root@Ubuntu:~$ apt-get install apache2

3.安装 MariaDB

root@Ubuntu:~$ apt-get install mariadb-server python-pymysql

4.安装 PHP 7.0

root@Ubuntu:~$ apt-get install libapache2-mod-php7.0

5.安装 PHP 扩展

root@Ubuntu:~$ apt-get 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 官方网站 https://nextcloud.com/changelog/ ;使用 wget 命令下载 .tar.bz2 格式的源码压缩包:

root@Ubuntu:~$ wget https://download.nextcloud.com/server/releases/nextcloud-12.0.0.tar.bz2

解压源码包

使用mac解压 也可以用 ubuntu tar解压

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

root@Ubuntu:~$ cp -r nextcloud /var/www/

设置 nextcloud 的目录权限

root@Ubuntu:~$ chown -R www-data:www-data /var/www/nextcloud/

配置 apache 虚拟主机

绑定域名

暂时没有处理/本地服务器

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

root@Ubuntu:~$ vim /etc/apache2/sites-available/nextcloud.conf

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Alias /nextcloud "/var/www/nextcloud/"
<VirtualHost *:80>
ServerName 127.0.0.1
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>

让虚拟主机生效、启用必须的 apache 模块、重启 apache 服务器

root@Ubuntu:~$ a2ensite nextcloud.conf
root@Ubuntu:~$ a2enmod rewrite headers env dir mime ssl
root@Ubuntu:~$ service apache2 restart

MariaDB 数据库设置

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

修改权限、数据库安全初始化

root@Ubuntu:~$ chown -R mysql:mysql /var/lib/mysql
root@Ubuntu:~$ service mysql restart
root@Ubuntu:~$ mysql_secure_installation

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

root@Ubuntu:~$ mysql -u root
MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> CREATE USER nextcloud@localhost IDENTIFIED BY ‘password’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO nextcloud@localhost;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

配置 NextCloud

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

启用 SSL 安全链接

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

安装 certbot

添加 certbot PPA 软件源:

root@Ubuntu:~$ add-apt-repository -y ppa:certbot/certbot

刷新软件列表:

root@Ubuntu:~$ apt update

安装适用于 apache 的 certbot:

root@Ubuntu:~$ apt install python-certbot-apache

获取 ssl 证书

运行 certbot 程序:

root@Ubuntu:~$ certbot --apache

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

Enter email address (used for urgent renewal and security notices)
(Enter 'c' tocancel):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

询问使用模式:

  • Easy 简易模式:http 和 https 两种协议均可访问网盘
  • 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 启用成功!