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