使用Fedora Server和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部分的第一個輸入框中填寫配置的名稱,比如:
在這裏插入圖片描述
本例將這個配置命名爲Fedora Server 31
然後點擊右側的Save按鈕,這個配置將會被保存,隨後您可以在配置列表中查看它:
在這裏插入圖片描述
現在,每次使用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

這將下載ZIPZIP對應的文件,您需要將 `ZIP替換爲ZIP 安裝包的路徑,(例如https://download.nextcloud.com/server/releases/nextcloud-18.0.4.zip)。 您也可以使用axelaria2c` 等工具,比如:

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 已成功安裝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章