作者: ken

安裝 Caddy Web Server

No Comments

Caddy 安裝

  • 本文與前一篇文章 ”安裝 phpmyadmin“ 有連貫,即,已安裝了某些必要套件,本文不再提及。
  • 筆者希望網頁統一收管在 /var/web 底下,即所謂 doc root
  • 並也打算一些測試的網頁在 /var/web/html 下操作
  • 而 phpmyadmin 則以 /var/web/dbadmin 來代表
  • 為了彰顯個人伺服器的彈性,所以打算安裝兩套 wordpress,乃例如,一個當作測試用,另一個則是正式發佈用,故有 /var/web/wp
  • 另一個 /var/web/wordpress
  • 又或是,一台電腦上架兩個不同網址的 wordpress 網站也行。
  • 部份路徑,已在前文提及建立。若前後文都未提及,請自行建立。接著,照著以下安裝命令,即可安裝完成 Caddy
sudo mkdir /etc/caddy
sudo mkdir /var/log/caddy
sudo mkdir /etc/ssl/caddy
sudo chown -R root:www-data /etc/caddy
sudo chown -R www-data:root /var/log/caddy
sudo chown -R www-data:root /etc/ssl/caddy
sudo chmod 770 /var/log/caddy
sudo chmod 770 /etc/ssl/caddy
sudo touch /etc/caddy/Caddyfile
sudo chown root:www-data /etc/caddy/Caddyfile
curl https://getcaddy.com | bash -s personal
sudo chown root:root /usr/local/bin/caddy
sudo chmod 755 /usr/local/bin/caddy
sudo setcap 'cap_net_bind_service=+eip' /usr/local/bin/caddy

curl -L https://github.com/mholt/caddy/raw/master/dist/init/linux-systemd/caddy.service | sudo tee /etc/systemd/system/caddy.service

###curl -L https://github.com/mholt/caddy/raw/master/dist/init/linux-systemd/caddy.service | sed "s/;CapabilityBoundingSet/CapabilityBoundingSet/" | sed "s/;AmbientCapabilities/AmbientCapabilities/" | sed "s/;NoNewPrivileges/NoNewPrivileges/" | sudo tee /etc/systemd/system/caddy.service

sudo chown root:root /etc/systemd/system/caddy.service
sudo chmod 644 /etc/systemd/system/caddy.service
sudo systemctl daemon-reload
sudo systemctl enable caddy.service
sudo systemctl start caddy.service

###接下來做相關文件的建立與設定,如下 測試 一節。完成後,執行下二命令
###sudo systemctl restart php7.3-fpm.service
###sudo systemctl restart caddy.service

測試

首先,建立 /var/web/html,並在底下建立三個檔案:index.html, index.php, phpinfo.php

index.html

<!DOCTYPE html>
<html>
<head>
<title>This page is served by Caddy Web Server</title>
</head>
<body>
<h3>This page is served by Caddy Web Server. LCMP creation.</h3>
<p>This is a paragraph.</p>
</body>
</html>

index.php

<!DOCTYPE html>
<html>
<head>
<title>This page is served by Caddy Web Server</title>
</head>
<body>
<h3>This page is served by Caddy Web Server. LCMP creation.</h3>
<p>This is a paragraph.</p>
<?php echo("Hello, world!"); ?>
</body>
</html>

phpinfo.php

<?php phpinfo(); ?>

建立html目錄及置入三個檔案後下達:sudo chown -RL root:www-data /var/web/html

最後,我們設置 Caddy 的設定檔 /etc/caddy/Caddyfile 完成後,重啟 Caddy 便大功告成了

Caddyfile

# for general purpose tests
localhost:8080 {
    tls off
    root /var/web/html

    log /var/log/caddy/test_access.log
    errors /var/log/caddy/test_errors.log

     # PHP-FPM Configuration for Caddy
     fastcgi / /run/php/php7.3-fpm.sock php
}


# for phpmyadmin
localhost:8081 {
    tls off
    root /var/web/dbadmin

    log /var/log/caddy/dbadmin_access.log
    errors /var/log/caddy/dbadmin_errors.log

     # PHP-FPM Configuration for Caddy
     fastcgi / /run/php/php7.3-fpm.sock php
}

卡關

至此,一台網頁伺服器於焉完成。但事實是網頁無法顯示!筆者經日夜寒暑不斷地與谷神搏鬥,最終。。。雖查不到,不過仍試通關了,尚需以下回復的一步:

  • sudo gedit /etc/php/7.3/fpm/php.ini
  • 尋找 doc_root =
  • 原本我們已在前文設定成 doc_root = /var/web,但因 php-fpm 始終無法找到網頁,故將此設定回復,參數設為空,便能將問題解決。即 doc_root = 並存檔離開。

最後,重啟:

  • sudo systemctl restart php7.3-fpm.service
  • sudo systemctl restart caddy.service
  • 之後,可用 sudo systemctl status service-name 查看服務器的執行狀況;按Q離開

好菜上桌

打開 firefox 網址分別輸入,以測試幾種網頁:

  • http://localhost:8080/
  • http://localhost:8080/index.html
  • http://localhost:8080/index.php
  • http://localhost:8080/phpinfo.php
  • http://localhost:8081/
  • https://localhost:8080/ 這個嘗試會是失敗的,但 https 正是 Caddy 的強項,後續會再介紹到。
  • 參考資料
  • https://www.digitalocean.com/community/tutorials/how-to-host-a-website-with-caddy-on-ubuntu-16-04
  • https://blog.wu-boy.com/2017/04/1-line-letsencrypt-https-servers-in-golang/

20210918 更新

在 caddy 出了 v2 版後,其 config file 改得更系統化結構化簡單化且應是有相容 v1 版的;其只要按照 migration 步驟便可移植。筆者現用的是 caddy v1.0.4,也不再使用 v2 版了後續轉而使用 nginx,其在後面文章有提到並且連同 ssl 憑證,也不會太難安裝。建議可 nginx。
Caddy 官網已不支援 V1 版了/應是說都建議改用 V2 版。將自己現用的 bin file 1.0.4 版 (h1:wwuGSkUHo6RZ3oMpeTt7J09WBB87X5o+IZN4dKehcQE=) 放於此備存。

Categories: 架設網站

Tags:

PHP Code Snippets Powered By : XYZScripts.com