一、搭建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了?其他用戶怎麼進行寫入和讀取呢?
好的!
後來,我又繼續查閱官方文檔以及百度各種社區和論壇,解決辦法基本上都是千篇一律的雷同,可見,天下文章大家抄啊!參考一下下面的文檔,我就不多說了,實際證明顯然是有問題的。
最後找了很多資料終於找到了一個合適的正確的掛載方法
應用於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
最後我們再一次
當然了,還有很多問題的出現!就不在這裏一一例舉了,總之,有問題就解決,花時間就是了!總會有辦法的!
現在我們來驗證一下是否掛載成功了吧!
可以看到確實是成功的!下面我們上傳一個文件測試一下唄
至此全部完成!