阿里雲ubuntu16.04/18.04基於oss搭建nextcloud私人網盤

一、搭建LAMP環境

搭建過程中需要的一些必須的安裝包,對着這篇博客做就沒有問題。沒有積分的下方評論區找我。
1、安裝apache
可以先更新一下服務器

sudo apt-get update             # 獲取最新資源包

sudo apt-get upgrade           # 本機軟件全部更新

sudo apt-get dist-upgrade    # 本機系統軟件更新

安裝Apache

sudo apt install apache2 -y

檢查是否開啓Apache,一般安裝完會默認開啓。

systemctl status apache2

順帶講一下apache的關閉 啓動 和重啓

service apache2 stop

service apache2 start

service apache2 restart

現在開始訪問你的 web 服務器,打開瀏覽器並輸入服務器的IP地址或者主機名(http://IP_Address_OR_Host_Name)
在這裏插入圖片描述
2、數據庫服務器的安裝 (MySQL Server 5.7或者MariaDB,選擇其中一種即可,這裏我選擇安裝mysql5.7)

sudo apt install mysql-server mysql-client

在安裝過程中,它會要求你設置 mysql 服務器 root 帳戶的密碼以及確認 root 帳戶的密碼

安裝成功之後我們查看一下mysql的狀態

sudo netstat -tap | grep mysql

在這裏插入圖片描述
當然了,我們還需要打開mysql的遠程連接(重要!)
登陸mysql mysql -u root -p 進入數據庫,選擇mysql表,將host只能本地訪問的 localhost 改爲 %

update user set host="%" where user="root"; 

刷新授權設置

flush privileges;

然後再授權設置

use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;

接下來,查看3306端口是否被開放

root@iZwz956snfyrvah6yq8sa4Z:~# netstat -an | grep 3306
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

注意:現在3306端口只能被本地訪問(127.0.0.1)。修改mysql配置文件,我這裏的文件路徑是/etc/mysql/mysql.conf.d/mysqld.cnf

vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到

bind-address      = 127.0.0.1

在前面加上 #號,將它註釋掉,重啓MySQL。

service mysql restart

再次查看3306端口

root@iZwz956snfyrvah6yq8sa4Z:~# netstat -an | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN 

然後就可以用navicat等遠程工具連接阿里雲服務器的mysql了。

3、PHP 腳本語言的安裝:

在終端中執行如下的命令來安裝 PHP 7.2:

sudo apt install php7.2-mysql php7.2-curl php7.2-json php7.2-cgi php7.2 libapache2-mod-php7.2

測試PHP,查看版本:

php --version

輸出php基本信息

vim /var/www/html/phpinfo.php

寫入如下

<?php echo phpinfo();?>

現在可以從 瀏覽器中訪問這個頁面, 輸入 : “http://Server_IP/phpinfo.php” ,Server_IP是你服務器的ip,(ip通過ifconfig命令查看)可以看到如下頁面
在這裏插入圖片描述
4、phpMyAdmin 的安裝(可選,主要可以通過它的 web 界面來執行所有與數據庫管理和其他數據庫操作相關的任務,有navicat基本上就可以,但是爲了補全教程,我們還是安裝一下吧):

sudo apt install php-mbstring php7.2-mbstring php-gettext

sudo systemctl restart apache2.service

sudo apt install phpmyadmin

選擇 Apache2 並點擊確定。
在這裏插入圖片描述
點擊確定來配置 phpMyAdmin 管理的數據庫。
在這裏插入圖片描述
指定 phpMyAdmin 向數據庫服務器註冊時所用的密碼。
在這裏插入圖片描述
指定 phpMyAdmin 向數據庫服務器註冊時所用的密碼。
在這裏插入圖片描述
現在開始嘗試訪問 phpMyAdmin,打開瀏覽器並輸入 : “http://ip/phpmyadmin”
在這裏插入圖片描述
注意:phpMyAdmin 是一個以PHP爲基礎,以Web-Base方式架構在網站主機上的MySQL的數據庫管理工具,讓管理者可用Web接口管理MySQL數據庫。藉由此Web接口可以成爲一個簡易方式輸入繁雜SQL語法的較佳途徑,尤其要處理大量資料的匯入及匯出更爲方便。其中一個更大的優勢在於由於phpMyAdmin跟其他PHP程式一樣在網頁服務器上執行,但是您可以在任何地方使用這些程式產生的HTML頁面,也就是於遠端管理MySQL數據庫,方便的建立、修改、刪除數據庫及資料表。也可藉由phpMyAdmin建立常用的php語法,方便編寫網頁時所需要的sql語法正確性。

至此,你的環境準備工作就完成了!

二、安裝nextcloud

1、首先找到阿里雲免費的nextcloud的鏡像源,這個比較麻煩,所以我就直接在官網下載了一個nextcloud的源碼包,將其上傳到服務器的web根目錄下面。
在這裏插入圖片描述
2、安裝
這裏我們說一下,因爲這個源碼包是.zip文件,所以我們不能用常見的tar -zxvf ----------。這裏安裝一個可以解壓.zip文件的工具。

apt-get install unzip
unzip /你的資源包路徑/nextcloud.zip

之後我們瀏覽器輸入

ip/nextcloud

出現了
在這裏插入圖片描述
可能還會顯示其他模塊爲安裝吧,是因爲nextcloud是基於LAMP環境的,並且需要很多的php模塊擴展,直接安裝php時候並沒有安裝這些擴展。(這裏補充一下,php版本最好用7.0和7.2的,因爲我開始的時候試過5.6,報版本低,卸載重裝,7.3報錯,最後知道版本高了,又試了一下7.0和7.3的就行了,真的是浪費了很多時間。其中具體原因有待深究,爲了不引起不必要的麻煩還是按我說的去做吧)

sudo apt-get install php7.2-bcmath 

sudo apt-get install php7.2-bz2 

sudo apt-get install php7.2-calendar 

sudo apt-get install php7.2-ctype 

sudo apt-get install php7.2-curl 

sudo apt-get install php7.2-dom 

sudo apt-get install php7.2-enchant 

sudo apt-get install php7.2-exif 

sudo apt-get install php7.2-fileinfo 

sudo apt-get install php7.2-ftp 

sudo apt-get install php7.2-gd 

sudo apt-get install php7.2-gettext 

sudo apt-get install php7.2-gmp 

sudo apt-get install php7.2-iconv 

sudo apt-get install php7.2-intl 

sudo apt-get install php7.2-json 

sudo apt-get install php7.2-ldap 

sudo apt-get install php7.2-mbstring 

sudo apt-get install php7.2-mysqli 

sudo apt-get install php7.2-mysqlnd 

sudo apt-get install php7.2-opcache 

sudo apt-get install php7.2-pdo 

sudo apt-get install php7.2-phar 

sudo apt-get install php7.2-posix 

sudo apt-get install php7.2-pspell 

sudo apt-get install php7.2-readline 

sudo apt-get install php7.2-shmop 

sudo apt-get install php7.2-simplexml 

sudo apt-get install php7.2-snmp 

sudo apt-get install php7.2-soap 

sudo apt-get install php7.2-sockets 

sudo apt-get install php7.2-sqlite3 

sudo apt-get install php7.2-sysvmsg 

sudo apt-get install php7.2-sysvsem 

sudo apt-get install php7.2-sysvshm 

sudo apt-get install php7.2-wddx 

sudo apt-get install php7.2-xml 

sudo apt-get install php7.2-xsl

sudo apt-get install php7.2-recode 

sudo apt-get install php7.2-dba 

sudo apt-get install php7.2-imap 

sudo apt-get install php7.2-interbase 

sudo apt-get install php7.2-odbc 

sudo apt-get install php7.2-pgsql 

sudo apt-get install php7.2-tidy 

sudo apt-get install php7.2-zip

自行對照安裝吧!
現在我們再訪問一下nextcloud吧
在這裏插入圖片描述
哈哈哈,是不是感覺到很無奈?沒事,解決方法我給你找到了,是因爲文件夾權限設置的不到位。網上找了很多的方法比如加腳本,直接將nextcloud文件夾權限設置爲777。都是不適用的,可能因爲他們的教程時間太久了吧,不太適用了,爲此又浪費了我不少時間。最終解決辦法…

創建一個 /etc/apache2/sites-available/nextcloud.conf 文件 內容如下,其中 /var/www/html/nextcloud/ 爲你待會nextcloud放置的網站目錄

Alias /owncloud "/var/www/html/nextcloud/"

<Directory /var/www/html/nextcloud/>
  Options +FollowSymlinks
  AllowOverride All

 <IfModule mod_dav.c>
  Dav off
 </IfModule>

 SetEnv HOME /var/www/html/nextcloud
 SetEnv HTTP_HOME /var/www/html/nextcloud

</Directory>


然後創建一個符號鏈接/etc/apache2/sites-enabled

ln -s /etc/apache2/sites-available/nextcloud.conf /etc/apache2/sites-enabled/nextcloud.conf

將您自己的nextcloud目錄的所有權暫時更改爲HTTP用戶

chown -R www-data:www-data /var/www/html/owncloud/

重啓Apache使生效

service apache2 restart

然後再訪問看一下
在這裏插入圖片描述
停停停! 這裏我們需要配置這些東西,因爲我們要將這個存儲目錄掛載到阿里雲oss上面,實現數據的實時同步!

三、阿里雲 OSS文件存儲掛到雲服務器ESC文件系統中

ossfs能讓您在Linux系統中,將對象存儲OSS的存儲空間(Bucket)掛載到本地文件系統中,您能夠像操作本地文件一樣操作OSS的對象(Object),實現數據的共享。

使用限制
ossfs使用有以下限制:
不支持掛載歸檔型Bucket。
編輯已上傳文件會導致文件被重新上傳。
元數據操作,例如list directory,因爲需要遠程訪問OSS服務器,所以性能較差。
重命名文件/文件夾可能會出錯。若操作失敗,可能會導致數據不一致。
不適合高併發讀/寫的場景。
多個客戶端掛載同一個OSS Bucket時,數據一致性由您自行維護。例如,合理規劃文件使用時間,避免出現多個客戶端寫同一個文件的情況。
不支持hard link。
主要功能
ossfs基於s3fs構建,具有s3fs的全部功能。其中包括:

支持POSIX 文件系統的大部分功能,包括文件讀寫、目錄、鏈接操作、權限、uid/gid、以及擴展屬性(extended attributes)。
使用OSS的multipart功能上傳大文件。
支持MD5校驗,保證數據完整性。

怎麼創建的我就不說了,網上一搜一串。
在這裏插入圖片描述
然後找到Bucket的accesskey,點右上角頭像你就看到了!
在這裏插入圖片描述
下面我們需要 bucketname accesskeyid accesskeysecret 這三個參數

ossfs Linux發行版下載,這裏我就不說其他版本的下載地址了,上傳一下ubuntu16.04和ubuntu18.04兩個版本的吧,下載下來隨便放在你服務器的哪個目錄下面都可以! oaafs+nextcloud15

對於ubuntu安裝的命令:

sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi 你的文件路徑+你的文件名

對於centos5以上的安裝命令:

sudo yum localinstall 你的文件路徑+你的文件名  --nogpgcheck

對於CentOS5,安裝命令爲:

sudo yum localinstall 你的文件路徑+你的文件名 --nogpgcheck

設置bucket name 和 AccessKeyId/Secret信息,將其存放在/etc/passwd-ossfs 文件中,注意這個文件的權限必須正確設置,建議設爲640。

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

將OSS bucket mount到指定目錄。
ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

這裏我要說明一下! 防止很多不必要的錯誤發生!
這個my-mount-point指的是Bucket的地域節點,網上基本上都是用內網節點,唯一的好處就是流量免費,但是不會發現會掛載很慢甚至掛載不上去。所以我們還是用外網節點吧
在這裏插入圖片描述
所以在這裏:

ossfs  aliyun-chengdu /usr/ossfiles  -ourl=http://oss-cn-chengdu.aliyuncs.com  -ouid=33 -ogid=33 -oumask=007 -o allow_other

這裏再次注意!
/usr/ossfiles指的是掛載的指定目錄,這裏我們選擇nextcloud的數據文件目錄吧。 -ourl = *************後面接的參數, 網上以及官方文檔說的基本都是直接設置成權限777,即 ossfs aliyun-chengdu /usr/ossfiles -ourl=http://oss-cn-chengdu.aliyuncs.com -o allow_other。其實這是不對的,這樣做確實可以實現任何用戶都可以將數據存儲到nextcloud的數據文件夾裏面,但是之後你就會接收到這樣的一個錯誤
在這裏插入圖片描述
看吧!還是權限問題,將權限設置的太開放了。
早在官方文檔中就看到正確的權限設置爲770。及所有者和用戶組可以對文件進行讀取寫入和執行。但是,僅僅是直接簡單的設置成770嗎?顯然不是的?因爲如果你設置成770了?其他用戶怎麼進行寫入和讀取呢?
好的!
後來,我又繼續查閱官方文檔以及百度各種社區和論壇,解決辦法基本上都是千篇一律的雷同,可見,天下文章大家抄啊!參考一下下面的文檔,我就不多說了,實際證明顯然是有問題的。

阿里雲ossfs掛載官方文檔

最後找了很多資料終於找到了一個合適的正確的掛載方法

應用於nextclou使用oss掛載。因nextclou對附件目錄權限需使用770權限,估我們使用-oumask=007來修改默認的777權限。

ossfs  aliyun-chengdu /usr/ossfiles  -ourl=http://oss-cn-chengdu.aliyuncs.com  -ouid=33 -ogid=33 -oumask=007 -o allow_other

最後我們再一次
當然了,還有很多問題的出現!就不在這裏一一例舉了,總之,有問題就解決,花時間就是了!總會有辦法的!
在這裏插入圖片描述
在這裏插入圖片描述

現在我們來驗證一下是否掛載成功了吧!
在這裏插入圖片描述
在這裏插入圖片描述
可以看到確實是成功的!下面我們上傳一個文件測試一下唄
在這裏插入圖片描述
至此全部完成!

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