如何在Ubuntu 16.04上安装Hubzilla

Hubzilla是一个基于Web的开源平台,用于创建内部连接的网站。在Hubzilla的生态系统中,运行Hubzilla的服务器称为“集线器”,一组多个集线器称为“网格”。网格内的集线器彼此通信以共享信息,例如身份。任何人都可以使用“频道”公开或私下发布内容,该频道可以是个人,博客或论坛。它使用基于JSON的Zot框架来实现安全的分散式通信和服务。Hubzilla具有许多功能,例如社交网络讨论线程,云文件存储,日历和联系人,带有内容管理系统的网页托管,Wiki等。

先决条件

  • Vultr Ubuntu 16.04服务器实例。
  • 一个 sudo的用户
  • 指向实例的域名。

在本教程中,我们将使用 hubzilla.example.com 指向Vultr实例的域名作为域名。请确保将所有示例域名都替换为实际的示例域名。

使用指南如何更新Ubuntu 16.04更新基本系统 。系统更新后,继续安装依赖项。

安装Nginx

Nginx是运行Web应用程序的生产Web服务器。

安装Nginx。

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服务器的root用户的现有密码。您可以跳过设置新密码的步骤,因为在安装过程中已经提供了一个强密码。Y对提出的所有其他问题回答“ ”。

以root用户身份登录MySQL Shell。

mysql -u root -p

提供MariaDB root用户登录的密码。

运行以下查询为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。请确保更改 StrongPassword 为非常安全的密码。

安装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非常重要,因为如果未加密,则登录名和其他数据可能会受到损害。在本教程中,我们将使用“让我们加密”证书颁发机构获得的SSL证书。

添加Certbot存储库。

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update

安装Certbot,这是Let's Encrypt 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 ,私钥将存储为 privkey.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://hubzilla.example.com使用您喜欢的浏览器,您将看到显示“系统检查”界面的网页。您会看到所有要求都通过了系统检查。在下一个界面上,提供您先前创建的数据库详细信息。接下来,提供管理员电子邮件,网站URL和时区。Hubzilla现在已安装在您的服务器上,您可以使用在安装过程中使用的管理员电子邮件来继续创建管理员用户。

最后,您将需要设置cron以每十分钟运行一次计划的任务。

为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,您可以邀请朋友并根据需要使用该平台。



Leave a Comment

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

大數據的13個商業數據提取工具

什麼是日誌文件系統,它是如何工作的?

什麼是日誌文件系統,它是如何工作的?

我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true

技術奇點:人類文明的遙遠未來?

技術奇點:人類文明的遙遠未來?

隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

洞察 26 種大數據分析技術:第 1 部分

2021 年人工智能對醫療保健的影響

2021 年人工智能對醫療保健的影響

過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。