安装和配置Humhub社交平台

团队内部沟通靠吼?相信很多团队管理主要还是靠微信群聊。微信群聊的问题在于信息流没法长期保存,因此知识无法留存,不适合检索和回顾。微信群聊也没有频道区别,大量的信息都串在一起:有任务安排、工作文档、求点赞求分享,鱼龙混杂。所以我们团队用的是企业SNS方案,相当于搭建一套内部使用的Facebook,听起来很麻烦,但实际上有很多开源解决方案。

这里给大家推荐的就是Humhub.org推出的Humhub软件。PHP+MySQL运行环境,自适应设计,PC和手机浏览器访问都十分友好,也省的你再给团队成员安利什么APP。它的功能也很完善:文件分享、任务指派、投票、维基知识库以及站内信和频道讨论版。对于中小型团队来说绰绰有余。

安装和配置Humhub社交平台

官方从1.1.0版本之后就开始纳入中文支持(目前最近版本1.3.8),虽然翻译的不是很完美,但是完成度也有80%以上,日常使用没有太多障碍。

安装过程

首先在你的内网服务器或公网VPS上安装LNMP或者Oneinstack服务器环境。我推荐的配置是Nginx + Apache + MySQL +PHP的运行环境。如果内存吃紧只用Nginx,Humhub也可以正常运行,但是稳定性和安全性有点折扣。

我使用的是Debian操作系统和Oneinstack一键安装包,你可以使用下面的命令一键完成安装,512MB搬瓦工VPS的安装时间大约是40分钟。

wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --apache_option 1 --php_option 4 --phpcache_option 1 --phpmyadmin --db_option 3 --dbinstallmethod 1 --dbrootpwd password --pureftpd --reboot

这条命令将会安装Nginx 1.14、Apache 2.4、PHP 5.6、MySQL 5.6、PHPMyAdmin、PureFTP服务和OPCache缓存。请记得修改红色password为你想要的MySQL root账户密码。

关于以上组件的版本Humhub倒是不太挑,官方给的配置如下:

  • Shell access (e.g. ssh) to server SSH命令行权限
  • PHP 5.6 – 7.2.x (PHP 7.2+ is supported since HumHub 1.3) Humhub 1.3以后支持PHP7.2以上版本
  • MySQL (5.1 or later) or MariaDB with InnoDB storage engine installed MySQL 5.1以上,或启用了InnoDB的MariaDB
  • A minimum 500 MB of free disk space 500MB磁盘空间
  • A minimum 64 MB of memory allocated to PHP 64MB以上PHP可用内存
  • A minimum of 50 MB of database space 50MB MySQL数据库空间

虽然官方称MySQL 5.1 也OK, 但实际上MySQL的版本如果低于5.6,常常出现一些奇怪的错误。

Oneinstack安装完成后,就可以运行

./oneinstack/vhost.sh add

来添加humhub的运行域名和文件目录。然后从 https://www.humhub.org/en/download 下载Humhub软件,并上传到服务器对应的文件目录。

接下来,我们要对Oneinstack进行简单调配以满足Humhub的需求。

第一步,安装PHP的Fileinfo插件。这个插件Oneinstack和LNMP默认都是不安装的,需要自行安装。好在Oneinstack提供了安装工具。运行下面的命令

./oneinstack/addon.sh

选择4→1→1安装Fileinfo组件。编译过程大约需要10分钟。

第二步,调整PHP禁用的函数。使用WinSCP或者YummyFTP登陆主机的SSH账户,或者直接使用命令行工具,编辑php.ini文件,我的php.ini在下面这个位置。

/usr/local/php/etc/php.ini

如果你不知道你的php.ini在哪,可以在命令行运行

find / -name php.ini

来查找php.ini的位置。

找到 disable_functions 这一行。我的 disable_functions 是这么写的:

disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen

我们需要允许这三个标记为红色函数。删掉这三个函数就可以了。记住,别留下多余的逗号。然后运行

service php-fpm reload

重新启动php。

第三步,增加定时任务。Humhub的很多数据库操作是由定时任务在后台完成的,而不是由网页AJAX刷新。因此,我们需要设置定时任务。在命令行打开定时任务编辑器:

crontab -e

然后黏贴下面两行代码。请根据你的安装路径修改Humhub的位置。

*/5 * * * * /usr/local/php/bin/php -f /data/wwwroot/humhub/protected/yii queue/run >/dev/null 2>&1
*/5 * * * * /usr/local/php/bin/php -f /data/wwwroot/humhub/protected/yii cron/run >/dev/null 2>&1

如果你的php安装位置不同,记得也要做出相应修改。保存文件后,crontab就会自动更新定时任务。(官方推荐每分钟运行,因此没有“/5”,我们团队比较小,刷新频率没有那么高,因此加上了“/5”,意思是每5分钟刷新。)

好了,环境配置基本完成。接下来就是常规安装任务了。登录PHPMyAdmin创建一个新的数据库和用户,然后访问为Humhub的web地址,填入相关信息就可以使用了。

补充

如果你使用的Nginx + Apache 或者 Apache 并希望美化URL地址,需要下面两步。

第一,修改 .htaccess.dist 文件名为 .htaccess 。

如果你的Humhub存放在二级目录下,还需要修改 .htaccess 的内容。找到下面这行:

#RewriteBase /humhub

将井号去掉,将红色部分改成二级目录名。

第二,修改下面这个文件

protected/config/common.php

你打开它的时候,看到的是这样的:

return [
];

把它改成下面这样:

return [ 'components' => [ 'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true, ], ] ];

好了,现在终于可以有更好看的URL了……不过,好像作用不大,因为Humhub的URL本身就又臭又长。

 

如果你仅仅使用的Nginx,那么可以参考下面的配置文件。

server {
    server_name yourwebsite.com;
    listen 80;
    root /var/www/yourwebsite.com/public_html;
    access_log /var/www/yourwebsite.com/logs/access.log;
    error_log /var/www/yourwebsite.com/logs/error.log;
    index index.php;
 
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
 
    location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|woff)$ {
        access_log off;
        expires 30d;
        add_header Pragma public;
        add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
    }
 
    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_keep_conn on;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
 
    location ~ /\.ht {
        deny all;
    }

    location /protected {
        deny all;
    } 

    location /uploads/file {
        deny all;
    } 
 
}

其中标红部分是用来控制URL转写的。

Leave a Reply

Your email address will not be published. Required fields are marked *