在Ubuntu上使用Apache+MariaDB安装部署Nextcloud并修改默认存储路径

一、前言

Nextcloud 是一款开源的私有云存储解决方案,允许用户轻松搭建自己的云服务。它不仅支持文件存储和共享,还提供了日历、联系人、任务管理、笔记等丰富的功能。本文将详细介绍如何在 Ubuntu 22.04 LTS 上使用 Apache 和 MariaDB 安装部署 Nextcloud,并修改默认存储路径为 /home/nextcloud_data。

二、环境

  • 操作系统:Ubuntu 22.04 LTS
  • Web 服务器:Apache
  • 数据库:MariaDB
  • PHP 版本:8.1
  • Nextcloud 版本:30.0

三、安装步骤

1. 更新系统软件包

首先,确保系统软件包为最新版本:

bash 复制代码
sudo apt update
sudo apt upgrade -y

2. 安装 Apache 和 PHP

安装 Apache 和 PHP 8.1 及其扩展:

bash 复制代码
sudo apt install apache2 libapache2-mod-php8.1 php8.1 php8.1-mysql php8.1-gd php8.1-curl php8.1-xml php8.1-mbstring php8.1-intl php8.1-zip php8.1-bcmath -y

启用 Apache 模块:

bash 复制代码
sudo a2enmod rewrite headers env dir mime setenvif
sudo systemctl restart apache2

3. 安装MariaDB

MariaDB是MySQL的一个分支,用于存储Nextcloud的数据。安装命令如下:

bash 复制代码
sudo apt install mariadb-server -y

安装完成后,初始化数据库并设置root密码:

bash 复制代码
sudo mysql_secure_installation

根据提示操作,设置root密码、删除匿名用户、禁止root远程登录等。

登录到MariaDB命令行:sudo mysql -u root。

在 MariaDB shell 中执行以下命令:

sql 复制代码
CREATE DATABASE nextcloud; //创建数据库
CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'yourpassword'; //创建用户
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud_user'@'localhost'; //授予权限
FLUSH PRIVILEGES;//刷新权限
\q //退出MariaDB命令行

4. 下载并安装Nextcloud

(1)官网下载页面(https://nextcloud.com/install/)自行下载,我这里直接使用wget命令下载Nextcloud:

bash 复制代码
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2

(2)解压下载的文件:

bash 复制代码
sudo tar -xjf latest.tar.bz2

(3)将解压后的nextcloud文件夹移动到Nginx的默认网站目录:

bash 复制代码
sudo mv nextcloud /var/www/

(4)修改nextcloud文件夹的所有者和组:

bash 复制代码
sudo chown -R www-data:www-data /var/www/nextcloud

5.配置 Apache 虚拟主机

创建 Apache 虚拟主机配置文件:

bash 复制代码
sudo vim /etc/apache2/sites-available/nextcloud.conf

添加以下内容:

apache 复制代码
<VirtualHost *:80>
    ServerName yourdomain.com
    DocumentRoot /var/www/nextcloud

    <Directory /var/www/nextcloud/>
        Options FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined

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

启用虚拟主机并禁用默认站点:

bash 复制代码
sudo a2ensite nextcloud.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2

6.存储路径创建

Nextcloud 默认将用户数据存储在 /var/www/nextcloud/data 目录下。为了将其更改为 /home/nextcloud_data,执行创建新的存储目录:

bash 复制代码
sudo mkdir -p /home/nextcloud_data
sudo chown -R www-data:www-data /home/nextcloud_data

7.安装 Nextcloud

在浏览器中访问 http://yourdomain.com,按照 Nextcloud 的安装向导完成配置:

  • 输入管理员账户和密码。
  • 输入数据库信息:
    • 数据库类型:MySQL/MariaDB
    • 数据库名称:nextcloud
    • 数据库用户:nextcloud_user
    • 数据库密码:yourpassword
    • 数据库主机:localhost
  • 默认存储路径:/home/nextcloud_data

7.启用 HTTPS(可选)

使用 Let's Encrypt 为 Apache 配置 HTTPS:

bash 复制代码
sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com

8. 配置防火墙(可选)

如果启用了防火墙,确保允许 HTTP 和 HTTPS 流量:

bash 复制代码
复制
sudo ufw allow 'Apache Full'
相关推荐
RuoyiOffice4 分钟前
Hyper-V+Kubernetes 搭建实战:保留 Windows,构建三节点 Linux 容器集群
linux·spring boot·kubernetes·containerd·hyper-v·微服务部署·ruoyi office
m0_7196408716 分钟前
2026年高校科研用轮式双臂机器人二次开发平台怎么部署搭建
经验分享·机器人
承渊政道25 分钟前
Linux网络学习【五种IO模型与⾮阻塞IO】
linux·网络·学习·ubuntu·io模型·非阻塞io
上海广测检测科技有限公司1 小时前
显示器能效新国标:GB 21520-2023 的适用范围、判定逻辑与限值分档
经验分享
wuminyu2 小时前
JVM执行引擎学习总结:热点字节码编译成本地机器码
java·linux·c语言·jvm·c++
kiros_wang2 小时前
通用工具模块封装:防抖节流、参数校验公共工具类
linux·运维·ubuntu
fengci.2 小时前
CTF2困难部分
开发语言·网络·python·安全·php
honsor2 小时前
以太网温湿度传感器|动环监控核心采集设备,协议、组网、Zabbix接入实战
linux·服务器·ubuntu
Android系统攻城狮2 小时前
Linux FFmpeg深度解析之avcodec_default_get_buffer2调用流程与实战(二十)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
深圳恒讯2 小时前
香港云主机硬盘满了怎么办?Linux和Windows在线扩容操作教程
linux·运维·windows