搭建一個問答交流平臺

Python成长路發表於2024-04-18

前言

弄了個影片號下載後,同一個問題每天都會被問,回答的有點煩了。想了想根本原因還是缺少一個交流平臺,微信群的話,剛進群的看不到之前的聊天記錄。想整個知識星球,發現只能弄個收費的,免費的需要啟用碼才能建立。

而有些人不會使用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 update
sudo 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管理平臺

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/

以後遇到的問題我都會記錄在這上面,你也可以在上面給我提問。網站名稱叫每日隨筆, 是因為域名備案的名稱是這個。

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章