如何在Ubuntu 16.04上安装Hubzilla

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,您能够邀请您的朋友并根据须要使用该平台。

相关文章
相关标签/搜索