在Ubuntu 20.04上安装Nextcloud 21.0.1+Apache+PHP+MariaDB+Redis

首先

Nextcloud是一种在线存储服务,可以通过使用自己的服务器来轻松实现安全的文件共享环境。
到目前为止,我们已经介绍了在CentOS上构建Nextcloud环境的几个步骤。
这次,我们将介绍在Ubuntu Server 20.04上构建Nextcloud环境的步骤。
虽然我们在之前的文章中介绍了在Ubuntu Server上使用snap软件包来轻松尝试Nextcloud环境,但是这次我们将手动安装所需的软件包,并添加数据库和内存缓存服务器,以便更容易进行配置调整。

由于平时很少接触Ubuntu Server,如果在步骤中出现了一些奇怪的地方,请您轻言指正。

本次建立的环境

构建形象

image.png

使用的操作系统和中间件

服务器操作系统(Ubuntu Server)

这次使用的是 Ubuntu Server 20.04 LTS。如果你准备好了 VirtualBox、Vagrant 或者 Hyper-V,都没问题。
这里所描述的步骤环境如下:

$ cat /etc/os-release | grep VERSION  
VERSION="20.04.2 LTS (Focal Fossa)"
VERSION_ID="20.04"
VERSION_CODENAME=focal
$ uname -a
Linux ip-10-0-2-232 5.4.0-1045-aws #47-Ubuntu SMP Tue Apr 13 07:02:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

下一个云(Nextcloud)的核心程序

当然了,没有这个就无法使用Nextcloud。
Nextcloud有多个版本可供选择,但我们将使用截至2021年4月18日的最新版本21.0.1。

网络服务器(Apache)

Nextcloud需要在Web服务器上运行,因此需要一个运行Web服务器的环境。在这个例子中,我们将使用Apache作为服务器。
这里给出的Apache版本如下所示。

$ apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built:   2020-08-12T19:46:17

PHP可以用于开发动态网页和Web应用程序的脚本语言。

Paraphrase in Chinese:

Nextcloud使用PHP来运行。在此部署步骤中,PHP的版本如下所示。

$ php -v
PHP 7.4.16 (cli) (built: Mar  5 2021 07:54:38) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.16, Copyright (c), by Zend Technologies

数据库(MariaDB)

在Nextcloud中,使用数据库来存储数据。对于正式运营,建议使用MariaDB/MySQL等数据库。这次我们将使用MariaDB。
在这个流程中,使用的MariaDB版本如下所示。

$ mariadb --version
mariadb  Ver 15.1 Distrib 10.5.9-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Redis是一种内存缓存服务器。

Nextcloud在文件锁管理方面进行了处理,通过使用内存缓存服务器来提高性能。本次我们将使用Redis进行管理。
同时,我们还可以通过Redis来管理PHP的会话。在这里,我们所展示的Redis版本如下。

$ redis-server --version
Redis server v=6.2.1 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=9e28c64fd48469e

建構的步驟

几乎完全按照Nextcloud官方文档进行操作。

准备工作

我将更新软件包。

sudo apt update;sudo apt upgrade -y

安装所需的软件包来进行安装操作。

sudo apt install build-essential pkg-config tcl -y 

安装Web服务器(Apache)。

我将安装Apache。

sudo apt install apache2 -y

为了使用.htaccess,需要启用mod_rewrite。

cd /etc/apache2/mods-available
sudo a2enmod rewrite

添加设置文件。

sudo vi /etc/apache2/sites-available/nextcloud.conf

【设定内容】进行重写:

【设定细节】

<VirtualHost *:80>
  DocumentRoot /var/www/html/nextcloud/
  ServerName  【サーバーのIPアドレス】

  <Directory "/var/www/html/nextcloud/">
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
  </Directory>
</VirtualHost>

请将新添加的配置文件启用,并同时禁用默认的配置文件。

cd /etc/apache2/sites-available/
sudo a2ensite nextcloud
sudo a2dissite 000-default

将Apache配置为自动启动,并启动Apache。

sudo systemctl enable apache2.service
sudo systemctl start apache2.service

安裝PHP

这次我们将使用PHP 7.4版本。为了能获取到最新的PHP版本,我们需要添加仓库。

sudo add-apt-repository ppa:ondrej/php
sudo add-apt-repository ppa:ondrej/apache2

安装PHP及其相关模块。

sudo apt install php7.4 php7.4-curl php7.4-dom php7.4-gd php7.4-mbstring php7.4-zip php7.4-mysql php7.4-bz2 php7.4-intl php7.4-apcu php7.4-redis php7.4-imagick php7.4-bcmath php7.4-gmp -y

请对PHP进行部分配置修改。

sudo sed -i "s/^max_execution_time = 30/max_execution_time = 60/" /etc/php/7.4/apache2/php.ini
sudo sed -i "s/^memory_limit = 128M/memory_limit = 512M/" /etc/php/7.4/apache2/php.ini
sudo sed -i "s/^session.save_handler = files/session.save_handler = redis/" /etc/php/7.4/apache2/php.ini
sudo sed -i "s@^;session.save_path = \"/var/lib/php/sessions\"@session.save_path = \"tcp://localhost:6379\"@" /etc/php/7.4/apache2/php.ini

安装MariaDB

本次将使用MariaDB 10.5版本。为了获得最新的MariaDB版本,我们会添加存储库。

sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main'

安装MariaDB。

sudo apt install mariadb-server mariadb-client -y

设置MariaDB为自动启动,并启动MariaDB。

sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service

将进行MariaDB的基本设置。会有几个问题需要回答,除了设置MariaDB的root用户密码时,其余都按[Enter]键跳过。

sudo mysql_secure_installation

使用MariaDB控制台,继续在Nextcloud中添加需要使用的用户、数据库和权限。下面分别设置如下。

    • ユーザ: nextcloud

 

    データベース名: nextcloud
sudo mysql -uroot

CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '[nextcloudユーザに対して設定したいパスワード]';
GRANT ALL ON nextcloud.* TO "nextcloud"@"localhost";
SHOW GRANTS FOR 'nextcloud'@'localhost';
quit;

【显示授权~的示例执行结果】

【SHOW GRANTS执行的示例结果】

MariaDB [(none)]> SHOW GRANTS FOR 'nextcloud'@'localhost';
+------------------------------------------------------------------------------------------------------------------+
| Grants for nextcloud@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `nextcloud`@`localhost` IDENTIFIED BY PASSWORD '*********'                                 |
| GRANT ALL PRIVILEGES ON `nextcloud`.* TO `nextcloud`@`localhost`                                                 |
+------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.002 sec)

安装 Redis

这次我们将使用截至2021年4月18日最新版本的稳定Redis 6.2。由于常规包安装会导致版本过旧,因此我们将从源代码进行编译和安装。获取Redis源代码文件集。

cd /tmp
wget http://download.redis.io/redis-stable.tar.gz
tar xf redis-stable.tar.gz

进行制作并安装。

cd redis-stable
make
sudo make install

准备所需的用户和目录。

sudo adduser --system --group --no-create-home redis
sudo mkdir /etc/redis
sudo mkdir /var/log/redis
sudo mkdir /var/lib/redis
sudo chown redis:redis /etc/redis
sudo chown redis:redis /var/log/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis

复制并编辑Redis配置文件模板,以创建配置文件。

sudo cp redis.conf /etc/redis
sudo su -c "sed -e 's/^logfile .*$/logfile \"\/var\/log\/redis\/redis.log\"/' -e 's/^dir .*$/dir \/var\/lib\/redis\//' ./redis.conf > /etc/redis/redis.conf"

创建自动启动设置文件。

sudo vi /etc/systemd/system/redis.service

【redis.service的内容】- Redis服务的内容

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

将Redis配置为自动启动,并启动Redis。

sudo systemctl enable redis.service
sudo systemctl start redis.service

安装Nextcloud

下载Nextcloud软件包和校验和文件(校验和文件用于验证Nextcloud软件包是否正确下载)。

cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.tar.bz2
wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.tar.bz2.md5

通过使用校验和文件来确认Nextcloud软件包是否已经正确下载。

md5sum -c nextcloud-21.0.1.tar.bz2.md5 < nextcloud-21.0.1.tar.bz2

如果显示nextcloud-21.0.1.tar.bz2: OK 或 nextcloud-21.0.1.tar.bz2: 完成,则表示OK。

展开您已下载的Nextcloud软件包。

tar xf nextcloud-21.0.1.tar.bz2

将已展开的Nextcloud安装在Web服务器上。

sudo mv nextcloud/ /var/www/html/

创建Nextcloud的数据目录。

sudo mkdir /var/www/html/nextcloud/data

我将更改Nextcloud的所有者信息,以便在整个目录中可以进行读写。

sudo chown -R www-data:www-data /var/www/html/nextcloud

⑦重新启动Apache。

sudo systemctl restart apache2.service

Nextcloud的初始设置

image.png
項目入力値ユーザー名初期の管理者ユーザー名パスワードこのユーザーのパスワードデータベースのユーザー名nextcloudデータベースのパスワードnextcloudユーザーに設定したパスワードデータベース名nextcloudデータベースのホスト名localhost:3306推奨アプリをインストールチェックを外す
image.png

确认数据库中已创建了表格。这样数据库的设置就完成了。

sudo mysql -u root nextcloud
SHOW TABLES;
quit;

执行【SHOW TABLES;】的结果是什么?

+-----------------------------+
| Tables_in_nextcloud         |
+-----------------------------+
| oc_accounts                 |
| oc_accounts_data            |
| oc_activity                 |

~~~ (中略) ~~~

| oc_vcategory_to_object      |
| oc_webauthn                 |
| oc_whats_new                |
+-----------------------------+

在Nextcloud的配置文件中添加配置。

sudo vi /var/www/html/nextcloud/config/config.php

在最下面的 } 上方加入以下行

  'default_phone_region' => 'JP',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'redis' =>
  array (
    'host' => 'localhost',
    'port' => 6379,
  ),
  'htaccess.RewriteBase' => '/',

更新您的 .htaccess 文件。

sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess
image.png
sudo apt install libmagickcore-6.q16-6-extra -y

为了应用所进行的更改设置,需要重新启动Apache。

sudo systemctl restart apache2

作者的話。

因为只需要一种答案,我会用简体中文进行解释。

Nextcloud只需要一个服务器就可以轻松尝试,所以请试着使用它,探索其易用性和各种功能。
下次,我们计划展开使用Nginx作为Web服务器的步骤。

更新历史

    2021/4/18: 初版。
广告
将在 10 秒后关闭
bannerAds