在 Fedora server 39 中纯手动部署 Nextcloud
本文主要演示了如何使用 Fedora Server 部署 LAMP 和 Nextcloud。搭建一个私人云。NextCloud 是一款开源免费的私有云存储网盘项目。网上的教程大多是使用宝塔面板或者各种脚本傻瓜式部署的方法。对于我这种追求清真的人不能接受。本文演示了纯手动部署 Nextcloud 的方法。
本文主要参考的是 Nextcloud 的官方文档。本人求新求快,追求对最新设备的支持,所以选择的是 Fedora Server。但是其他 rpm 系的部署方法应当与本文类似。
环境准备
部署 Nextcloud 需要先搭建 LAMP 环境。LAMP 即 Linux + Apache + Mysql/Mariadb + PHP。由于 Fedora 的软件仓库源足够的全面,并且相对较新。本文搭建环境全部从软件源中获取,无需另外下载编译。
从源中安装环境
使用下面的命令安装环境:
开始安装之前,建议先启用 rpmfusion 源。
1 | sudo dnf install httpd mariadb mariadb-server php mod_ssl php-gmp php-bcmath php-pecl-apcu php-pecl-imagick php-mcrypt php-mysqlnd php-curl php-gd php-xml php-bcmath php-zip php-intl |
配置 Mariadb
安装完成后,设置字符集
编辑 /etc/my.cnf.d/mariadb-server.cnf 在 [mysqld] 部分下设置您的字符集。
1 | [mysqld] |
然后启动 mariadb 服务并使其开机启动
1 | sudo systemctl start mariadb |
执行 MariaDB 初始设置,例如设置 root 密码、禁用远程 root 登录等:
1 | sudo mysql_secure_installation |
安照提示回答如下问题:
- 输入 root 的当前密码(不输入):
- 设置 root 密码? [是/否] 是,并输入密码
- 删除匿名用户? [是/否] 是
- 删除测试数据库并访问它? [是/否] 是
- 现在重新加载权限表? [是/否] 是
该 root 账户为 Mariadb 的 root 账户,不是指系统 root 账户。
创建用于 Nextcloud 的数据库:
首先登陆 mariadb。输入以下命令后输入 root 密码即可登陆 mariadb。
1 | mysql -u root -p |
然后输入以下 sql 命令创建用于 Nextcloud 的用户和数据库。
1 | CREATE DATABASE 数据库名; |
如果你需要通过互联网访问 mariadb,请自行打开 mariadb 通过互联网访问权限并打开防火墙端口。本文为本地访问数据库。
配置 PHP
编辑 /etc/php.ini 文件。来设置 PHP。
在 [Date] 下找到 date.timezone 行。去掉 ; 号设置时区。
1 | date.timezone = Asia/Shanghai |
找到 memory_limit 行,将 128M 改为 512M 以上。(除非你的服务器内存极小,否则都建议将内存限制改为 512M 以上)
1 | memory_limit = 512M |
配置 apache httpd
为 Nextcloud 准备一个文件夹,本文以 /srv/nextcloud/
文件夹为例。
将 nextcloud 文件夹的所有权改为 apache 。
查看
/etc/httpd/conf/httpd.conf
文件中 User 和 Group 设置的是什么,nextcloud 目录的所有权就改为相应的用户。
1 | sudo chown apache:apache /srv/nextcloud/ |
从 https://download.nextcloud.com/server/installer/setup-nextcloud.php 下载 setup-nextcloud.php 文件至 /srv/nextcloud/
文件夹。
1 | cd /srv/nextcloud/ |
新建 httpd 的配置文件 /etc/httpd/conf.d/nextcloud.conf
,设置虚拟主机。
1 | ServerName 你的域名或 ip 地址 |
如果你有域名并且有 ssl 证书,请将证书放在合适路径,使用以下配置。
如果你开启了 Selinux,记得正确设置证书文件的安全上下文:
sudo chcon -u system_u -r object_r -t httpd_sys_content_t 证书文件
1 | ServerName 你的域名或 ip 地址 |
接下来启动 httpd 就可以进行下一阶段配置了。
如果你有开启 Selinux,记得提前放开端口。
semanage port -a -t http_port_t -p tcp 你的端口
1 | sudo systemctl enable --now httpd |
Nextcloud 配置精灵
这时访问 http://你的域名/setup-nextcloud.php 就可以打开 Nextcloud 配置精灵了。界面如下:
如果检测依赖都没有问题了,就会让您选择 Nextcloud 安装目录。我们只需要输入一个 .
安装在当前目录下。
点击 Next,然后静静的等待一会,随后 Nextcloud 就会安装完成。点击 Next。
接下来就到了输入用户名和数据库信息的时候了。用户名和密码您自行选择,第一次创建的用户为管理员。
数据库选择 Mariadb ,数据库名,用户名以及密码为之前 配置 Mariadb 时的数据库名,用户名以及密码。
点击安装,然后静静等待,就大功告成了。
Nextcloud 常见问题汇总
进入 Nextcloud 后,点击个人头像,选择管理设置会进入安全与设置警告
栏目,他会自动检测你配置中还存在的问题。
Server has no maintenance window start time configured。
编辑 Nextcloud目录/config/config.php 文件。在 );
前添加行:
1 | 'maintenance_window_start' => 1, |
该实例缺少一些推荐的 PHP 模块
大多数模块 Fedora 的源里面都有,缺少什么模块装什么就行了。
PHP 的组件 OPcache 没有正确配置
编辑 /etc/php.d/10-opcache.ini
:将以下参数改为类似的即可。
1 | opcache.enable=1 |
HTTP的请求头 “Strict-Transport-Security” 未设置为至少 “15552000” 秒.
在 apache httpd 的 nextcloud.conf 配置中添加以下行
1 | <IfModule mod_headers.c> |
本文前文已经添加了这些配置。
你还没有设置或验证你的电子邮件服务器配置。
在个人-基本设置-电子邮件服务器中设置即可。注意需要先在个人信息中填写好个人的邮箱地址。
内存缓存未配置,为了提升使用体验,请尽量配置内存缓存。
编辑 Nextcloud目录/config/config.php 文件。在 );
前添加行:
1 | 'memcache.local' => '\\OC\\Memcache\\APCu', |
对于个人使用的 Nextcloud 而言 APCu 足够用了。
您的安装没有设置默认的电话区域。
编辑 Nextcloud目录/config/config.php 文件。在 );
前添加行:
1 | 'default_phone_region' => 'CN', |
apcu 报错。
编辑 /etc/php.d/40-apcu.ini,编辑 apc.enable_cli=1 并删除 ; 取消注释。
配置 cron.php 定时任务。
设置为 cron。并在操作系统中编辑文件 /etc/systemd/system/nextcloudcron.service:
1 | [Unit] |
User=apache:如前所述,此处填写
/etc/httpd/conf/httpd.conf
文件中 User 的用户名。
并且编辑文件 /etc/systemd/system/nextcloudcron.timer:
1 | [Unit] |
然后执行命令:
1 | sudo systemctl daemon-reload |
以上就是在 Fedora Server 39 中配置 Nextcloud 的方法啦,希望能够对你有所帮助。
Selinux 太难了,我配置到后面还是把 Selinux 关了,下次再学习这个 Selinux 怎么玩吧。