1、安装环境

1.1、安装Apache2

输入以下命令安装Apache2

sudo apt install apache2 -y

1.2、安装PHP7.4

输入以下命令安装PHP7.4

sudo apt install php7.4 -y

1.3、安装MySQL8.0

输入以下命令安装

sudo apt install mysql-server -y

1.4、安装各种配套模块

sudo apt install libapache2-mod-php7.4 php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl -y
sudo apt install php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip -y

2、nextcloud的部署

2.1、下载nextcloud安装包
2.2、将下载下来的压缩包传到服务器
2.3、安装并配置nextcloud

//安装zip软件
sudo apt install zip
//解压安装包
unzip nextcloud-21.0.2.zip
// 移动到服务器目录下
 sudo mv nextcloud /var/www
 // 修改权限
 sudo chown -R www-data:www-data /var/www/nextcloud
//加载 vhost_alias模块
sudo a2enmod vhost_alias
//复制配置文件
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/nextcloud.conf
//修改配置
<VirtualHost *:80>
    ServerName www.hibai.com #配置站点的域名
    ServerAdmin mrdong916@163.com #邮箱
    DocumentRoot /var/www/html/www #站点文件存放路径
    ErrorLog ${APACHE_LOG_DIR}/error.log #log日志
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/nextcloud/>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
        <IfModule mod_dav.c>
         Dav off
        </IfModule>
        </Directory>
</VirtualHost>
//启用配置
sudo ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf
 // 重启apache
sudo service apache2 restart
 

输入服务器ip就可以打开以下界面
在这里插入图片描述
这时候,还没有完成安装,还需要给它创建数据库,我们使用phpMyAdmin来管理数据库

2.4、安装并配置phpMyAdmin
1、首先要获取PHPmyadmin的资源包
2、将下载好的压缩包传到服务器

// 解压
unzip phpMyAdmin-*-all-languages.zip
// 重命名
mv phpMyAdmin-*-languages phpMyAdmin
// 移动到服务器目录下
sudo mv phpMyAdmin /var/www
// 修改权限
sudo chown -R www-data:www-data /var/www/phpMyAdmin
// 设置虚拟主机配置文件参考上面

// 重启apache
sudo service apache2 restart

2.1、nextcloud安装

使用下列命令查看数据库默认账号和密码

sudo nano /etc/mysql/debian.cnf

在这里插入图片描述
将在上面看到的账号和密码输入下面
在这里插入图片描述
创建一个名为nextcloud的账号和数据库并赋予此数据库的所有权限,再创建一个名为admin的管理员账号赋予所有权限
在这里插入图片描述

创建账号nextcloud域数据库,由于我已经创建过了所以有这个警告
在这里插入图片描述
然后按执行
在这里插入图片描述
然后创建admin账号
出来权限不一样其他基本一样
创建的时候在此处打钩
在这里插入图片描述
输入数据进行安装
在这里插入图片描述

2.2、nextcloud的优化

打开概览,查看报错情况
在这里插入图片描述
以上报错一条一条解决

2.2.1、PHP 内存限制低于建议值 512MB,这是由于php的默认memory_limit值为128M所导致的。

修改/etc/php/7.4/apache2/php.ini文件(ubuntu 20.04),其中7.2目录的命令是与当前php版本相符的,例如,php7.4,此目录名应为7.4。

找到memory_limit = 128M,将128M修改是512M,数值按内存情况及需要而定,保存退出。

sudo nano /etc/php/7.4/apache2/php.ini

Ctrl+w找到memory_limit = 128M,将128改为512
在这里插入图片描述

2.2.2、设置https这个自行百度:可以参考

2.2.3、您的安装没有设置默认的电话区域

编辑 Nextcloud config 目录中的 config.php 文件,在文件最下方, ); 前添加如下代码。

'default_phone_region' => 'CN',

在这里插入图片描述

2.2.4、此实例中的 php-imagick 模块不支持 SVG。为了获得更好的兼容性,建议安装它

连接Ubuntu Server终端,输入“sudo apt install libmagickcore-”,然后双击tab键,会显示以“libmagickcore-”开头的组件列表。
在这里插入图片描述
然后继续敲入完整的安装命令,安装“libmagickcore-6.q16-6-extra”组件。

sudo apt install libmagickcore-6.q16-6-extra

安装完毕重启apache2,如果有安装php-fpm,需一并重启,笔者是php7.4-fpm,如下:

service apache2 restart
service php7.4-fpm restart

再次刷新管理后台【概览】页,问题解决。

2.2.5、在这里插入图片描述

这是由于Apache2未开启rewrite功能,或者虚拟机目录配置文件中未添加“AllowOverride All”参数,使得Nextcloud无法使用网站根目录下.htaccess文件参数所致。
输入如下命令开启rewrite功能,并重启Apache2服务。

sudo a2enmod rewrite
sudo systemctl restart apache2

打开/etc/apache2/sites-available下对应的虚拟目录配置文件,本例为000-default.conf,查看是否存在 “AllowOverride All” 参数,如下图所示。
开启了https之后,https虚拟主机也需要设置
在这里插入图片描述
如果是安装上面教程所写的虚拟主机配置就不需要做以上更改,只需要开启 a2enmod rewrite
退出保存,重启Apache2,刷新概览

2.2.6、内存缓存未配置,为了提升使用体验,请尽量配置内存缓存

使用Apcu和Redis解决
先安装apcu

sudo apt install php7.4-apcu

然后在/var/www/nextcloud/config/config.php添加

'memcache.local' => '\OC\Memcache\APCu',

在这里插入图片描述
安装redis

sudo apt install php-redis
sudo apt install redis-server

然后在/var/www/nextcloud/config/config.php添加

'memcache.locking' => '\OC\Memcache\Redis',
'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
     'host' => 'localhost',
     'port' => 6379,
],

在这里插入图片描述

退出保存,重启Apache2,刷新概览
在这里插入图片描述
可以看到报错基本消失

2.2.7、大无语事件,启用https之后又出现一推报错

慢慢解决吧

在这里插入图片描述

2.2.7.1、PHP configuration option output_buffering must be disabled

其实这个很好解决,PHP默认是有4096字节缓冲的。但是Nextcloud希望你关闭。如果你是自己安装的PHP,在你安装PHP的路径下,打开PHP配置文件(php.ini),将要

sudo nano /etc/php/7.4/apache2/php.ini
//ctrl+w找到
output_buffering = 4096
//在前面加;;为PHP的注释符号,如
; output_buffering = 4096

重启一下Apache和PHP

2.2.7.2、HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒。

这个很简单,在nextcloud的虚拟主机的ssl配置文件最后添加以下代码

<IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
    </IfModule>

如下图
在这里插入图片描述
再修改nextcloud的虚拟主机的l配置文件,添加以下代码

Redirect permanent / https://cloud.nextcloud.com/
//https://你的域名/

在这里插入图片描述
Apache启用headers

sudo a2enmod headers

输入

sudo service apache2 restart

重启Apache

2.7.3、更改存储目录
sudo cp -r /var/www/nextclou/data /你想移到的路径

然后修改/var/www/nextcloud/config.php文件
在这里插入图片描述
改成你的路径,然后重启Apache服务

2.7.4、设置cron定时任务

在这里插入图片描述
修改为cron,直接编辑,/etc/crontab
在最后输入以下

*/5  *  *  *  * www-data php -f /nextcloud/cron.php

/nextcloud改为你nextcloud的路径
不过这还不算好,因为 www-data 默认是不能执行 bash 相关操作的。
将/etc/passwd里面 www-data 对应的那一行改下就可以了

//先备份以下passwd文件
sudo cp /etc/passwd /etc/passwd.bak
//然后修改passwd文件
sudo nano /etc/passwd
//将原来的
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
//改为
www-data:x:33:33:www-data:/var/www:/bin/bash

保存退出
重启cron服务

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐