如何基于Oracle Linux 9.x部署NextCloud?

Cloud storage

1 前言

一个问题,一篇文章,一出故事。
以往使用LAMP环境部署的NextCloud已经工作良久,但是发现内存消耗非常巨大,想着切换到LNMP环境,于是整理本章。

2 最佳实践

2.1 环境部署

2.1.1 安装部署Apache环境

如何安装配置Oracle Linux 9.x httpd环境?

2.1.2 安装部署PHP-FPM环境

如何基于Oracle Linux 9.x编译安装PHP-FPM 8.x?

2.1.3 安装部署MariaDB

如何部署Oracle Linux 9.x MariaDB?

2.1.4 准备安装包

cd ~
wget https://download.nextcloud.com/server/releases/nextcloud-31.0.7.zip

以上只是命令行演示,如果下载异常或需要其他版本,请从如下连接下载,
https://download.nextcloud.com/server/releases/

2.2 部署NextCloud

2.2.1 解压软件包

cd ~
unzip nextcloud-31.0.7.zip
mkdir -p /var/www
mv nextcloud /var/www/nextcloud
chown apache:apache -R /var/www/nextcloud
chmod 770 -R /var/www/nextcloud

2.2.2 修改Apache配置

vim /etc/httpd/conf.d/nextcloud.cmdschool.org.conf

加入如下配置,

<VirtualHost *:443>
        DocumentRoot /var/www/nextcloud
        ServerName nextcloud.cmdschool.org
        ServerAlias nextcloud

        SSLEngine on
        SSLProtocol all -SSLv2
        SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
        SSLCertificateFile /etc/httpd/wildcard.cmdschool.org.crt
        SSLCertificateKeyFile /etc/httpd/wildcard.cmdschool.org.key
        SSLCertificateChainFile /etc/httpd/DigiCert_Global_G2_TLS_RSA_SHA256_2020_CA1.crt
        ProxyFCGIBackendType GENERIC
        <FilesMatch \.php$>
                SetHandler "proxy:fcgi://127.0.0.1:9000"
        </FilesMatch>
        AddType text/javascript .mjs
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /var/www/nextcloud
        ServerName nextcloud.cmdschool.org
        ServerAlias nextcloud
        RewriteEngine on
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/?(.*)$ https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>

<Directory /var/www/nextcloud>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews
  <IfModule mod_dav.c>
   Dav off
  </IfModule>
</Directory>

然后,使用如下命令重载服务是配置生效,

systemctl reload httpd.service

证书请自行准备,建议你通过以下链接申请(使用Apache证书即可)
https://cloud.tencent.com/product/ssl

2.2.4 测试并安装模块

https://nextcloud.cmdschool.org/

根据以上提示,我们使用如下命令编译安装zip模块,

cd ~/php-8.3.7/ext/zip
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=zip' > /etc/php.d/zip.ini
systemctl reload php-fpm

如果有以下错误提示,

configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

Package 'libzip', required by 'virtual:world', not found

你需要使用如下命令解决依赖关系,

dnf install -y libzip-devel

根据以上提示,我们使用如下命令编译安装mbstring模块,

cd ~/php-8.3.7/ext/mbstring
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=mbstring' > /etc/php.d/mbstring.ini
systemctl reload php-fpm

根据以上提示,我们使用如下命令编译安装gd模块,

cd ~/php-8.3.7/ext/gd/
phpize
./configure \
--enable-shared \
--disable-static \
--enable-gd \
--with-external-gd \
--with-webp \
--with-jpeg \
--with-xpm \
--with-freetype \
--with-gnu-ld
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=gd' > /etc/php.d/gd.ini
systemctl reload php-fpm

如果有以下错误提示,

configure: error: Package requirements (libpng) were not met:

Package 'libpng', required by 'virtual:world', not found

你需要使用如下命令解决依赖关系,

dnf install -y libpng-devel

如果有以下错误提示,

configure: error: Package requirements (gdlib >= 2.1.0) were not met:

Package 'gdlib', required by 'virtual:world', not found

你需要使用如下命令解决依赖关系,

dnf install -y gd-devel

根据以上提示,我们使用如下命令编译安装zlib模块,

cd ~/php-8.3.7/ext/zlib
cp config0.m4 config.m4
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=zlib' > /etc/php.d/zlib.ini
systemctl reload php-fpm

根据以上提示,我们使用如下命令编译安装curl模块,

cd ~/php-8.3.7/ext/curl
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=curl' > /etc/php.d/curl.ini
systemctl reload php-fpm

如果有以下错误提示,

configure: error: Package requirements (libcurl >= 7.29.0) were not met:

Package 'libcurl', required by 'virtual:world', not fou

你需要使用如下命令解决依赖关系,

dnf install -y libcurl-devel

如果有以下错误提示,

configure: error: Package requirements (openssl) were not met:

Package 'openssl', required by 'virtual:world', not found

你需要使用如下命令解决依赖关系,

dnf install -y openssl-devel

根据以上提示,我们使用如下命令编译安装openssl模块,

cd ~/php-8.3.7/ext/openssl/
cp config0.m4 config.m4
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=openssl' > /etc/php.d/openssl.ini
systemctl reload php-fpm

2.3 配置NextCloud

2.3.1 创建数据库

mysql -uroot -p

输入如下配置:

create database if not exists nextcloud character set utf8;
grant all privileges on nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'nextcloudpwd';
flush privileges;

2.3.2 准备数据目录

mkdir -p /data/nextcloud
chown apache:apache /data/nextcloud/
chmod 770 -R /data/nextcloud/

2.3.3 配置连接

通过访问连接可发现所有模块安装好后即可进行数据库连接等操作,详细请参考下图,

需要注意的是,
– 如果无法连接请将“localhost”改为“127.0.0.1”
– 界面操作不再详述,请自行摸索
另外,如果遇到如下错误提示,

[Mon Aug 11 10:57:18.307367 2025] [proxy_fcgi:error] [pid 93556:tid 93608] [client 10.0.168.165:43446] AH01071: Got error 'Access to the script '/var/www/nextcloud/apps/dashboard/' has been denied (see security.limit_extensions)', referer: https://nextcloud.cmdschool.org/

你可以使用如下命令修复错误,

sed -i 's/;cgi.fix_pathinfo=0/cgi.fix_pathinfo = 1/g' /etc/php.ini

2.3.4 安装可选插件

当nextCloud进入后台页面后,
https://nextcloud.cmdschool.org/index.php/settings/admin/overview
如果看到opcache模块的安装提示,可以参阅如下命令安装,

cd ~/php-8.3.7/ext/opcache/
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'zend_extension=opcache' > /etc/php.d/opcache.so.ini
sed -i "s/;opcache.enable=1/opcache.enable=1/g" /etc/php.ini
sed -i "s/;opcache.memory_consumption=128/opcache.memory_consumption=128/g" /etc/php.ini
sed -i "s/;opcache.interned_strings_buffer=8/opcache.interned_strings_buffer=16/g" /etc/php.ini
sed -i "s/;opcache.max_accelerated_files=10000/opcache.max_accelerated_files=10000/g" /etc/php.ini
sed -i "s/;opcache.save_comments=1/opcache.save_comments=1/g" /etc/php.ini
sed -i "s/;opcache.revalidate_freq=2/opcache.revalidate_freq=1/g" /etc/php.ini
systemctl reload php-fpm

如果看到imagick模块的安装提示,可以参阅如下命令安装,

cd ~
wget https://pecl.php.net/get/imagick-3.7.0.tgz
tar -xf imagick-3.7.0.tgz
cd ~/imagick-3.7.0/
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules
echo 'extension=imagick' > /etc/php.d/imagick.ini
systemctl reload php-fpm

如果有以下错误提示,

configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.

你需要使用如下命令解决依赖关系,

dnf install -y ImageMagick-devel

如果看到exif模块的安装提示,可以参阅如下命令安装,

cd ~/php-8.3.7/ext/exif
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=exif' > /etc/php.d/exif.ini
systemctl reload php-fpm

如果看到gmp模块的安装提示,可以参阅如下命令安装,

cd ~/php-8.3.7/ext/gmp/
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=gmp' > /etc/php.d/gmp.ini
systemctl reload php-fpm

如果你遇到以下错误提示,

configure: error: GNU MP Library version 4.2 or greater required.

可按照如下方法解决依赖关系,

dnf install -y gmp-devel

如果看到intl模块的安装提示,可以参阅如下命令安装,

cd ~/php-8.3.7/ext/intl/
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=intl' > /etc/php.d/intl.ini
systemctl reload php-fpm

如果你遇到以下错误提示,

configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:

可按照如下方法解决依赖关系,

dnf install -y libicu-devel

如果看到sodium模块的安装提示,可以参阅如下命令安装,

cd ~/php-8.3.7/ext/sodium/
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=sodium' > /etc/php.d/sodium.ini
systemctl reload php-fpm

如果收到如下错误提示,

configure: error: Package requirements (libsodium >= 1.0.8) were not met:

你需要安装如下开发库后再继续编译安装,

dnf install -y libsodium-devel

如果看到sysvsem模块的安装提示,可以参阅如下命令安装,

cd ~/php-8.3.7/ext/sysvsem/
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=sysvsem' > /etc/php.d/sysvsem.ini
systemctl reload php-fpm

如果你需要集成AD,你需要ldap模块,可以参阅如下命令安装,

cd ~/php-8.3.7/ext/ldap/
phpize
./configure
make
make install
rsync -avP /usr/lib64/extensions/no-debug-zts-20230831/ /usr/lib64/php-zts/modules/
echo 'extension=ldap' > /etc/php.d/ldap.ini
systemctl reload php-fpm

如果收到如下错误提示,

configure: error: Cannot find ldap.h

你需要安装如下开发库后再继续编译安装,

dnf install -y openldap-devel

如果收到如下错误提示,

configure: error: Cannot find ldap libraries in /usr/lib

使用如下命令解决依赖关系,

ln -s /usr/lib64/libldap.so /usr/lib/

2.3.5 设置缓存

如何配置nextcloud集成redis与apcu?

2.3.6 设置地区代码

cp /var/www/nextcloud/config/config.php /var/www/nextcloud/config/config.php.save
vim /var/www/nextcloud/config/config.php

加入如下配置,

<?php
$CONFIG = array (
  #...
  'default_phone_region' => 'CN',
);

2.3.7 设置计划任务

crontab -u apache -e

加入如下配置,

*/5  *  *  *  * /usr/bin/php --define apc.enable_cli=1 -f /var/www/nextcloud/cron.php

2.3.8 设置OCC别名

如何用命令别名缩写NextCloud的OCC命令?

参阅文档
===================
支持文档
——————-
https://nextcloud.com/support/

Nginx
——————-
https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html

安装包下载地址
—————–
https://download.nextcloud.com/server/releases/

错误处理
—————-
https://help.nextcloud.com/t/mysql-server-has-gone-away-nextcloud-ignoring-database-configuration-in-config-php/108533/6
https://community.invoiceplane.com/t/topic/9008/6

没有评论

发表回复

Cloud storage
如何快速导入nextCloud的LDAP设置?

1 前言 一个问题,一篇文章,一出故事。 笔者今天尝试从一个NextCloud迁移配置到一个新的Ne …

Cloud storage
如何让NextCloud集成Collabora Online?

1 前言 一个问题,一篇文章,一出故事。 笔者今天尝试将Collabora Online集成到Nex …

Cloud storage
如何解决NextCloud的PCNTL扩展提示?

1 前言 一个问题,一篇文章,一出故事。 笔者今天尝试NextCloud的以下指令, occ con …