UBUNTU 18.04 LTS LAMP 安装 NEXTCLOUD

0x00 背景介绍

最近需要一套存储的东西但是,需要对账户之间有各种的限制与要求,简单方便的做权限管理的东西,思来想去,开始打算用 ftp 来制作。觉得配置权限可能不方便用,所以最终选择了 nextcloud,他的前身是 owncloud 以前用过后面商业化了。这里就着重介绍一下,最简单的布置的方法。

如果你自己不确认要不要用可以去 nextcloud 的官网去尝试使用它的 demo,有两种一种是免费的一小时还一个需要邮件注册收费与否不清楚,正常来说一小时的试用已经足够了 地址:https://demo.nextcloud.com/.

系统环境:ubuntu 18.04 lts 64bit

关于安装调试的详细问题nextcloud 官网上面已经写的无比详细了。

0x01 安装

方案 A snap 方式

关于 snap 我写过在 centos7 上面来安装 snap,snap 默认不在 centos 的发行版本,实际效果是 snap安装后会有问题启动不正常,后来换了 ubuntu 18.04 lts,使用 snap 安装最简单一条命令就可以了,具体操作如下:

sudo snap install nextcloud

安装以及后续配置的详细方法见这两篇帖子
- https://www.howtoing.com/how-to-install-and-configure-nextcloud-on-ubuntu-18-04
- https://wzfou.com/nextcloud/

然后就可以使用了,环境包好了但是这个问题在于后期维护不便,虽然snap我目前没有用出问题来,但是尤文拖车无法维护也是yield巨大的问题所在,这就催生了下一个方式的出现,docker 方式

方案 B docker 方式

关于docker,可以简单理解为一个极其轻量级的虚拟机(概念及原理上都不是这样,docker 是直接可以调用内核操作的,不需要虚拟机中的操作系统层,这样写的目的在于能有个简单的认识关于docker以后会专项的记录一下 ),可以对 docker 出来的整套系统进行操作。

下面简单说一下可以进行的操作。分两大部分 1. 官方的 nextcloud 的 docker 镜像 2. 分别的 mysql 、apache 、php 都用 docker 镜像在进行接口方面的调试与组合。下面着重介绍第一种,第二种的方式方案 3 里面会重点介绍。

具体的操作如下:

docker pull nextcloud

具体的操作的方法https://hub.docker.com/_/nextcloud


启动方法

$ docker run -d -p 8080:80 nextcloud

访问 http://localhost:8080 即可访问。

方案 C 服务器 LAMP 、LNMP 独立安装

插播一条 NGINX方式的全手动的方法,也不错。
- https://www.howtoing.com/ubuntu-nginx-nextcloud


虽然容器是未来,可以去批量的复制使用,也非常的方便。但是考虑到这次要做的事,并不是那种能够批量复制使用的环境。也没有足够的时间再次回顾docker,为了方便后期的维修尽可能的减少中间层的影响在这里使用了一个非常常规的方式来进行。

  • 服务器 ubuntu 18.04 lts
  • 服务器硬盘 LVM 处理
  • 没有组 raid 找同配置的机器进行备份
  • LAMP 使用的一键LAMP的安装脚本,实在不想再配置了,麻烦。

LAMP手动配置的可以参考以下两篇
- https://websiteforstudents.com/setup-nextcloud-on-ubuntu-18-04-lts-beta-with-apache2-mariadb-and-php-7-1-support/
- https://www.techrepublic.com/article/how-to-install-nextcloud-13-on-ubuntu-18-04/

下面说具体方法。

服务器系统版本选择 Ubuntu 18.04 lts 64 bit,安装的时候硬盘处理那里选 lvm 的方案加密与否自己定,加密的的话会更复杂一些,因为有密码。不加密也可以,我用的不加密的方式。LVM 可以让机器在以后几乎是任意的进行扩容,不用更改目录结构,非常的好用。具体方法看我前几天的帖子,里面有。

下载一键LAMP脚本这个脚本我了好多年了非常好用,安全可靠。

去他官网下载最新的稳定版全量包https://lnmp.org/

解压以后

cd lnmp1.5-full/
ls
sudo ./install.sh  lamp

然后开始选版本,以下是我选择的版本 安装的示例: https://www.lnmp.org/install.html
- mariadb 10.2.14
- enable innoDB storage engine
- php 7.2.6
- php 内存分配器 无
- 管理员邮箱 还是留一个吧,实际上也没用
- apache 2.4.33
- 证书创建(创建不创建意义不大,本身就是内网不需要加密,外网还是有证书的好点)

剩下就是等了,编译安装时间会比较长。脚本安装的软件的未知官网有详解https://lnmp.org/faq/lnmp-software-list.html

然后就是 http://localhost 来看一下 php 的探针之类的,还可以就事把,mysql(mariadb)里面创建出来给 nextcloud 用的数据库以及用户密码。

我是手动创建的没用上面的方式,方法如下:

登录数据库

mysql -uroot -p密码

创建名称为 nextcloud 的数据库(分号必须写)

CREATE DATABASE nextcloud;

给数据库创建一个叫nextclouduser的用户,给他建一个新的密码

CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY '新的密码';

给nextclouduser的用户赋予权限

GRANT ALL ON nextcloud.* TO 'nextclouduser'@'localhost' IDENTIFIED BY '刚设置的密码' WITH GRANT OPTION;

保存退出

FLUSH PRIVILEGES;
EXIT

到默认的 apache 的目录 /home/wwwroot/default 中将 nextcloud 的压缩包中的内容拷贝进去,然后重新赋予权限

sudo chown -R www-data:www-data /home/wwwroot/default
sudo chown -R 755 /home/wwwroot/default

然后登录 http://localhosthttp://127.0.0.1 登录按照提示输入自定义的管理员用户名,密码,数据库信息即可,中间要多等一小会。大概2-5分钟配置完成。


################以上内容已经结束下面的不用看,只是做参考 #########################


下面说一下如果是 apache 安装的需要配置的项(修改自上面的帖子)
- https://websiteforstudents.com/setup-nextcloud-on-ubuntu-18-04-lts-beta-with-apache2-mariadb-and-php-7-1-support/

<VirtualHost *:80>
     ServerAdmin admin@example.com
     DocumentRoot /home/wwwroot/default/
     ServerName localhost

     Alias /nextcloud "/home/wwwroot/default/"

     <Directory /home/wwwroot/default/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
          <IfModule mod_dav.c>
            Dav off
          </IfModule>
        SetEnv HOME /home/wwwroot/default/
        SetEnv HTTP_HOME /home/wwwroot/default/
     </Directory>

     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

补充一个全手动的不错的一篇文全部使用apt-get 安装二进制包

https://ywnz.com/linuxyffq/2444.html


0x02 问题解决

安装完并不会一帆风顺的以下几个点是我遇到的问题的解决方法
1. admin添加出来的账户都是英文界面不是中文的界面,每个都需要手动去调整。
解决方法:

在nextcloud目录的config/config.php去修改,写在最上面的一行
添加一句   "default_language" => "zh",

如果是别的语言去这上面看对应的简写码
https://www.transifex.com/explore/languages/
上面的目录需要root权限才能进入编辑.更改后新添加的用户就设置的语言了。
以上的资料参考在,这是官方的文档https://docs.nextcloud.com/server/11/admin_manual/configuration_server/language_configuration.html

  1. 每个账户都在登录的时候提示 无效的加密应用程序私钥。请在您的个人设置中更新您的私钥密码,以恢复对加密文件的访问。Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files
    解决方法:
把加密模块关闭,目前还没有特别的彻底的方法解决,这个方式有效。
右上角头像图标--应用--已启用的应用--Default encryption module 关闭即可

目前这个方法比较有效,关于加密的部分是开启以后管理员不能通过原始的 data 目录来获取原始文件。
关于加密这是写的比较详细的一篇文档https://www.orgleaf.com/3077.html

  1. 关于默认的配额
    由于不想每个人都有特别大的空
    间造成浪费,这里需要修改默认的配额到非常小。
    解决方法:
右上角头像图标--用户--左下角设置--默认配额,在里面写 15 MB

这样就默认的到每个用
户默认配额 15 MB。已经属于最小了(默认自带的文件13 MB)

  1. 关于集中管理
    不想每个人自己上传东西不受控制,为能够看到文件的日志,可以设置一个文件夹以后共享出去,其他人设置只上传权限,这样能做的想要效果。文件默认都在自己的文件夹里面。
上一篇
下一篇