文章目錄
這篇文章要幹什麼?
這篇文章會引導您一步一步地自己動手,使用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地址(通過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
部分的第一個輸入框中填寫配置的名稱,比如:
本例將這個配置命名爲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
這將下載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包。您可以使用 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 已成功安裝。