我只是想做一個大家都能訪問的wiki,用於成員間共享和維護一些文檔。找到了docker的mediawiki,這里記錄一下我怎么搭的吧。
首先,如果你在一個局域網里,有公用的可以訪問的服務器,那可以直接在那上面搭建,比如我們實驗室的服務器,只要在校園網下,都可以訪問。不過這篇博客是在我的阿里雲的服務器上實現的,我租的是阿里雲輕量應用型服務器,原因是便宜。
mediawiki需要有一些mysql數據庫的知識和php的知識,為此我還花了一天學習了這兩個東西。我是在菜鳥教程的網站學習的。如果只是想簡單操作,其實學習起來並不難。
1、ssh登錄服務器(服務器是ubuntu16.04)
略
2、為服務器安裝docker環境
網上教程一大堆,我安裝的是docker-ce,使用的是這個教程:https://blog.csdn.net/bingzhongdehuoyan/article/details/79411479
3、下載mysql和mediawiki鏡像
去docker hub上找一下這兩個鏡像
MySQL:https://hub.docker.com/_/mysql
media:https://hub.docker.com/_/mediawiki
然后選擇合適的版本,我使用的是這兩個:
所以根據命令pull下來:
docker pull mysql:5.7 docker pull mediawiki:stable
4、安裝mysql容器(涉及一點mysql知識,最好先學習一下)
docker run --name mysql_wiki -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
解釋一下上面的命令:
MYSQL_ROOT_PASSWORD=123456 表示生成的容器里的root賬戶密碼是123456
-p 表示端口映射,mysql默認端口是3306,然后你要遠程連接docker內部的mysql,所以需要把docker內部的3306端口映射到服務器的某個端口,我自己隨便映射到了服務器的3307端口了。
mysql:5.7 表示你的鏡像,寫成鏡像id也可。
然后進入你的mysql的容器,配置遠程連接
docker exec -it mysql_wiki bash
注意這里進入並不能attach命令進入,我一attach,終端就卡死了,我也不知道為啥,你知道的話,可以留個言。
進入容器后,登錄root
mysql -u root -p
進入mysql數據庫
use mysql
創建一個可以遠程連接的root賬戶
grant all privileges on *.* to 'root'@'%';
刷新一下權限
flush privileges;
查看一下是否生效
SELECT User,Host FROM mysql.user;
上面可以看到有兩個root,一個是localhost,用於本地連接,一個是%,則是用於遠程連接。
然后將你的阿里雲服務器的防火牆的3307端口打開
即添加一個自定義的3307端口
最后在自己的電腦上遠程連接一下你阿里雲上的mysql(自己的電腦要先裝好mysql環境)
mysql -h xxx.xxx.xxx.xxx -P 3307 -u root -p
xxx.xxx.xxx.xxx表示你的服務器的ip地址
-P 表示映射的端口
連接成功,說明的mysql的環境已經搞好了。
5、安裝mediawiki容器
docker run --name mywiki --link mysql_wiki:mysql -p 999:80 -d mediawiki:stable
--link mysql_wiki:mysql 表示mywiki這個容器將會和mysql_wiki這個容器進行通信,並以mysql為別稱。
當然別忘了開放你的端口,我使用的是999端口。
6、使用瀏覽器登錄
在瀏覽器直接輸入
xxx.xxx.xxx.xxx:999
7、點擊圖上的set up the wiki, 進行mediawiki的安裝
先選擇語言(我選擇中文)
然后檢查環境
因為用的docker,所有環境都已經裝好了
連接數據庫
xxx.xxx.xxx.xxx是你的服務器ip,3307是剛剛設置的mysql端口
之后按照它的提示設置安裝就好了
最后的樣子
接着將下載的LocalSetting.php上傳服務器,然后再拷貝進入mywiki容器中的/var/www/html/ 文件夾下(上傳服務器使用scp命令,docker傳文件使用docker cp)
然后你再在瀏覽器中輸入xxx.xxx.xxx.xxx:999,就可以看到你的頁面了。。。
8、配置mediawiki
更改左上角的logo
剛剛的LocalSetting.php中
這里的resources文件夾就在/var/www/html/文件下
我們自己上傳一個135*135的三通道圖像,png格式,然后放在assets文件夾下,然后更改LocalSetting.php的這個wgLogo變量,指向自己的logo圖片
然后重新打開網頁,就發現logo已經更改。
右上角登錄剛剛設置的管理員賬號
設置游客不能編輯,注冊用戶可以編輯
LocalSetting.php添加這兩行
添加上傳文件功能
這個功能很重要,比如你在文章中要添加圖片時,要先上傳圖片,然后添加
將這個變量改成true即可
設置上傳文件大小限制
在上傳文件頁面中,我們發現最大上傳只有2M。所以要改,我們改成1G
這里我是參考這個教程的:https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads/zh
首先我們去更改php.ini文件
在容器中輸入 php --ini命令,去查找php.ini在哪
不過似乎並沒找到在哪,但是我們可以在/usr/local/etc/php/文件夾下找到這些東西
按照官網的說法: https://www.php.net/manual/zh/install.windows.legacy.index.php
所以我們直接 cp php.ini-production php.ini
然后編輯php.ini文件
按照上面的教程: https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads/zh 修改兩個變量
然后LocalSetting.php添加這兩行
注意這里的單位是字節,1073741824=1024*1024*1024
至於更改web服務器apache,我們並不需要更改,保持默認就好,因為 https://httpd.apache.org/docs/2.4/mod/core.html 解釋道
即默認是無限制大小
最后 service apache2 restart 重啟web服務
可能會掉出容器,再start一下容器就好了
這時候再登陸wiki頁面,上傳文件就可以有1G了