在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,如果在步骤中出现了一些奇怪的地方,请您轻言指正。
本次建立的环境
构建形象
使用的操作系统和中间件
服务器操作系统(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的初始设置
确认数据库中已创建了表格。这样数据库的设置就完成了。
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
sudo apt install libmagickcore-6.q16-6-extra -y
为了应用所进行的更改设置,需要重新启动Apache。
sudo systemctl restart apache2
作者的話。
因为只需要一种答案,我会用简体中文进行解释。
Nextcloud只需要一个服务器就可以轻松尝试,所以请试着使用它,探索其易用性和各种功能。
下次,我们计划展开使用Nginx作为Web服务器的步骤。
更新历史
- 2021/4/18: 初版。