在Ubuntu 16.04上使用Apache,MariaDB和PHP7設置NextCloud Server

NextCloud 11已經發布! 它是ownCloud的替代產品。 在本教程中,我們將研究如何在具有Apache,MariaDB和PHP7的Ubuntu 16.04 VPS上設置NextCloud個人雲存儲。

NextCloud和ownCloud之間的區別

NextCloud是開源ownCloud的分支。 主要區別在於:

  • 它是100%開源的。 包括企業部分在內的所有功能都是開源的。 NextCloud收取支持費用,而不是銷售企業產品。
  • 它比ownCloud更重視社區。

先決條件

要遵循本教程,您將需要:

  • Ubuntu 16.04服務器。 通過此註冊鏈接,您可以在Digital Ocean VPS上獲得10美元的免費信用。
  • 域名
  • 在Ubuntu 16.04上安裝的LAMP堆棧。 您可以查看此易於遵循的指南。 在Ubuntu 16.04 LTS上安裝Apache,MariaDB和PHP7(LAMP堆棧)

完成上述先決條件後,請回到此處繼續閱讀。

步驟1:在Ubuntu 16.04上安裝NextCloud 11 Server

將NextCloud服務器zip存檔下載到您的服務器上。 在撰寫本文時,最新的穩定版本是11.0.1。 您可能需要更改版本號。 去 https://nextcloud.com/install 然後單擊下載按鈕以簽出最新版本。

wget https://download.nextcloud.com/server/releases/nextcloud-11.0.1.zip

提取它。

sudo apt install unzip

unzip nextcloud-11.0.1.zip

新目錄名為 nextcloud 將在當前工作目錄中創建。 將新目錄及其所有內容複製到Apache服務器的文檔根目錄。

sudo cp -r nextcloud /var/www/

然後,您還需要授予Apache用戶(www-data)的寫許可權。

sudo chown www-data:www-data /var/www/nextcloud/ -R

步驟2:在MariaDB中創建數據庫和用戶

使用以下命令登錄MariaDB數據庫服務器:

mysql -u root -p

然後為Nextcloud創建數據庫。 本教程將數據庫命名為nextcloud。 您可以使用任何喜歡的名稱。

create database nextcloud;

創建數據庫用戶。 同樣,您可以為該用戶使用您的首選名稱。 用您的首選密碼替換您的密碼。

create user [email protected] identified by 'your-password';

授予該用戶所有的權限 nextcloud 數據庫。

grant all privileges on nextcloud.* to [email protected] identified by 'your-password';

刷新特權並退出。

flush privileges;

exit;

步驟3:在MariaDB中啟用二進制日誌記錄

編輯mysqld配置文件。

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

在下面添加以下三行 [mysqld] 部分。

log-bin        = /var/log/mysql/mariadb-bin
log-bin-index  = /var/log/mysql/mariadb-bin.index
binlog_format  = mixed

二進制日誌的格式必須混合。 保存並關閉文件。 然後重新啟動MariaDB服務。

sudo systemctl restart mysql

現在,在MariaDB中啟用了二進制日誌。

步驟4:為Nextcloud創建Apache虛擬主機文件

我們將創建一個 nextcloud.conf/etc/apache2/sites-available 目錄。

sudo nano /etc/apache2/sites-available/nextcloud.conf

將以下行複製並粘貼到文件中。 將紅色文本替換為您的實際域名。 您還需要將域名指向DNS中Ubuntu服務器的IP地址。

<VirtualHost *:80>
 DocumentRoot "/var/www/nextcloud"
 ServerName nextcloud.your-domain.com

 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined

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

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

 SetEnv HOME /var/www/nextcloud
 SetEnv HTTP_HOME /var/www/nextcloud
 Satisfy Any

</Directory>

</VirtualHost>

保存並關閉文件。 然後創建一個指向/ etc / apache2 / sites-enabled /的符號鏈接

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

啟用以下Apache模塊。

sudo a2enmod rewrite headers env dir mime setenvif ssl

安裝所需的PHP模塊

sudo apt install php7.0-common php7.0-gd php7.0-json php7.0-curl  php7.0-zip php7.0-xml php7.0-mbstring

重新啟動Apache,以便加載上述Apache和PHP模塊。

sudo systemctl restart apache2

步驟5:在Web瀏覽器中完成安裝

現在,在您的Web瀏覽器中,輸入您的域名。 例如

nextcloud.your-domain.com

系統將要求您創建一個管理員帳戶。 數據文件夾是存儲用戶文件的位置。 為了安全起見,最好將數據目錄放置在Nextcloud Web根目錄之外,例如 / var / www / nextcloud-data。 可以使用以下命令創建:

sudo mkdir /var/www/nextcloud-data/

然後確保Apache用戶(www-data)具有對數據目錄的寫入權限。

sudo chown www-data:www-data /var/www/nextcloud-data -R

如果您擔心用戶名和密碼嗅探,則可以首先啟用HTTPS(請參閱以下步驟),然後輸入用戶名,密碼和數據庫詳細信息。

然後輸入您先前創建的數據庫用戶名,數據庫名稱和密碼,以將Nextcloud連接到MariaDB數據庫。

nextcloud Ubuntu 16.04

完成後,您將看到Nextcloud的Web界面。 恭喜! 現在,您可以開始將其用作私有雲存儲。

Nextcloud燈泡

使用HTTPS保護它

如果您在本地計算機上安裝了nextCloud,請跳過此步驟。

HTTPS幫助我們防止中間人攻擊和密碼嗅探。 我們可以從Let’s Encrypt CA獲得免費的TLS / SSL證書。 首先,讓我們安裝certbot客戶端。 客戶端仍被命名 letsnecrypt 在Ubuntu存儲庫中。 以下命令將安裝客戶端和apache插件。

sudo apt install letsencrypt python-letsencrypt-apache

現在發出以下命令以獲得免費的TLS / SSL證書。 將紅色文本替換為您的實際數據。

sudo letsencrypt --apache --agree-tos --email your-email-address -d nextcloud.your-domain.com

系統會要求您選擇簡單或安全。 建議選擇安全,以便將所有http請求都重定向到https。

讓我們加密apache

按下“確定”按鈕後,將獲得免費的TLS / SSL證書並將其安裝在Apache服務器上。

讓我們自動加密apache

現在再次訪問您的Nextcloud網站。 您會看到它已自動重定向到https。

默認情況下,Apache SSL配置未添加HSTS安全標頭。 要添加HSTS標頭,請編輯SSL配置文件。

sudo nano /etc/apache2/sites-available/nextcloud-le-ssl.conf

將以下行粘貼到文件中 SSLCertificateKeyFile 線。

<IfModule mod_headers.c>
     Header always set Strict-Transport-Security "max-age=15768000; preload"
 </IfModule>

保存並關閉文件。 然後重新加載Apache。

sudo systemctl reload apache2

Linux桌面客戶端

您可以使用以下命令從官方PPA在Ubuntu 16.04 / Ubuntu 17.10上安裝NextCloud桌面客戶端。

sudo add-apt-repository ppa:nextcloud-devs/client

sudo apt update

sudo apt install nextcloud-client

如果您使用的是Gnome桌面環境,則只需轉到 設定值 > 網上賬戶 > NextCloud(ownCloud) 進行設置。 您還可以通過WebDAV輕鬆訪問Nextcloud文件。

為nextCloud配置Redis緩存

注意:Redis緩存是可選的。 您可以安全地跳過此部分。

如果轉到nextCloud管理頁面,則可能會看到以下警告:

No memory cache has been configured. To enhance your performance please configure a memcache if available.

我們將通過使用Redis為nextCloud啟用內存緩存。 從Ubuntu 16.04存儲庫安裝Redis服務器。

sudo apt install redis-server

您可以使用以下方法檢查版本:

redis-server -v

樣本輸出:

Redis server v=3.0.6 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=687a2a319020fa42

現在我們可以檢查redis服務器是否正在運行。

systemctl status redis

ubuntu-16.04-redis-server-nextcloud緩存

從上面的屏幕截圖中,我們可以看到它正在運行並且已啟用自動啟動。 如果由於某種原因它沒有運行,請執行以下命令:

sudo systemctl start redis-server

如果未啟用引導時自動啟動功能,則可以使用以下命令啟用它:

sudo systemctl enable redis-server

現在,讓我們將Redis配置為nextCloud的緩存。 安裝用於與Redis接口的PHP擴展。

sudo apt install php-redis

檢查擴展名是否啟用。

php --ri redis

ubuntu 16.04 php7 redis擴展

我們可以看到Redis擴展已啟用,版本為2.2.8,高於nextCloud要求的2.2.5+。 您可能需要通過重新啟動Apache來手動啟用Redis擴展

sudo systemctl restart apache2

或通過運行以下命令:

sudo phpenmod redis

接下來,編輯nextCloud配置文件。

sudo nano /var/www/nextcloud/config/config.php

將以下行添加到 ); 線。

'memcache.distributed' => 'OCMemcacheRedis',
'memcache.local' => 'OCMemcacheRedis',
'memcache.locking' => 'OCMemcacheRedis',
'redis' => array(
     'host' => 'localhost',
     'port' => 6379,
     ),

Ubuntu 16.04 Redis緩存nextcloud

保存並關閉文件。 現在再次進入nextCloud管理頁面,有關內存緩存的警告應該消失了。

恭喜! 您已使用Apache,MariaDB和PHP7在Ubuntu 16.04 VPS上成功設置NextCloud個人雲存儲。

總是歡迎提出意見,問題或建議。 與往常一樣,如果您發現此帖子有用,請訂閱我們的免費新聞通訊。 您也可以在Google +,Twitter或喜歡我們的Facebook頁面上關注我們。

Sidebar