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