文章最後更新於 2020 年 11 月 6 日
大家好,我是卡哥,Webinoly Study Group in Taiwan 社團召集人,這篇文章會介紹用Docker啟動一個Ubuntu的Container,然後安裝Webinoly。
我的筆電是MacBook,文中的示範都是在Mackbook的環境下完成的。
因為Webinoly目前只Support Linux Ubuntu,在過去如果不想花錢錢去租一台Linux VPS的話,就必須自己裝一台Linux或是用VMware或VirtualBox之類的虛擬主機。
有了Docker這種Container的概念後,啟動一個Linux模擬環境變的非常簡單,接下來就一步一步來示範如何實作。
首先要先安裝Docker Desktop https://www.docker.com/get-started
裝好後啟動,確定Docker Desktop is running.
接下來3個步驟:
啟一個Ubuntu的Container
(目前Webinoly支援的版本為Ubuntu 20.04 與 18.04,現在latest是20.04):
第一個指令啟動一個名為ubuntu-webinoly的Container
docker run -itd --privileged --name ubuntu-webinoly -p 8080:80 -p 22223:22222 -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu
指令參數說明如下
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
run : Run a command in a new container
-i, --interactive : Keep STDIN open even if not attached-t, --tty : Allocate a pseudo-TTY-d, --detach : Run container in background and print container ID--privileged : Give extended privileges to this container--name : Assign a name to the container-p, --publish list :Publish a container's port(s) to the host-v, --volume list :Bind mount a volume
使用的image為jrei/systemd-ubuntu https://hub.docker.com/r/jrei/systemd-ubuntu
上面的docker run會把機器的Port 80 導到Container裡的Port 8080;Port 22223 Port導到Port 22222,也就是說到時候我們的
Mac的 localhost:8080 會對應到Container的 localhost:80
Mac的 localhost:22223 會對應到Container的 localhost:22222
因為80 Port將會是Nginx的預設Port,而22222 Port是預設Webinoly Tools的位置(phpMyAdmin)
第二個指令進入docker:
docker exec -it ubuntu-webinoly /bin/bash
說明如下:
Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG…]Run a command in a running container-i, --interactive : Keep STDIN open even if not attached-t, --tty : Allocate a pseudo-TTY
以下是執行後的參考結果:
> docker run -itd --privileged --name ubuntu-webinoly -p 8080:80 -p 22223:22222 -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu
Unable to find image 'jrei/systemd-ubuntu:latest' locally
latest: Pulling from jrei/systemd-ubuntu
3ff22d22a855: Pull complete
e7cb79d19722: Pull complete
323d0d660b6a: Pull complete
b7f616834fd0: Pull complete
253a33dbd35c: Pull complete
67fd89d007d5: Pull complete
6371579ddac6: Pull complete
980e40c4e38a: Pull complete
Digest: sha256:1398553ead86d54f3375424ba85c11dad53530b6e9b974efe7705f9d50474f5b
Status: Downloaded newer image for jrei/systemd-ubuntu:latest
f7839f1d813403bba1117d7d530ad59ce079d9806085fbee97448116850aa319> docker exec -it ubuntu-webinoly /bin/bash
root@f7839f1d8134:/#
root@f7839f1d8134:/# uname -a
Linux f7839f1d8134 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
有看到類似 root@f7839f1d8134 應該就是安裝成功並已經在Ubuntu的環境了
安裝必要的Packages (在之後安裝Webinoly時,script會用到)
安裝之前,因為docker安裝的ubuntu預設會有一個檔案/usr/sbin/policy-rc.d ,內容是exit 101; 會阻止套件安裝完後的自動啟動,影響mariadb的設定,所以要先刪掉它!
rm /usr/sbin/policy-rc.d
然後安裝Webinoly會用到的Packages
apt update && apt upgrade -y && apt autoremove && apt install lsb wget sudo curl git -y
安裝Webinoly
執行Webinoly安裝LEMP環境的指令
wget -qO weby qrok.es/wy && sudo bash weby 3
最後那個3指的就是LEMP,可以參考官網:https://webinoly.com/en/install/
wget -qO weby qrok.es/wy && sudo bash weby <option> <version>
option有下面幾種選項:
- HTML (1) – Only install Nginx, which will only support HTML sites.
- PHP (2) – Nginx and PHP will be installed.
- LEMP (3) – A complete LEMP installation will be done, Nginx + PHP + MySQL (MariaDB). This is the most complete and necessary configuration for WordPress sites.
- Maybe later (0) – Webinoly is installed without installing any package, it allows you to do a manual and personalized installation with the command
stack
.
裝好後,會看到安裝成功的畫面,可以把下面的DB Password記起來
沒記也沒關系,之後用下面指令查詢即可
webinoly -dbpass
測試一下安裝
webinoly -verify
會發現
[INFO] HTTP Authentication Credentials not found!
只要用下面指令加入一組HTTP Authentication的帳密就行了
httpauth -add
做完可以試試看連 http://localhost:8080/ 應該可以看到下面內容
試試看架一個local的網站,其中 my.local 是一個假 domain,你必需在你的Macbook (非container裡) 的 /etc/hosts加入
127.0.0.1 my.local
才能讓你的機機把 my.local認得為IP 127.0.0.1
> site my.local -wp Downloading WordPress...Site my.local has been successfully created!
之後用瀏覽器打開 http://my.local:8080 就會看到畫面
這時候輸入稍早用httpauth建立的帳密即可
Tools的會在當初建Container時用的Port 22223
PhpMyAdmin會在
登入的帳密可以用下面指令查 root 那組
webinoly --dbpass
Docker Desktop可以做一些操作比方說Delete,可以刪掉整個Container
要跳出Container可以直接 exit 或按 Ctrl+p然按按q
補充Docker常用指令
# 查詢所有的Containers docker ps -a # 停止 Docker Container docker stop DOCKER_ID # 強制停止 Docker Container docker kill DOCKER_ID # 重新啟動 Docker Container docker restart DOCKER_ID # 暫停 Docker Container docker pause DOCKER_ID # 恢復 Docker Container docker unpause DOCKER_ID # 複製本機檔案到 Container docker cp /path/to/file1 DOCKER_ID:/path/to/file2
官方網站有詳細的教學文件可以照著試試看,這篇主要示範Docker的部分
以上謝謝您的閱讀,文章就到此結束!
對Webinoly有興趣學習分享交流的朋友,歡迎加入Webinoly Study Group in Taiwan社團:
https://www.facebook.com/groups/webinolytaiwan
關於作者
- 我是Oscar (卡哥),前Yahoo Lead Engineer、高智商同好組織Mensa會員,超過十年的工作經驗,服務過Yahoo關鍵字廣告業務部門、電子商務及搜尋部門,喜歡彈吉他玩音樂,也喜歡投資美股、虛擬貨幣,樂於與人分享交流!
最新文章
- 2024 年 8 月 26 日Java如何在 Java Spring Boot 中輕鬆使用 @Cacheable 提高應用效能
- 2024 年 8 月 25 日技術文章新手必看:MongoDB 實用入門指南 – 從零開始學習 NoSQL 數據庫
- 2024 年 7 月 18 日未分類ChatGPT, Claude AI 進階提示詞技巧:掌握AI對話的藝術 (Prompt Engineering)
- 2024 年 6 月 11 日程式設計Java 中的 volatile
如果對文章內容有任何問題,歡迎在底下留言讓我知道。
如果你喜歡我的文章,可以按分享按鈕,讓更多的人看見我的文章。