搭建NextCloud服務筆記-基礎篇

簡述

國外優秀雲存儲上不去或者速度奇慢(感謝GFW),國產各大雲盤已經殘廢或者自我閹割,數據安全性也歷來沒法保障。多年折騰經驗告訴我,最重要的仍是數據。硬件軟件有價,寶貴的數據和資料是無價的。本身早有折騰私有云存儲的想法,卻一直沒有找到使人滿意的方案(曾經摺騰過 Syncthing,優勢是能夠指定多個不一樣的盤同步,可是蛋疼的客戶端CPU佔用率,讓我使用一天後果斷放棄)。
偶然機會當我發現NextCloud的時候,第一眼就決定是它了(其實第一眼看到的是OwnCloud,hoho)。php

NextCloud方案,是經典雲方案OwnCloud的一個folk。聽說OwnCloud的母公司已經被一間德國公司收購了,總體方案和產品趨向於穩定與收費用戶。原項目組中的骨幹力量,以爲還有更好的功能能夠開發,因而就有了今天的主角NextCloud。html

詳細介紹可參考
https://nextcloud.com/mysql

優勢

  1. 支持多平臺客戶端,官方提供web、Windows、Linux、Mac、IOS、Android、WindowPhone全家桶套餐linux

  2. 支持link外鏈,並且可單獨設置訪問密碼、共享過時時間web

  3. 使用者操做傻瓜,簡單方便sql

  4. 支持插件擴展功能數據庫

  5. 自帶文件預覽(還沒細細研究支持那些格式,初看pdf是能夠在線預覽的)apache

缺點

  1. 不支持多盤同步編程

  2. 剛上車,也不知道有什麼坑。(聽說當年OwnCloud中文目錄或者文件中文名亂碼的問題,我如今NC上沒有碰見,徹底沒問題)vim

  3. 仍是那句話,開源的要會折騰才能上車,並且挺折騰的。

安裝步驟

簡單來講NextCloud是基於經典LAMP平臺的一個應用。網頁服務由Apache提供,網絡編程語言爲php,數據庫用Mariadb等。如下是我部署的環境清單。

基本環境

|軟件|版本|
|-|-|
|RHEL |7 update3|
|PHP|5.6.30|
|MariaDB|5.5.52|
|Apache|httpd-2.4.6|
|NextCloud|11.0.1|

  • 爲了減小麻煩,關閉了防火牆和SElinux,不贅述開啓相關端口、防火牆、布爾值等。固然,在成功實現功能後,爲了安全性,Selinux和FW仍是要加上的。畢竟是數據安全,有必要。我也計劃單獨寫一篇安全配置和高階配置的筆記。

下面就按照php、Mariadb、Apache、NextCloud的順序簡述一下安裝過程

安裝及配置PHP

1.安裝PHP

yum install php

2.安裝NextCloud所須要的PHP模塊

| 模塊 | 安裝語句 |
| - | - |
| PHP (>= 5.6, 7.0 or 7.1) | yum install php |
| PHP module ctype | 自帶 |
| PHP module dom | yum install php-xml |
| PHP module GD | yum install gd |
| PHP module iconv | 自帶 |
| PHP module JSON | 自帶 |
| PHP module libxml (Linux package libxml2 must be >=2.7.0) | 自帶 |
| PHP module mb multibyte | ftp://fr2.rpmfind.net/linux/centos/7.3.1611/os/x86_64/Packages/php-mbstring-5.4.16-42.el7.x86_64.rpm |
| PHP module posix | yum install php-posix |
| PHP module SimpleXML | 自帶 |
| PHP module XMLWriter | yum install php-xml |
| PHP module zip | 自帶 |
| PHP module zlib | 自帶 |
| PHP module curl | 自帶 |
| PHP module fileinfo | 自帶 |
| PHP module bz2 | 自帶 |
| PHP module intl | ftp://rpmfind.net/linux/centos/7.3.1611/os/x86_64/Packages/php-intl-5.4.16-42.el7.x86_64.rpm |
| PHP module mcrypt | ftp://rpmfind.net/linux/epel/7/x86_64/p/php-mcrypt-5.4.16-7.el7.x86_64.rpm
ftp://rpmfind.net/linux/epel/7/x86_64/l/libmcrypt-2.5.8-13.el7.x86_64.rpm |
| PHP module openssl | 自帶 |

3.檢查php安裝的模塊

php -m | grep -i <module_name>

4.配置EPEL源及IUS源

因爲RHEL7.3 默認自帶的php版本爲5.4.6的,而NextCloud須要是5.6以上版本。因此須要經過第三方源進行升級。

強烈建議使用EPEL源和IUS源,不要使用remi的源。CentOS官方的說法

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget https://dl.iuscommunity.org/pub/ius/stable/Redhat/7/x86_64/ius-release-1.0-14.ius.el7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
rpm -ivh ius-release-1.0-14.ius.e17.noarch.rpm
yum clean all
yum list

5.安裝yum-plugin-replace包

yum install yum-plugin-replace

6.更新PHP 5.4.6至5.6,及補充包

yum install libtool-ltdl
yum install libvpx
yum replace php --replace-with php56u
yum install php56u-gd

7.更新後動做

升級完,若是http服務已經啓動的話,須要重啓httpd服務生效

php -v    //檢查版本
php -m | grep -i <module_name>   //檢查模塊

安裝配置Mariadb

1. 安裝Mariadb Server及Client

yum install mariadb
yum install mariadb-server

2. 修改數據庫存儲位置

修改 /etc/my.conf

[mysqld]
#datadir=/var/lib/mysql              //默認位置
#socket=/var/lib/mysql/mysql.sock    //默認位置
datadir=/opt/nextcloud/nextclouddb   //自定義位置
socket=/opt/nextcloud/nextclouddb/mysql.sock  //自定義位置

3. 修改數據庫存儲位置權限

chown -R mysql:mysql /opt/nextcloud/nextclouddb

4. 修改數據庫安全基線腳本

由於改了數據庫存儲路徑後,須要同時修改相關腳本,不然默認腳本執行仍是到默認的/var下去找sock,執行會失敗。

vim /usr/bin/mysql_secure_installation

在make_config()段內添加配置

make_config() {
    echo "# mysql_secure_installation config file" >$config
    echo "[mysql]" >>$config
    echo "user=root" >>$config
    esc_pass=`basic_single_escape "$rootpass"`
    echo "password='$esc_pass'" >>$config
    echo "socket=/opt/nextcloud/nextclouddb/mysql.sock" >>$config  //添加此行
    #sed 's,^,> ,' < $config  # Debugging
}

5. 設置自啓動及啓動數據庫

systemctl enable mariadb
systemctl start mariadb

6. 執行安全腳本

mysql_secure_installation

7. 建庫、賦權限

mysql -u root -p //使用root登錄庫
CREATE DATABASE nextcloud_db;
GRANT ALL ON nextcloud_db.* TO 'nextcloud'@'%' IDENTIFIED BY 'nextcloud';  //注意必定要加 "%",不然沒法讓網絡讓任何人上傳文件
FLUSH PRIVILEGES;
exit;

8. 遠程登錄檢查

從其餘主機上遠程登錄驗證

mysql -u nextcloud -p -h IP地址

檢查庫

show databases;
use nextcloud_db;

安裝NextCloud

cd /opt/nextcloud
wget https://download.nextcloud.com/server/releases/nextcloud-11.0.1.zip
unzip nextcoud-11.0.1.zip

配置Apache

1. 安裝httpd

yum install httpd

2. 添加站點

偷了個懶,不創建虛擬站點了。直接給/var/www/html下加了個軟鏈接

chown -R  apache:apache  /opt/nextcloud/nextcloud
cd /var/www/html
ln -s /opt/nextcloud/nextcloud nextcloud

3. 設置自啓動及重啓httpd

systemctl enable httpd
systemctl start httpd

配置NextCloud

|配置項|配置內容|備註|
|-|-|-|
|NextCloud平臺管理員用戶名|自定義|-|
|NextCloud平臺管理員密碼|自定義|-|
|data folder|/var/www/html/nextcloud|根據實際填寫|
|database user |dbusername|根據以前數據庫操做時新建用戶填寫|
|database password|dbpassword|根據以前數據庫操做時新建用戶填寫|
|database name|nextcloud_db|根據以前建庫填寫|
|database host|數據庫listener的IP地址|務必寫對外通訊地址,不要寫localhost和127.0.0.1。我這兒卡了好久。|

訪問

基於以上步驟,基本就完成了基本的NextCloud功能部署。
訪問的話,能夠經過http://IP/nextcloud 來查看,並經過web方式進行用戶建立及文件的查看。
客戶端的話也比較簡單,添加url、用戶、密碼就能夠同步了。

說說遇到的坑

1. php模塊安裝

rhel的iso裏面不全,epel源也不夠用,有些是從rpmfind.net上找的。

2. php升級

rhel7.3已是rhel目前的最高版本了,但是php版本只是5.4的,不符合NC11最低的5.6要求。我的用戶沒有rhel的程序訂閱,因此只能本身找。查了下CentOS官方推薦使用IUS的源 1,才搞定。

3. NC配置

初次配置時出現了SQLSTATE[HY000][2002]No such file or directory報錯。查了下官方說法是 2
SQLSTATE[HY000] [2002] No such file or directory -> There is a problem accessing your SQLite database file in your data directory (data/nextcloud.db). Please check the permissions of this folder/file or if it exists at all. If you’re using MySQL please start your database.
不過我沒用sqlite,並且庫確定是啓着的。
後來本身琢磨才發現是NC配置數據庫接口時要配置外網IP,原覺得NC和庫都在一臺機器上填localhost解析就好了,對架構仍是有點誤解。固然庫上還要拓展數據庫寫用戶的外網訪問,加上"%"。

參考資料

NextCloud 11 下載
https://nextcloud.com/install...
NextCloud 11 客戶端下載
https://nextcloud.com/install...
NextCloud 11 安裝手冊
https://docs.nextcloud.com/se...


  1. https://www.centos.org/forums...
  2. https://docs.nextcloud.com/se...
相關文章
相關標籤/搜索