基於 Docker Compose 的 Discuz X3.4

Discuz

Discuz!是個可免費下載的PHP網路論壇程式,簡稱DZ,由戴志康(Crossday)所創立,目前最新版本是Discuz! X3.4。[2]前身為Crossday Bulletin(CDB),最初改自XMBForum,爾後改寫成為現今的Discuz!社群論壇程式,由康盛創想所有(現已被騰訊收購)。現在Discuz!已成為大中華地區最多用戶使用的論壇程式。

我們直接使用先前介紹 架構一個基於Docker Compose 的 PHP Laravel 開發環境 的整個環境
準備好 docker 及 docker compose 的環境後我們就可以開始建置 Discuz 了

git clone https://github.com/roryamos/LaravelDev.git Discuz
cd Discuz
tree
.
├── composer.sh
├── docker-compose.yml
├── html
│   ├── index.html
│   ├── index.php
│   └── phpinfo.php
├── log
│   ├── nginx
│   └── php
├── mariadb
│   ├── my.cnf
│   └── run.sh
├── nginx
│   ├── default.conf
├── phpfpm
│   ├── php.ini
│   └── www.conf
├── README.md
├── restart.sh
└── var-lib-mysql

8 directories, 12 files

1. clone Discuz 最新的代碼

git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git html/discuz

2. 修改 Nginx 的路徑配置

vi nginx/default.conf
--------------------------------
    root /var/www/html/discuz/upload;
    location / {
        root   /var/www/html/discuz/upload;
        index  index.html index.htm index.php;
    }
--------------------------------
./restart.sh

打開網址瀏覽 http://youripaddress/, 調整安裝嚮導所提示的檔案權限.
緊接著你會看到一個問題mysqli_connect() advice_mysqli_connect
Image of winrun

……

Continue reading

架構一個基於Docker Compose 的 PHP Laravel 開發環境

Docker Compose

操作過 Docker 指令的同學們,應該都嘗試過用指令的方式管理 Docker 容器, 當需要運行的容器愈來愈多時管理的指令是又多又複雜。 Docker Compose 是一個定義多個 Docker 容器的工具,讓我們可以使用 YAML 格式的配置文件管理多個容器, 並幫助我們快速的佈建一套系統,提供了單一的命令,我們可以一次性的運行或停止相互依賴的容器。

安裝 Docker

基本的安裝可以參考 Docker 安裝筆記 - 以LNMP為例的應用

安裝 Docker Compose

在安裝好Docker 之後、我們可以開始安裝 Docker Compose, 首先我們需要先安裝 python-pip

sudo yum install -y epel-release
sudo yum install -y python-pip

接下來就可以安裝Docker Compose了

pip install docker-compose

需要的話將 Python 相關的套件更新一下讓 Docker Compose 能夠順利運行

yum upgrade python*

PHP Laravel

Laravel 是一個網頁應用框架實現了MVC的架構,運用了 Composer 這個套件相依性管理系統,提供連接許多種類的RDBMS的方式, 提供開發語法糖使開發常見痛點的實現變的簡單,像是權限管理、路由、Sessions、及快取機制。

接下來我們試著以安裝 Laravel 的開發環境為例,進行 Docker Compose 的配置

1. 初始化我們的目錄結構

mkdir -p html log/nginx log/php mariadb nginx phpfpm var-lib-mysql
docker pull mariadb/server:10.3
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=passwd -d mariadb/server:10.3
docker cp mariadb:/etc/mysql/my.cnf ./mariadb/my.cnf
docker stop mariadb
docker rm mariadb

docker pull nginx:1.15
docker run --name nginx -v /data/html:/usr/share/nginx/html:ro -p 80:80 -d nginx:1.15
docker cp nginx:/etc/nginx/conf.d/default.conf ./nginx/default.conf
docker stop nginx
docker rm nginx

docker pull php:7.3-fpm
docker run --name php-fpm -p 9000:9000 -d php:7.3-fpm
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf ./phpfpm/www.conf
docker cp php-fpm:/usr/local/etc/php/php.ini-production ./phpfpm/php.ini
docker stop php-fpm
docker rm php-fpm
tree .
.
├── docker-compose.yml
├── html
│   └── phpinfo.php
├── log
│   ├── nginx
│   └── php
├── mariadb
│   └── my.cnf
├── nginx
│   └── default.conf
├── phpfpm
│   ├── php.ini
│   └── www.conf
└── var-lib-mysql

8 directories, 6 files

2. 配置docker-compose.yml

主要是運行 Mariadb, nginx, php-fpm 這三個容器

……

Continue reading

Windows10-內建好用的截屏工具

前言

在這個網路通訊時代,大家幾乎都依賴著即時通訊軟體來取代電話。無論是辦公、打屁、交友、遊戲在在都離不開即時通訊。 尤其是在辦公或著其他場景下你需要仰賴截圖來說明一些什麼的時候,感覺這個科技的進步實在是太美好了。 甚至是在做報告的時候也難免需要截屏來說明;相信有許多人跟我一樣,都是打開了Line 來做截屏然後複制到報告裡。

Snippingtool

這是一個內建在Win10 裡的軟體、應該打從Win7 就有了,Win7 的用戶不妨試試看,它能夠很好的幫助你截取螢幕畫面,我們按照以下步驟來打開這個軟體。

  1. Win+R 鍵開啟執行窗格並輸入 Snippingtool
    Image of winrun
  2. 按下確定
  3. 預設開啟應用程式的時候就會要你選定剪取畫面,這邊我們按一下Esc 取消
  4. 將剪取工具釘選在工具列上
    Image of fixed
  5. 接下來只需要點擊剪取工具的圖標就可以開始剪取了、是不是很方便呀。
……

Continue reading

Https Github Pages With Hugo

Hugo

Hugo 是基於 Go 語言的靜態網站生成器

GitHub Pages

GitHub Pages是 GitHub 提供的一種網站託管服務,用於託管GitHub用戶,用戶博客,項目文檔, 甚至整本書的靜態網頁。
GitHub Pages於2008年底推出。與 GitHub 的其他部分一樣,它包括免費和付費的服務層。通過此服務生成的網站作為github.io的子域名託管,或作為通過第三方域名註冊商購買的自定義域名託管。

安裝 Hugo

Mac 下直接使用 homebrew

$ brew install hugo

Windows 或其他作業系統 https://github.com/gohugoio/hugo/releases 到官方發佈頁下載.
解壓縮後將檔案 copy 到環境變數 path 裡, 以Windows 為例就是在 C:\Windows\System32. 然後到命令列下執行 :

$ hugo version
Hugo Static Site Generator v0.52 windows/amd64 BuildDate: 2018-11-28T14:07:10Z

生成站點

$ hugo new site test
$ tree test
D:\DOCUMENTS\TEST
├─archetypes //放一些template的地方, 可以客制化自已的 md template
├─content //文章的md檔
├─data //存放配置檔, 在生成網頁時參考
├─layouts //存放生成html時所用的template
├─static //存放靜態文件,在生成網頁時會一併複制過去
└─themes //存放主題, 可以挑選喜歡的主題使用

創建文章

hugo new post/hello-world.md

編輯 content/post/hello-world.md

……

Continue reading

Docker 安裝筆記 - 以LNMP為例的應用

Docker 是一個開源專案,誕生於 2013 年初,最初是 dotCloud 公司內部的一個業餘專案。它基於 Google 公司推出的 Go 語言實作。 專案後來加入了 Linux 基金會,遵從了 Apache 2.0 協議,原始碼在 GitHub 上進行維護。

Docker Install

官網上有各種平台的安裝指南 https://docs.docker.com/install/

我們介紹的是在 CentOS 下的安裝步驟 :

1. 安裝一台乾淨的CentOS 7 Minimal, ISO https://www.centos.org/download/

2. 安裝 Docker

# yum update
# yum install -y wget
# wget -qO- https://get.docker.com/ | sh

在安裝完成後會出現個提示訊息說,如果你要以非root用戶來運行Docker、你需要執行下面的命令。

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

3. 啟動 Docker

# systemctl enable docker.service
# systemctl start docker.service

Docker 的應用以 LNMP 為例

Mariadb

我們使用目前Mariadb 最新版本的docker image 10.3

……

Continue reading