搭建一個問答交流平臺

前言

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

而有些人不會使用github,所以這篇文章寫一下如何使用開源項目搭建一個問答平臺。本來是想弄個論壇,但是在搜索的過程中發現這個問答平臺更符合我的要求(支持搜索、輕量和搭建簡單)。

開始搭建

我使用的系統是Ubuntu server20.04

使用的項目

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會看到登錄頁面,默認用戶名密碼: [email protected]/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 發佈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章