帮酷LOGO
0 0 评论
文章标签:Ubuntu  

Hubzilla是一个开源的基于Web的平台,用于创建内部连接的网站,它使用基于JSON的ZOT框架来实现安全的分散通信和服务,Hubzilla有很多功能,比如,社交网络讨论,论坛,云文件存储、日历和联系人、带有内容管理系统的网页托管,wiki等等。

前提条件

  • Ubuntu 16.04服务器实例,
  • sudo用户 ,
  • 指向实例的域名,

对于本教程,我们将使用hubzilla.example.com作为指向实例的域名,请确保将例子域名的所有匹配项替换为实际名称。

使用向导更新基本系统如何Update 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支持56上的PHP版本,我们将安装PHP 7.1以确保最高速度,安全性和兼容性,添加用于PHP 7.1的Ubuntu库。


sudo add-apt-repository --yes ppa:ondrej/php
sudo apt update

安装PHP 71版以及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的fork ,将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 root用户提供一个安全密码,启动MariaDB,并且使它在引导时自动启动。


sudo systemctl start mariadb
sudo systemctl enable mariadb

在配置数据库之前,你需要安全地保护MariaDB ,你可以通过运行mysql_secure_installation脚本来保护它。


sudo mysql_secure_installation

你将被要求输入当前MariaDB root密码,提供安装过程中设置的密码,询问你是否希望更改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


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证书颁发机构获得的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

Let's Encrypt证书在90天内到期,因此建议使用Cron作业设置证书的自动续订。

打开cron作业文件。

 
sudo crontab -e

 

在文件的末尾添加以下行。


30 5 * * * /usr/bin/certbot renew --quiet

上面的5:30作业每天在AM运行,如果证书到期到期,将自动续订该证书。

为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,你将看到显示"system check"界面的网页,你会看到每个需求都通过了系统检查,在下一个界面上,提供你先前创建的数据库详细信息,接下来,提供管理员电子邮件,网站网址和时区,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现已安装和配置,你可以邀请朋友,并且根据需要使用该平台。



文章标签:Ubuntu  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语