搭建一个问答交流平台

前言

弄了个视频号下载和Python机器人后,同一个问题每天都会被问,回答的有点烦了。想了想根本原因还是缺少一个交流平台。

微信群的话,刚进群的看不到之前的聊天记录。本来想整个知识星球,发现只能弄个收费的,免费的需要激活码才能创建。

有些人不会使用github,所以这篇文章写一下如何使用开源项目搭建一个问答平台。本来是想弄个论坛,但是在搜索的过程中发现这个问答平台更符合我的要求(支持搜索、轻量和搭建简单)。

搭建一个问答交流平台

开始搭建

我使用的系统是Ubuntu server20.04

使用的项目

  • 问答平台:https://github.com/apache/incubator-answer
  • NGINX web管理: https://github.com/NginxProxyManager/nginx-proxy-manager
  • MySQL

MySQL安装

这个项目也可以不安装MySQL,使用sqlite3来作为数据库体验一下。不过正式环境下还是建议使用数据库

sudo apt updatesudo apt install mysql-server

安装完成后,可以使用sudo systemctl status mysql.service查看运行状态。

MySQL默认的配置文件在/etc/mysql/my.cnf,但是这里面就两行内容

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

看了下这些目录里的文件,mysqld的一些配置都在/etc/mysql/mysql.conf.d/mysqld.cnf

首先需要设置MySQL对docker容器开放,将bind-address改成0.0.0.0(注释掉也可以),端口不改了,因为只对内网ip开放。

然后重启MySQL: sudo systemctl restart mysql.service

先使用sudo mysql进入到SQL命令行

创建数据库

CREATE DATABASE answer;

创建用户

CREATE USER 'answer'@'%' IDENTIFIED BY '123456';

给用户赋予answer数据库的完整权限

GRANT ALL PRIVILEGES ON answer.* TO 'answer'@'%';

现在在命令行使用mysql -uanswer -Danswer -p输入密码后应该能进入到SQL命令行

放通防火墙

sudo ufw allow from 172.17.0.0/16

我查看了我的docker使用的ip段就是172.17.*.*,所以只需要放通这个ip段即可。这样容器就能访问宿主机的所有服务

搭建一个问答交流平台

安装问答平台

docker安装就不说了

docker pull apache/answer:latest

docker run -d 
    -p 19080:80 
    -v /home/ubuntu/answer-data:/data 
    --name answer 
    apache/answer:latest

安装NGINX管理平台(非必须)

安装这个只是为了方便做域名反向代理用的,可以去掉端口来访问,申请证书升级https也方便。

docker pull docker.io/jc21/nginx-proxy-manager:latest

docker run -d 
    -p 80:80 
    -p 18081:81 
    -p 443:443 
    --name nginx_proxy 
    -v /home/ubuntu/nginx-proxy/nginx-proxy-data:/data 
    -v /home/ubuntu/nginx-proxy/letsencrypt:/etc/letsencrypt 
    docker.io/jc21/nginx-proxy-manager:latest

先放通下防火墙的18081端口

然后访问http://服务器ip:18081会看到登录页面,默认用户名密码: admin@example.com/changeme

登录进去要被要求设置用户名和修改密码,修改完进入到主页

搭建一个问答交流平台

点击Proxy Hosts然后点Add Proxy Host,填写如下信息(域名输完按回车,可输入多个域名)。要代理的ip就是宿主机的docker ip,也就是上面ifconfig看到的172.17.0.1,而端口是docker映射的19080。

搭建一个问答交流平台

如果需要开启https的话,如下图所示,点Save即可申请完成。我一开始容器没有映射80端口导致失败了,因为申请证书要保证80端口能被连接。

搭建一个问答交流平台

另外也可以将18081这个端口反向代理到一个域名,这样就能使用域名访问NGINX-Proxy界面。

搭建一个问答交流平台

这里就可以使用域名访问问答平台的安装界面http://answer.ikanade.cn/install,输入一些基本信息和MySQL的连接信息即可。当然你也可以防火墙放通19080,先安装完在做域名反代。

搭建的问答网站

https://answer.ikanade.cn/

以后遇到的问题我都会记录在这上面,你也可以在上面给我提问。网站名称叫每日随笔, 是因为域名备案的名称是这个。


原文始发于微信公众号(Python成长路):搭建一个问答交流平台

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/283043.html

(0)
python学霸的头像python学霸bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!