Hubzilla是一個基於web的開源平臺,用於建立內部鏈接的網站。在Hubzilla的生態系統中,運行Hubzilla的服務器稱爲「集線器」,一組多個集線器稱爲「網格」。網格中的集線器相互通訊以共享信息,如身份。任何人均可以經過一個「渠道」公開或私下發布內容,這個渠道能夠是一我的、一個博客或一個論壇。它使用一個基於JSON的Zot框架來實現安全分散的通訊和服務。Hubzilla有不少功能,好比社交網絡討論線程、雲文件存儲、日曆和聯繫人、帶有內容管理系統的web頁面託管、wiki等等。php
先決條件css
一個Vultr Ubuntu 16.04服務器實例。html
sudo用戶。node
指向實例的域名。mysql
對於本教程,咱們將使用hubzilla.example.com做爲指向Vultr實例的域名。請確保用實際域名替換全部出現的示例域名。nginx
使用如何更新Ubuntu 16.04的指南更新你的基本系統。系統更新後,繼續安裝依賴項。git
安裝Nginxgithub
Nginx是一個用於運行web應用程序的生產web服務器。web
安裝Nginx。sql
sudo apt -y install nginx
啓動Nginx並使它在啓動時自動運行。
sudo systemctl start nginx
sudo systemctl enable nginx
安裝PHP 7.1
Hubzilla支持超過5.6的PHP版本。咱們將安裝PHP 7.1以確保最高速度、安全性和兼容性。爲PHP 7.1添加Ubuntu存儲庫。
sudo add-apt-repository --yes ppa:ondrej/php
sudo apt update
安裝PHP版本7.1以及Hubzilla所需的模塊。
sudo apt -y install php7.1 php7.1-mysql php7.1-curl php7.1-json php7.1-cli php7.1-gd php7.1-xml php7.1-mbstring php7.1-fpm imagemagick php7.1-zip
編輯PHP配置文件。
sudo nano /etc/php/7.1/fpm/php.ini
找到下面的線。取消註釋並設置適當的時區。
date.timezone = Asia/Kolkata
;Replace "Asia/Kolkata" with your appropriate time zone
爲下一個配置設置適當的內存限制。將其設置爲-1將爲腳本提供無限的可用內存。另外,增長文件上傳的最大限制。
memory_limit = -1
upload_max_filesize = 100M
post_max_size = 100M
接下來,找到下面的行,並在取消註釋後將其值設置爲0。
cgi.fix_pathinfo=0
啓動php7.1-fpm,使其在啓動時自動啓動。
sudo systemctl restart php7.1-fpm
sudo systemctl enable php7.1-fpm
建立會話目錄並提供寫權限。
sudo mkdir /var/lib/php/session
sudo chmod -R 777 /var/lib/php/session
如今,繼續安裝MariaDB。
安裝MariaDB
MariaDB是MySQL的一個分支。將MariaDB存儲庫添加到系統中,由於默認的Ubuntu存儲庫包含了MariaDB的舊版本。
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.nodesdirect.com/mariadb/repo/10.2/ubuntu xenial main'
sudo apt update
安裝MariaDB。
sudo apt -y install mariadb-server
在請求時爲MariaDB根用戶提供強密碼。啓動MariaDB並使其可以在啓動時自動啓動。
sudo systemctl start mariadb
sudo systemctl enable mariadb
在配置數據庫以前,須要保護MariaDB。你能夠經過運行
mysql_secure_installation
腳本
sudo mysql_secure_installation
您將被要求輸入當前的MariaDB根密碼。提供安裝過程當中設置的密碼。將詢問您是否但願更改MariaDB服務器的根用戶的現有密碼。您能夠跳過設置新密碼,由於在安裝過程當中已經提供了強密碼。對全部其餘問題回答「Y」。
以root身份登陸到MySQL shell。
mysql -u root -p
爲MariaDB根用戶提供登陸密碼。
運行如下查詢來爲Hubzilla安裝建立數據庫和數據庫用戶。
CREATE DATABASE hubzilla_data;
CREATE USER 'hubzilla_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON hubzilla_data.* TO 'hubzilla_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
您能夠根據本身的選擇替換數據庫名稱hubzilla_data和用戶名hubzilla_user。請確保將strong password更改成很是強的密碼。
安裝Hubzilla
安裝Git。Git須要從Github克隆Hubzilla存儲庫。
sudo apt -y install git
切換到web根目錄並克隆Hubzilla存儲庫。
cd /var/www
sudo git clone https://github.com/redmatrix/hubzilla.git hubzilla
建立一個新目錄來存儲Hubzilla數據。
cd hubzilla
sudo mkdir -p "store/[data]/smarty3"
sudo chmod -R 777 store
克隆並安裝Hubzilla插件。
sudo util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons
sudo util/update_addon_repo hzaddons
爲Nginx用戶提供目錄和文件的全部權。
sudo chown -R www-data:www-data /var/www/hubzilla
建立一個虛擬主機
在Hubzilla站點上安裝SSL是很重要的,由於若是不加密,登陸和其餘數據可能會遭到破壞。在本教程中,咱們將使用Let's Encrypt certificate authority得到的SSL證書。
添加Certbot庫。
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
安裝Certbot,這是咱們加密CA的客戶機應用程序。
sudo apt -y install certbot
注意:要從Let's Encrypt CA中得到證書,必須將要生成證書的域指向服務器。若是沒有,則對域的DNS記錄進行必要的更改,並等待DNS傳播,而後再次發出證書請求。Certbot在提供證書以前檢查域權限。
生成SSL證書。
sudo certbot certonly --webroot -w /var/www/html -d hubzilla.example.com
生成的證書可能存儲在/etc/letsencrypt/live/hubzilla.example.com/中。SSL證書將存儲爲fullchain。pem和私鑰將存儲爲private - key.pem。
讓咱們加密證書在90天內過時,所以建議使用Cron做業設置證書的自動更新。
打開cron做業文件。
sudo crontab -e
在文件末尾添加如下行。
30 5 * * * /usr/bin/certbot renew --quiet
以上cron做業天天早上5:30開始運行。若是證書到期,將自動續期。
爲Hubzilla服務器建立一個新的配置文件。
sudo nano /etc/nginx/sites-available/hubzilla
填充文件。
server {
listen 80;
server_name hubzilla.example.com;
index index.php;
root /var/www/hubzilla;
rewrite ^ https://hubzilla.example.com$request_uri? permanent;
}
server {
listen 443 ssl;
server_name hubzilla.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/hubzilla.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hubzilla.example.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
ssl_prefer_server_ciphers on;
fastcgi_param HTTPS on;
index index.php;
charset utf-8;
root /var/www/hubzilla;
access_log /var/log/nginx/hubzilla.log;
client_max_body_size 20m;
client_body_buffer_size 128k;
location / {
if ($is_args != "") {
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
rewrite ^/(.*) /index.php?q=$uri last;
}
location ^~ /.well-known/ {
allow all;
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|map|ttf|woff|woff2|svg)$ {
expires 30d;
try_files $uri /index.php?q=$uri&$args;
}
location ~* \.(tpl|md|tgz|log|out)$ {
deny all;
}
location ~* \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\. {
deny all;
}
location ~ /store {
deny all;
}
}
激活配置。
sudo ln -s /etc/nginx/sites-available/hubzilla /etc/nginx/sites-enabled/hubzilla
測試Nginx web服務器配置。
sudo nginx -t
您將看到如下輸出。
user@vultr:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
若是在配置中沒有看到錯誤,那麼從新啓動Nginx,以便新的配置可以生效。
sudo systemctl restart nginx
結束
使用您最喜歡的瀏覽器導航到 https://www.laomulu.com/huodong/ ,您將看到顯示「系統檢查」界面的網頁。您將看到每一個需求都經過了系統檢查。在下一個接口上,提供您先前建立的數據庫詳細信息。接下來,提供管理員電子郵件、網站URL和時區。Hubzilla如今已安裝在您的服務器上,您能夠繼續使用安裝期間使用的管理員電子郵件建立管理員用戶。
最後,您須要設置cron,以便每10分鐘運行一次預約的任務。
爲cron做業建立一個新文件。
sudo nano /etc/cron.d/hubzilla
用如下內容填充文件。
*/10 * * * * www-data cd /var/www/hubzilla; /usr/bin/php Zotlabs/Daemon/Master.php Cron
從新啓動cron服務。
sudo systemctl restart cron
若是但願建立一組本地文檔,請運行如下命令。
cd /var/www/hubzilla
util/importdoc
sudo chown www-data:www-data -R /var/www/hubzilla
如今已經安裝並配置了Hubzilla,您能夠邀請您的朋友並根據須要使用該平臺。