在Debian 9上使用Elgg創建一個在線社交網絡

 

在本教程中,我將向您展示如何在Debian 9上安裝和配置最新的Elgg版本,以便創建一個免費的在線社交網絡。

閱讀更多

Elgg是一個用PHP編程語言編寫的免費開源社交引擎框架軟件。 Elgg框架可以幫助個人或組織在Apache / Nginx Web服務器,PHP和MySQL / MariaDB數據庫管理系統(也稱為LAMP或LEMP堆棧)下在Linux中創建強大的社交環境。 它還具有內置功能,可以為公共或專用網絡上的文件共享,博客,社交群組或教育平台提供支持。

為了在您的場所成功部署Elgg平台,您需要滿足以下要求。

  • 由Debian 9提供支持的虛擬機或虛擬專用服務器,最好是最小安裝
  • 通過服務器控制台或通過SSH遠程管理直接訪問root帳戶或具有root權限的本地用戶
  • 服務器需要為外部網絡接口配置靜態IP地址,以便通過其公共IP地址訪問訪問者
  • 您可能還需要為您的服務器配置公共或私人域名,以便訪問者可以通過域名訪問該平台,例如www.yourdomain.com,儘管您仍然可以通過您的服務器IP地址訪問該平台。
  • 要通過電子郵件地址使用Elgg網站註冊,或使用其他平台功能,您需要在您的場所部署郵件服務器或使用公共郵件服務器。

前要求

作為第一步,使用root權限或具有root權限的用戶登錄Debian 9服務器並發出以下命令,以便使用最新的安全修補程序,軟件和內核更新來更新系統。

apt更新

升級

接下來,確保通過執行以下命令配置機器的名稱。 您應該替換此示例中使用的hostname變量以匹配您自己的域。

hostnamectl set-hostname www.socialnet.org

配置計算機主機名後,通過使用以下命令檢查hosts文件,驗證是否已正確配置主機。

hostnamectl

cat / etc / hostname

主機名-s

主機名-f

最後,為了應用計算機主機名和內核更新,請通過發出以下命令重新引導系統。

systemctl重啟

系統重新啟動後,登錄回控制台並運行以下命令安裝一些系統實用程序,以幫助我們通過Internet下載軟件並提取一些存檔文件類型

apt install wget zip unzip curl

安裝LAMP堆棧

為了在我們的服務器上部署Elgg社交網絡框架,我們需要安裝LAMP堆棧組件。 我們安裝的第一個組件是數據庫 - MariaDB--流行的MySQL數據庫的一個分支,作為數據庫後端。 應用程序將使用MariaDB數據庫來存儲用戶,會話,聯繫人,帖子,評論和其他信息。 要通過官方存儲庫在Debian 9中安裝MariaDB數據庫服務器和客戶端軟件,請在終端中發出以下命令。

apt install mariadb-server mariadb-client

數據庫安裝完成後,登錄MySQL控制台並發出以下命令以保護數據庫root帳戶,默認情況下可以訪問該帳戶而不提供密碼。

mysql -h localhost

歡迎使用MariaDB監視器。 命令以;結尾; 或g。 您的MariaDB連接ID是2 Server版本:10.1.26-MariaDB-0 + deb9u1 Debian 9.1版權所有(c)2000,2017,Oracle,MariaDB Corporation Ab等。 輸入'help;' 或'h'尋求幫助。 輸入“c”清除當前輸入語句。

MariaDB [(none)]>使用mysql;

讀取表信息以完成表名和列名您可以關閉此功能,以便在更改了-A數據庫的情況下更快地啟動

MariaDB [mysql]>更新用戶集插件=”其中user ='root';

查詢OK,受影響的1行(0.00秒)匹配的行數:1已更改:1警告:0

MariaDB [mysql]>刷新權限;

查詢確定,受影響的0的行(0.00秒)

MariaDB [mysql]>退出

再見

完成上述步驟後,執行 mysql_secure_installation Debian提供的腳本拉伸存儲庫,以進一步保護MariaDB服務器並為數據庫root帳戶設置強密碼。 主要是,在腳本的所有問題上回答“是”,例如:更改MySQL root密碼,刪除匿名用戶,禁用遠程root登錄和刪除測試數據庫,如下面的腳本摘錄所示。

mysql_secure_installation

注意:建議在生產中使用所有MariaDB服務器運行此腳本的所有部分! 請仔細閱讀每一步! 為了登錄MariaDB以保護它,我們需要root用戶的當前密碼。 如果您剛剛安裝了MariaDB,並且尚未設置root密碼,則密碼將為空,因此您只需按Enter鍵即可。 輸入root的當前密碼(輸入none):確定,成功使用密碼,繼續...設置root密碼可確保沒有適當的授權,任何人都無法登錄MariaDB root用戶。 您已經設置了root密碼,因此您可以安全地回答'n'。 更改root密碼? [是/否] y新密碼:重新輸入新密碼:密碼更新成功! 重新加載權限表......成功! 默認情況下,MariaDB安裝具有匿名用戶,允許任何人登錄MariaDB而無需為其創建用戶帳戶。 這僅用於測試,並使安裝更順暢。 您應該在進入生產環境之前將其刪除。 刪除匿名用戶? [是/否]你......成功! 通常,只允許root用戶從'localhost'連接。 這可以確保有人無法猜測來自網絡的root密碼。 禁止遠程登錄? [是/否]你......成功! 默認情況下,MariaDB附帶一個名為“test”的數據庫,任何人都可以訪問。 這也僅用於測試,應在進入生產環境之前刪除。 刪除測試數據庫並訪問它? [是/否] y  - 刪除測試數據庫......成功!  - 刪除測試數據庫的權限...... ...成功! 重新加載權限表將確保到目前為止所做的所有更改都將立即生效。 現在重新加載權限表? [是/否]你......成功! 清理......一切都完成了! 如果您已完成上述所有步驟,那麼您的MariaDB安裝現在應該是安全的。 感謝您使用MariaDB!

要測試MariaDB安全性,請嘗試從沒有root密碼的控制台登錄數據庫。 如果沒有為root帳戶提供密碼,則應拒絕訪問數據庫,如以下命令摘錄所示:

mysql -h localhost -u root

錯誤1045(28000):用戶'root'@'localhost'拒絕訪問(使用密碼:NO)

如果提供了密碼,則應將登錄過程授予MySQL控制台,如命令示例所示:

mysql -h localhost -u root -p

輸入密碼:歡迎使用MariaDB監視器。 命令以;結尾; 或g。 您的MariaDB連接ID是15服務器版本:10.1.26-MariaDB-0 + deb9u1 Debian 9.1版權所有(c)2000、2017,Oracle,MariaDB Corporation Ab等。 輸入“幫助;” 或“ h”尋求幫助。 鍵入“ c”以清除當前輸入語句。 MariaDB [(無)]>退出再見

在安裝並保護MariaDB數據庫之後,是時候安裝部署Elgg應用程序所需的下一個組件:Apache HTTP服務器和PHP編程語言處理網關。 為了安裝Apache Web服務器和PHP解釋器以及服務器將通過其執行應用程序腳本所需的所有PHP模塊,請在服務器控制台中執行以下命令。

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-mbstring php7.0-xml php7.0-mysql

接下來,通過更改以下PHP變量來打開並修改PHP默認配置文件。 打開 /etc/php/7.0/apache2/php.ini 用於編輯的文件並更改以下行。 最初,備份PHP配置文件。

cp /etc/php/7.0/apache2/php.ini{,.backup}

nano /etc/php/7.0/apache2/php.ini

搜索,編輯和更改以下變量 php.ini中 配置文件:

file_uploads = On default_charset = UTF-8 memory_limit = 128M upload_max_filesize = 100M date.timezone = Europe / London

提高 upload_max_file_size 適合的變量,以便為您的應用程序支持大型文件附件。 另外,更改PHP 時區 通過查看PHP文檔在以下鏈接提供的時區列表,設置系統的地理位置 http://php.net/manual/en/timezones.php

為PHP7啟用OPCache插件,以便通過在PHP解釋器配置文件底部附加以下OPCache設置來提高網站加載速度, [opcache] 聲明,詳情如下:

opcache.enable = 1 opcache.enable_cli = 1 opcache.interned_strings_buffer = 8 opcache.max_accelerated_files = 10000 opcache.memory_consumption = 128 opcache.save_comments = 1 opcache.revalidate_freq = 1

完成上述所有更改後,保存並關閉 php.ini中 配置文件,通過發出以下命令重新啟動Apache Web服務器以應用PHP解釋器更改。

systemctl重啟apache2

配置防火牆

要添加所需的UFW防火牆應用程序規則以允許HTTP流量通過系統防火牆,請在服務器控制台中發出以下命令。

ufw允許WWW

or

ufw允許80 / tcp

如果您通過SSH遠程連接到服務器,請添加以下規則以在防火牆中打開SSH端口22。

ufw允許22 / tcp

如果您通過Debian服務器管理防火牆規則 iptables的 原始規則,添加以下規則以允許端口80和22入站流量通過防火牆,以便外部客戶端可以訪問該應用程序。 僅當您通過SSH遠程連接到服務器時才打開端口22 / TCP。

apt-get install -y iptables-persistent

iptables -I INPUT -p tcp -destination-port 80 -j ACCEPT

iptables -I INPUT -p tcp -destination-port 22 -j ACCEPT

netfilter-persistent保存

systemctl重啟netfilter-persistent

systemctl status netfilter-persistent

systemctl enable netfilter-persistent.service

配置Apache Web服務器

在下一步中,通過發出以下命令,啟用通過.htacccess文件和保護HTTP事務所需的TLS模塊即時更改Web服務器配置所需的Apache重寫模塊。

a2enmod重寫ssl

a2ensite default-ssl.conf

接下來,打開Apache默認SSL站點配置文件,使用您喜歡的文本編輯器進行編輯,然後添加以下URL重寫規則 的DocumentRoot 指示:

nano /etc/apache2/sites-enabled/default-ssl.conf

SSL站點配置文件摘錄:

選項+ FollowSymlinks AllowOverride全部需要全部授予

此外,將下面顯示的更改更改為VirtualHost行,使其看起來像下面的摘錄中顯示的內容:


通過打開將相同的更改添加到Apache默認配置文件 /etc/apache2/sites-enabled/000-default.conf 文件進行編輯。 之後插入以下代碼行 的DocumentRoot 語句如下例所示。

選項+ FollowSymlinks AllowOverride全部需要全部授予

最後,重新啟動Apache守護程序以應用到目前為止配置的所有規則,並通過HTTP協議訪問您的域或服務器IP地址。

systemctl重啟apache2

由於您在安裝時使用Apache發出的自動自簽名證書對,因此對於瀏覽器不受信任的證書,應在瀏覽器中顯示錯誤警告。 接受警告以接受不受信任的證書並繼續重定向到Apache默認網頁,如下圖所示。

https://yourdomain.tld

SSL警告

Apache默認頁面

為了允許HTTPS流量通過UFW防火牆,您應該通過發出以下命令添加以下規則以允許傳入的443 / TCP流量。

允許'WWW Full'

or

ufw允許443 / tcp

If iptables的 是為在網絡級別保護Debian系統而安裝的默認防火牆應用程序,添加以下規則以允許防火牆中的端口443入站流量,以便訪問者可以瀏覽您的域名。

iptables -I INPUT -p tcp -destination-port 443 -j ACCEPT

netfilter-persistent保存

systemctl重啟netfilter-persistent

systemctl status netfilter-persistent

最後,通過執行以下命令在Web服務器文檔根路徑中創建PHP信息文件。

迴聲'| 發球區/var/www/html/info.php

通過以下URL打開瀏覽器訪問PHP info腳本文件:

https://yourdomain.tld/info.php

驗證PHP設置並向下滾動到 日期 用於檢查PHP時區配置的配置。

PHP日期設置

安裝Elgg軟件

要在您的系統中部署Elgg社交網絡平台,請首先訪問Elgg官方下載頁面 https://elgg.org/about/download 並通過發出以下命令獲取最新的zip包壓縮存檔。

wget -O elgg-2.3.5.zip https://elgg.org/getelgg.php?forward=elgg-2.3.5.zip

ls

接下來,將Elgg zip存檔文件解壓縮到當前工作目錄,並通過發出以下命令列出解壓縮的文件。

解壓縮elgg-2.3.5.zip

ls -al elgg-2.3.5

在下一步中,通過發出以下命令,將Apache Web服務器安裝的默認index.html文件刪除到webroot路徑和之前創建的info.php文件。

rm /var/www/html/index.html

rm /var/www/html/info.php

接下來,複製提取的Elgg目錄的所有內容,包括隱藏的內容 的。htaccess 通過發出以下命令將文件放入Web服務器文檔根路徑中。

cp -rf elgg-2.3.5 / * / var / www / html /

cp elgg-2.3.5 / .htaccess / var / www / html /

將Elgg安裝文件複製到域webroot路徑後,創建一個名為的目錄 數據 對於Elgg應用程序,通過發出以下命令,在您的域webroot上升一級。 Elgg應用程序將使用該數據目錄來存儲各種用戶相關文件。 這個 數據 可以在服務器文件系統層次結構中的任何位置創建目錄,並註釋必須向Apache運行時用戶授予對此目錄的寫入權限。

mkdir / var / www / data

chown www-data:www-data / var / www / data

接下來,執行以下命令,以便為Apache運行時用戶授予對Web根路徑的完全寫入權限。 使用 ls 命令列出應用程序中安裝的文件的權限 在/ var / www / html等/ 目錄。

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

ls -al / var / www / html /

在通過Web瀏覽器開始安裝過程之前,通過發出以下命令,登錄MariaDB數據庫控制台並創建Elgg數據庫和具有用於管理此數據庫的密碼的用戶。 確保相應地替換本教程中使用的數據庫名稱,用戶和密碼。

mysql -u root -p

歡迎使用MariaDB監視器。 命令以;結尾; 或g。 您的MariaDB連接ID是2 Server版本:10.1.26-MariaDB-0 + deb9u1 Debian 9.1版權所有(c)2000,2017,Oracle,MariaDB Corporation Ab等。 輸入'help;' 或'h'尋求幫助。 輸入“c”清除當前輸入語句。

MariaDB [(無)]>創建數據庫elgg_db;

查詢OK,1行受影響(0.00秒)

MariaDB [[無]]>將elgg_db。*上的所有特權授予由“ password1234”標識的“ elgg_user” @“ localhost”;

查詢確定,受影響的0的行(0.00秒)

MariaDB [(無)]>刷新權限;

查詢確定,受影響的0的行(0.00秒)

MariaDB [(無)]>退出

再見 

現在,讓我們繼續安裝Elgg。 首先打開瀏覽器並通過HTTPS協議導航到服務器的IP地址或域名或服務器FQDN。

https://yourdomain.tld

在歡迎屏幕上,安裝程序將顯示一條介紹消息,通知您Elgg平台軟件需要執行六個步驟才能安裝應用程序。 只需按下Next按鈕即可開始安裝過程,如下面的屏幕截圖所示。

歡迎來到Elgg

接下來,Elgg安裝程序將解析您的系統並檢查是否滿足安裝應用程序的PHP和Web服務器要求。 單擊“下一步”按鈕,繼續安裝過程,如下面的屏幕截圖所示。

Elgg要求

在下一個安裝屏幕中,通過提供MySQL數據庫名稱,服務器主機來配置MySQL數據庫設置(使用 本地 如果數據庫安裝在同一節點上),則先前為安裝Elgg創建的數據庫用戶名和密碼。 使用數據庫表前綴作為默認值,或者如果要為應用程序添加額外的安全層,請更改它。 最後,選​​擇應用程序的默認時區設置,然後單擊“下一步”按鈕移動到下一個安裝屏幕。 使用以下屏幕截圖作為配置此步驟的指南。

數據庫設置

在下一步中,通過添加站點名稱和用戶通信的電子郵件地址來配置Elgg網站。 此外,如果未正確檢測到站點URL地址,請更改站點URL地址並添加網站的完整路徑 數據 目錄。 最後,為新手設置默認網站訪問級別,然後單擊“下一步”按鈕繼續安裝過程。

在Elgg中配置站點

接下來,通過在顯示名稱字段中填入管理員帳戶的名稱,為您的網站創建第一個管理員帳戶。 此外,添加管理員帳戶電子郵件地址,用戶名和密碼,如下圖所示。 完成此步驟後,單擊“下一步”按鈕繼續並完成安裝過程。

創建管理員帳戶

安裝過程完成後,點擊“轉到站點”按鈕,以便重定向到Elgg管理儀表板。

Elgg安裝完成

登錄Elgg儀表板後,從右側面板導航至Configure-> Plugins菜單,然後通過單擊選定插件的Activate按鈕開始啟用所需的Elgg插件。

Elgg管理員小組

您還可以通過HTTPS協議導航到您的服務器IP地址或域名來訪問Elgg應用程序。 在安裝過程中使用為admin帳戶配置的憑據,以便登錄Elgg社交引擎應用程序,如下面的屏幕截圖所示。

https://yourdomain.tld

Elgg社交網絡

最後一步,如果您想強制訪問者通過HTTPS協議安全地瀏覽Elgg網站,該協議會加密服務器和客戶端瀏覽器之間的流量,請返回Debian服務器控制台並編輯 的。htaccess 文件位於您的網站文檔根路徑中,通過發出以下命令。

納米/var/www/html/.htaccess

在.htaccess文件中,搜索 並在之後添加以下規則 RewriteEngine敘述在 語句,以便自動將所有域流量重定向到HTTPS。

RewriteEngine On#重定向到HTTPS RewriteCond%{HTTPS} off RewriteRule(。*)https://%{SERVER_NAME} / $ 1 [R,L]

在這裡,您還可以為您的網站更改一些PHP變量。 搜索 指令並在此行下添加您自己的PHP設置,例如:增加域的文件上載大小或禁用某些服務器默認的PHP配置,如下面的摘錄所示:

#更改Web服務器PHP設置php_value session.use_trans_sid 0 php_value register_globals 1 php_value upload_max_filesize 100M php_value post_max_size 100M

為了讓Elgg應用程序發送排隊通知,在數據庫中輪換系統日誌並在數據庫中收集垃圾(通過刪除不再需要的條目來壓縮數據庫),使用以下配置創建crontab文件。 此外,此crontab作業必須由Apache運行時用戶擁有和執行。

crontab -u www-data -e

Crontab文件摘錄。 每個作業的cron任務輸出將被丟棄到Linux 的/ dev / null的 黑洞文件。 替換域名變量($ ELGG)相應地在這個腳本中使用。

GET =“ curl -k” ELGG =“ https://www.socialnet.org/” OUT =“> / dev / null 2>&1” * * * * * $ GET $ {ELGG} cron / minute / $ { OUT} * / 5 * * * * $ GET $ {ELGG} cron /五分鐘/ $ {OUT} 15,30,45,59 * * * * $ GET $ {ELGG} cron / 30,59minmin / $ {OUT} XNUMX, XNUMX * * * * $ GET $ {ELGG} cron / halfhour / $ {OUT} @hourly $ GET $ {ELGG} cron / hourly / $ {OUT} @daily $ GET $ {ELGG} cron / daily / $ {OUT } @每週$ GET $ {ELGG} cron /每週/ $ {OUT} @每月$ GET $ {ELGG} cron /每月/ $ {OUT} @每年$ GET $ {ELGG} cron /每年/ $ {OUT} @重新啟動$ GET $ {ELGG} cron / reboot / $ {OUT}

恭喜! Elgg社交媒體平台已在Debian 9服務器上成功安裝和配置。 如果您使用註冊的公共域名將Elgg應用程序公開給面向公眾的訪問者,您應該考慮購買由可信證書頒發機構頒發的SSL證書,或者從Let's Encrypt CA獲取免費證書對。

要進一步管理Elgg應用程序,請訪問以下地址的文檔頁面: http://learn.elgg.org/en/stable/index.html

 

資源

相關文章