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

安装以及后续配置的详细方法见这两篇帖子:

然后就可以使用了,环境包好了,但是这个问题在于后期维护不便。虽然snap我目前没有用出问题来,但是尤文拖车无法维护也是巨大的问题所在,这就催生了下一个方式的出现——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方式的全手动的方法,也不错。


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

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

LAMP手动配置的可以参考以下两篇:

下面说具体方法。

服务器系统版本选择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 配置项说明(修改自某帖子)

参考链接

<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>

补充:全手动安装Nextcloud(使用apt-get安装二进制包)

参考链接


0x02 问题解决

1. 中文界面设置

安装完Nextcloud后,默认账户界面为英文,需要手动调整为中文。

解决方法

在Nextcloud目录的config/config.php文件中,添加以下代码:

"default_language" => "zh",

如需其他语言,请参考语言简写码

注意:上述目录需要root权限才能编辑。更改后,新添加的用户将默认使用设置的语言。

官方文档参考

2. 加密应用程序私钥问题

每个账户在登录时提示“无效的加密应用程序私钥。请在您的个人设置中更新您的私钥密码,以恢复对加密文件的访问。”

解决方法

关闭加密模块,目前没有彻底的解决方法,但关闭加密模块有效。

右上角头像图标 --> 应用 --> 已启用的应用 --> Default encryption module --> 关闭即可

详细文档参考

3. 默认配额设置

为避免用户占用过多空间,需要修改默认配额到较小值。

解决方法

右上角头像图标 --> 用户 --> 左下角设置 --> 默认配额 --> 设置为15 MB

这样就默认每个用户配额15 MB(默认自带的文件13 MB)。

4. 集中管理

为实现集中管理,可设置一个文件夹共享出去,其他人设置只上传权限,文件默认保存在各自文件夹内。

上一篇
下一篇