使用 Nextcloud 搭建自己的私有云

这篇文章要干什么?

这篇文章会引导您一步一步地自己动手,使用Fedora Server Nextcloud Cockpit PuTTY 等工具自己搭建并使用一个具有高度自定义程度和扩展能力的私有云。当然,这篇文章中的一切都是开源的!

刻录 Fedora Server 安装盘

Fedora Server is a short-lifecycle, community-supported server operating system that enables seasoned system administrators, experienced with any OS, to make use of the very latest technologies available in the open source community.

Fedora Server 是一个短生命周期,社区支持的服务器操作系统,它允许系统管理员(无论您之前使用什么操作系统)使用最新的开源技术。
首先从 Fedora Server 的官网下载 ISO 镜像,您也可以使用清华的tuna镜像(这里)PS:我用的是tuna。
然后准备一块可以引导的闪存盘,使用如下dd命令刻录安装镜像。

sudo dd if=$ISO of=$TARGET bs=$SPEED

在这里,使用你的安装镜像的路径代替$ISO,使用目标介质代替$TARGET,使用您需要的速度代替$SPEED。比如:

sudo dd if=Fedora-Server-dvd-x86_64-31-1.9.iso of=/dev/sda bs=1M

这个命令将名为Fedora-Server-dvd-x86_64-31-1.9.iso的Fedora镜像文件以1M的块大小刻录到路径为/dev/sda的闪存盘中(不要挂载它)。注意,如果这个闪存盘已经被挂载,那么您需要使用sudo umount命令来取消对它的挂载,例如:

sudo umount /dev/sda

会取消对/dev/sda的挂载。
在刻录过程中,您可以使用如下命令来查看dd的进度:

sudo watch -n 1 pkill -USR1 ^dd$

这将每1秒更新dd命令的进度。这个进度由dd所在的终端显示。

安装 Fedora Server

现在将闪存盘插入要安装 Fedora 的计算机,在 Secure Boot取消的情况下,它可以使用UEFI启动,您应该现检查盘片是否完整,然后进入安装器。
Fedora 使用图形化的 Anaconda 安装程序,这使得它的安装十分简单。你可以参阅这个文档来获得帮助。访问这里来获取更多内容
Anaconda 的分区功能可能不尽人意,您可以使用 CTRL+ALT+F3来切换到第三个TTY,它应该是一个字符界面。然后使用fdisk工具来进行分区。比如:

fdisk /dev/sda

将对/dev/sda磁盘进行分区。fdisk是一个交互式工具,m命令会给出帮助内容,w命令会保存更改。
分区后如果CTRL+ALT+F1不能切换回 Anaconda,使用reboot命令重新启动。

注意,在安装时,必须安装 GRUB,否则 Fedora 不能被引导。您不需要安装一个图形界面。

Fedora Server 软件源配置

将 Fedora Server 连接到互联网,使用有线连接。(这可以使用 ifconfig 命令验证)使用如下命令来验证网络联通性。

ping 192.168.1.1

ping可以使用CTRL+C退出。
Fedora Server 默认的软件源位于国外,参看tuna的帮助来切换到tuna源(这里)。参考以下命令:

su
cd /etc/
cp -r yum.repos.d yum.repos.d.bak    # 备份默认的源配置
cd yum.repos.d
rm -f *.*    # 删除原来的配置
vi fedora.repo

vi (vim)中,先使用i进入插入模式,再输入如下配置:

[fedora]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Everything/$basearch/os/
metadata_expire=28d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False

然后使用:wq来保存并退出vim
同理,在fedora-updates.repo fedora-modular.repo fedora-updates-modular.repo:

[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/updates/$releasever/Everything/$basearch/
enabled=1
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
[fedora-modular]
name=Fedora Modular $releasever - $basearch
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Modular/$basearch/os/
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
[updates-modular]
name=Fedora Modular $releasever - $basearch - Updates
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/updates/$releasever/Modular/$basearch/
enabled=1
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False

在配置更新完成后,使用如下命令更新软件源的缓存。

sudo dnf makecache

使用 OpenSSH 服务

使用如下命令来安装 OpenSSH 服务端:

sudo dnf install openssh-server

然后编辑openssh-server的配置文件:

vi /etc/ssh/sshd_config

vi (vim)中,先使用i进入插入模式,然后根据需求修改这个文件。注意,在修改一个配置后,要删除它前面的#号,否则不起作用。以下是一些值的注意的配置。

Port 22    #监听的端口号
Protocol 2    #支持的协议(应该保持2)
PermitRootLogin no    #是否允许root直接登入
MaxAuthTries 3    #最大登录尝试数

然后使用:wq来保存并退出vim
修改完成后,用如下命令使配置生效并重新启动服务:

sudo systemctl stop sshd.service
sudo systemctl enable --now sshd.service

这时,处在同一局域网的计算机就可以使用ssh连接了。使用如下命令连接:

ssh USER@$IP

使用你的账户代替USER,Fedora Server 的 IP地址(通过ifconfigip addr查看)代替$IP,比如:

ssh [email protected]

这将会登入到位于192.168.1.12计算机上的myuser用户。这时您可以进行远程操作。比如,您可以使用以下命令切换到root身份:

su

sudo -sH

使用PuTTY轻松登入

PuTTY 是一个优秀的SSH客户端,在Arch Linux上,使用如下命令安装它:

sudo pacman -S putty

对于其它发行版,是PuTTY for Linux的的官方地址。对于Windows用户,这些是PuTTY的官方地址。

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
https://putty.org/
https://www.ssh.com/ssh/putty/windows/

对于Mac OSX 用户,是PuTTY的官方地址。
初次使用 PuTTY 时,需要进行配置。如图是PuTTY初次启动的界面:
在这里插入图片描述此时,您需要指定正确的PuTTY配置,对于一般的 OpenSSH,应包括:

  • Fedora Server 的IP地址(Host Name or IP address)
  • Fedora Server 的 SSH 端口(Port)
  • 连接模式,您应该选择SSH
  • 选择一个适合的字体和颜色样式

在配置完成后,您可以保存这些配置以便以后使用。在PuTTYLoad, save or delete a stored session部分的第一个输入框中填写配置的名称,比如:
在这里插入图片描述
现在,每次使用PuTTY登入时,只需选择对应的配置(比如Fedora Server 31)并选择“连接”(Open),即可进入 远程命令行(SSH)了。

此时,如果您输入如下命令:

exit

PuTTY连接将会关闭,PuTTY也会退出。

下载 Nextcloud

这个页面获取 Nextcloud 的服务器端下载地址。对于 Nextcloud 18.0.4,可以使用
这个ZIP压缩包

您可以使用wget aria2c axel 等工具下载Nextcloud。如下是这几种方式的对应命令:

  • 对于 wget
sudo dnf install wget
wget $ZIP

这将下载$ZIP对应的文件,您需要将 $ZIP替换为ZIP 安装包的路径,(例如https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip)。
您也可以使用 axel aria2c 等工具,比如:

axel -n $THREADS $ZIP

这将使用 $THREADS 指定的线程数来下载 $ZIP 对应的文件,比如:

axel -n 32 https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip

会使用32线程下载文件https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip 。注意,在使用 axel 下载之前,您需要通过以下命令安装 axel

sudo dnf install axel

在 Nextcloud 下载完成后,您将学习如何安装 Nextcloud。

安装 Nextcloud

首先,解压缩 Nextcloud ZIP包。您可以使用 7zunzip

对于 7z(或 官方地 p7zip7zip),使用如下命令安装:

sudo dnf install 7z

然后,使用如下命令来解压缩:

7z x $ZIP

在实际使用中,请将 $ZIP 替代为 Nextcloud 压缩包的路径,如:

7z x https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip

对于 unzip,使用如下命令安装:

sudo dnf install unzip

然后,使用如下命令解压缩:

unzip $ZIP

在实际使用中,请将 $ZIP 替代为 Nextcloud 压缩包的路径,如:

unzip https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip

然后,将得到的 nextcloud文件夹拷贝到服务器的html目录。Fedora Server已经预装了Apache httpd服务器,因此,将这个文件夹拷贝到/var/www/html/ 目录:

sudo cp -r nextcloud /var/www/html/

注意,cp ,命令的第三个参数必须是/var/www/html/ 而不是 /var/www/html。因为 在第二种情况中Nextcloud 文件夹会替换 html 文件夹。执行以上的操作需要root权限。

执行后,您需要先停止httpdphp-fpm 服务。新版本的 Fedora Server 使用 systemd而不是init脚本。但是,以下两种方式都可以完成操作:

  • 使用 systemctl 命令
  • 使用 service 命令

推荐您使用新的 systemctl命令完成操作,如:

sudo systemctl stop httpd
sudo systemctl stop php-fpm

然后,安装 APCU php 模块,否则Nextcloud可能无法正常工作。使用 以下命令来查找这个软件包并安装:

dnf search apcu
sudo dnf install $APCU

请将 $APCU 替换为 需要的 软件包。

为 Nextcloud 正确设置权限并关闭 SE Linux

首先切换为 root用户:

su

然后使用 vi 编辑如下文件:

vi ~/permission.sh

i 键插入如下内容:(本文件源自网络)

#!/bin/bash
ocpath='/var/www/nextcloud/'   #修改为你Nextcloud所放置的目录
htuser='apache'                #网页服务器用户
htgroup='apache'               #网页服务器的组
rootuser='root'
 
printf "Creating possible missing Directories\n"
mkdir -p $ocpath/data
mkdir -p $ocpath/assets
mkdir -p $ocpath/updater
 
printf "chmod Files and Directories\n"
find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
 
printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ocpath}/
chown -R ${htuser}:${htgroup} ${ocpath}/apps/
chown -R ${htuser}:${htgroup} ${ocpath}/assets/
chown -R ${htuser}:${htgroup} ${ocpath}/config/
chown -R ${htuser}:${htgroup} ${ocpath}/data/
chown -R ${htuser}:${htgroup} ${ocpath}/themes/
chown -R ${htuser}:${htgroup} ${ocpath}/updater/
 
chmod +x ${ocpath}/occ
 
printf "chmod/chown .htaccess\n"
if [ -f ${ocpath}/.htaccess ]
 then
  chmod 0644 ${ocpath}/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
fi
if [ -f ${ocpath}/data/.htaccess ]
 then
  chmod 0644 ${ocpath}/data/.htaccess
  chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
fi

然后按ESC 然后:wq 保存并退出vi 。现在执行本脚本:

chmod +x permission.sh
./permission.sh

现在,关闭SELinux。在root权限下,编辑SELinux的配置文件:

sudo vi /etc/selinux/config

i 键编辑文件,将SELINUX=enforcing修改为如下内容:

SELINUX=disabled

然后使用ESC 然后:wq退出vim。然后使用如下命令重新启动:

sudo reboot

为Nextcloud设置数据库

Nextcloud 建议使用 Maria DB作为数据库。如下为具体方法。

sudo dnf install -y mariadb-server mariadb
sudo systemctl enable mariadb
sudo systemctl start mariadb
mysql_secure_installation # 或mysql-secure-installation

在安装程序中,补全:

Set root password? [Y/n] Y
New password:    # 设置root密码,不可见
Re-enter new password:    # 设置root密码,不可见
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

然后进入mariadb

mysql -u root -p

输入如下内容:

create database nextcloud_db;
create user nextclouduser@localhost identified by 'nextclouduser@';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'nextclouduser@';
flush privileges;

然后退出mariadb

配置 Apache httpd

打开httpd配置文件(地址因版本而异),使用 VIM编辑成你需要的内容。这部分很容易搜索。手册页面访问:

man httpd

info httpd

完成 Nextcloud 安装

浏览器登入以下网址,根据步骤向导完成配置:

$SERVER/nextcloud/

使用服务器的IP代替$SERVER,比如:

192.168.1.12/nextcloud

大功告成

至此,Nextcloud 已成功安装。
你需要在上面的链接页面中完成Nextcloud的设置,包括设置它的数据库和用户账户, 然后就可以使用 Nextcloud 了.

附: 为 Nextcloud 专门设置一个分区

你可以让 Nextcloud 专属一个磁盘分区, 首先使用 fdiskgdisk 工具来创建它.

然后, 为 Nextcloud 安装 External Storage 插件, 它位于 Nextcloud 的插件商店中.

使用 Admin 权限登陆账户, 在设置列表的最下方找到 External Storage 项目, 配置它. 注意以下内容.

在配置 Nextcloud 之前

在配置 Nextcloud 之前, 需要设置你要挂载的磁盘, 确保 Apache httpd 服务器具有访问权限.

首先切换到 root 用户, 然后赋予挂载点正确的权限.

现在使用 bash 登录到 httpd 的账户检查 cd 挂载点是否可行.

配置 External Storage

配置 External Storage, 需要输入挂载点的位置, 然后确认你的输入. 如果配置正确, 你就可以在 Nextcloud 中看到你的分区了.

你可能感兴趣的:(fedora,server,apache,后端)