这篇文章要干什么?
这篇文章会引导您一步一步地自己动手,使用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 的分区功能可能不尽人意,您可以使用 fdisk
工具来进行分区。比如:
fdisk /dev/sda
将对/dev/sda
磁盘进行分区。fdisk
是一个交互式工具,m
命令会给出帮助内容,w
命令会保存更改。
分区后如果Anaconda
,使用reboot
命令重新启动。
注意,在安装时,必须安装 GRUB,否则 Fedora 不能被引导。您不需要安装一个图形界面。
Fedora Server 软件源配置
将 Fedora Server 连接到互联网,使用有线连接。(这可以使用 ifconfig
命令验证)使用如下命令来验证网络联通性。
ping 192.168.1.1
ping
可以使用
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)中,先使用
[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
然后使用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)中,先使用#
号,否则不起作用。以下是一些值的注意的配置。
Port 22 #监听的端口号
Protocol 2 #支持的协议(应该保持2)
PermitRootLogin no #是否允许root直接登入
MaxAuthTries 3 #最大登录尝试数
然后使用vim
。
修改完成后,用如下命令使配置生效并重新启动服务:
sudo systemctl stop sshd.service
sudo systemctl enable --now sshd.service
这时,处在同一局域网的计算机就可以使用ssh
连接了。使用如下命令连接:
ssh USER@$IP
使用你的账户代替USER
,Fedora Server 的 IP地址(通过ifconfig
或ip 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
- 选择一个适合的字体和颜色样式
在配置完成后,您可以保存这些配置以便以后使用。在PuTTY
的Load, 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包。您可以使用 7z
或 unzip
。
对于 7z
(或 官方地 p7zip
,7zip
),使用如下命令安装:
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
权限。
执行后,您需要先停止httpd
和 php-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 专属一个磁盘分区, 首先使用 fdisk
或 gdisk
工具来创建它.
然后, 为 Nextcloud 安装 External Storage
插件, 它位于 Nextcloud 的插件商店中.
使用 Admin 权限登陆账户, 在设置列表的最下方找到 External Storage
项目, 配置它. 注意以下内容.
在配置 Nextcloud 之前
在配置 Nextcloud 之前, 需要设置你要挂载的磁盘, 确保 Apache httpd 服务器具有访问权限.
首先切换到 root 用户, 然后赋予挂载点正确的权限.
现在使用 bash
登录到 httpd 的账户检查 cd
挂载点是否可行.
配置 External Storage
配置 External Storage, 需要输入挂载点的位置, 然后确认你的输入. 如果配置正确, 你就可以在 Nextcloud 中看到你的分区了.