用 Nginx 來架設線上即時縮圖機

在更早以前我們怎麼實現縮圖機制,當使用者上傳一張檔案,後端會固定將圖片縮圖成各種前端網頁需要的大小,不管前端頁面是否有使用,後端都會先產生好,這有什麼缺陷?

  1. 佔用硬碟空間大小
  2. 前端又需要另外一種格式的縮圖?

第二個問題比較麻煩,當前端需要另一種縮圖格式,後端就要開始掃描系統的全部圖片,再重新產生一次。非常耗費後端系統效能。後來才改成透過 URL 定義長寬來決定即時縮圖,在 Go 語言內可以選擇使用 picfit 來當作後端即時的縮圖機。本篇則是要提供另一種解法,就是使用 Nginx 搭配 image_filter 外掛來達成即時縮圖機制。

[Read More]

從 Nginx 換到 Caddy

The_Caddy_web_server_logo.svg

終於下定決心將 Nginx 換到 Caddy 這套用 Go 語言所撰寫的開源套件,大家一定會有所疑問『為什麼要換掉 Nginx 而改用 Caddy』,原因其實很簡單,你現在看的 Blog 安裝在 Linode 機器上面,之前跑的是 Nginx 搭配 letsencrypt,但是必須要寫一個 Scripts 來自動更新 letsencrypt 憑證,這機制最後不太運作,加上這一年來,每三個月就會有人丟我說『你的 Blog 憑證過期了』,所以就在這時間點,花點時間把 Nginx 設定調整到 Caddy,轉換的時間不會花超過一小時喔。

[Read More]

在 Go 語言用一行程式碼自動化安裝且更新 Let’s Encrypt 憑證

在去年寫了一篇『申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2』教學,如果您是用 Nginx,就可以參考該篇教學讓您的伺服器支援 HTTPS,而 Google Security Blog 也宣布在 56 版本以後將會提示 non-secure 網站,讓使用者可以選擇性瀏覽網站。Let’s Encrypt 官方也公布去年 2016 發了多少張憑證,相當驚人,想必大家對 HTTPS 已經有相當程度的瞭解。底下這張圖說明 2016 年 Let’s Encrypt 發憑證總量的狀況

Screen Shot 2017-04-07 at 9.52.40 AM

此篇會介紹在 Go 語言如何跟 Let’s Encrypt 串接,底下有兩種方式。

[Read More]

Caddy 搭配 Drone 伺服器設定

The_Caddy_web_server_logo.svg

緣由

Caddy 是一套 HTTP/2 伺服器,你可以想成跟 Nginx 是同一種角色,但是 Caddy 有一點不一樣的地方就是自動支援 HTTPS 設定,也就是 Caddy 幫網站自動申請 Letsencrypt 憑證,開發者不需要擔心憑證會過期,Caddy 會定期幫忙更換。Drone 則是一套以 Docker 為基礎的 Continuous Integration 平台。就在上個月 Caddy 發佈了 0.9.5 版本,更新過後,發現 Drone 的 WebSocket 連線會斷線又連線,底下來看看 Caddy 更動了什麼造成 WebSocket 連線失效。

[Read More]

申請 Let’s Encrypt 免費憑證讓網站支援 HTTP2

Letsencrypt

寫這篇最主要推廣讓網站都支援 HTTPS 加密連線HTTP2 協定,對於網站為什麼要支援 HTTP2,可以直接參考 ihower 寫的說明文章,最近在玩 Facebook, Line, Telegram Bot 時,填寫 Webhook URL,都強制要填寫 https:// 開頭,所以更不能忽略 HTTPS 了。,去年底寫了一篇 Let’s Encrypt 開放申請免費 SSL 憑證 推廣 Let’s Encrypt 的貢獻,讓買不起憑證,又想玩看看 HTTP2 的開發者可以用很簡單的方式來安裝及自動更新憑證,而 gslin 大為了推廣 HTTPS 也做了一個網站教學,文章寫得相當清楚,支援 ApacheNginx 設定。

[Read More]

將 wordpress 強制使用 SSL 連線

Letsencrypt

繼上篇介紹 Letsencrypt 開放申請免費 SSL 憑證,就把我的 Blog 強制使用 https 連線,Wordpress 強制使用 SSL 連線有幾個步驟需要注意,底下會是搭配 Nginx 相關設定,建議如果有裝任何 Plugin,都先進去後台暫時關閉。Nginx 1.9.5 之後有把 http2 模組加入,所以本篇會是以設定 http2 為主,當然跟 spdy 設定一樣,只是換個名字而已。

[Read More]

Letsencrypt 開放申請免費 SSL 憑證

Letsencrypt

很高興在今年 12/03 Letsencrypt 宣布進入 public beta 階段,開放免費 SSL 提供給開發者或正式網站使用,在這之前屬於封測階段,必須透過申請的方式才可以拿到 SSL 憑證。在知道 Letsencrypt 之前,我都是使用免費的 StartSSL,這家申請的分式比較複雜,你可以在網路上找到許多申請教學,但是就是按部就班操作,就可以拿到一年份的 SSL 憑證,也就是一年申請一次啦,但是 Letsencrypt 申請的方式可以直接透過 command line 快速產生相對應的憑證,支援的 Plugin 也非常多 (像是 Apache, Nginx),詳細的操作方式可以參考線上文件。這邊就不多說了,只要安裝好 Letsencrypt 指令,就可以無痛拿到各網站憑證,在 Github 上面你可以找到許多別人寫好的 Plugin,隨便挑一個來使用吧。

[Read More]

Ngnix 搭配 PHP-FPM 噴 php5-fpm.sock failed (13: Permission denied)

Nginx 搭配 PHP-FPM 已經是架設 PHP 伺服器基本入門款了,這次升級 CentOS 機器完後,發現 Log 一直噴出底下訊息 nginx error connect to php5-fpm.sock failed (13: Permission denied) 透過 Stackoverflow 查到這篇解答 nginx error connect to php5-fpm.sock failed (13: Permission denied),裡面提到兩種作法,其中一解法是直接修改 /var/run/php5-fpm.sock 為 666,讓其他使用者可以直接存取此檔案,但是此作法在下次重新開機後一樣會出現同問題,最終解法請修改 /etc/php-fpm.d/www.conf 如果是搭配 Nginx 請使用底下設定 user = nginx group = nginx ; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. [Read More]

在 Ubuntu 或 Debian 上跑 Ruby on Rails + Nginx

Ruby_logo

本篇用來紀錄學習 Ruby on Rails 所需要的開發環境,請不要輕易嘗試使用 Windows 當開發環境,因為真的很不好裝,又很難除錯,所以作者建議開發環境一定要有 Linux 機器,如果是個人電腦用 Mac 也沒這問題。用 Rails 可以快速開發 Web 搭配 MySQL 資料庫,完成後可以透過 Capistrano 工具幫助 Deploy 到 Production Server。底下會一一介紹如何在 Debian 機器上架設好 Ruby + Nginx 環境

[Read More]

Jenkins + Nginx User Auth

jenkins_logo

Jenkins CI 是一套非常好的 Job 執行 Tool,可以幫忙跑專案測試,測試完成後繼續 Deploy 到相對應的伺服器,也可以自動寄信給開發者或者是指定的內部人員。在 UbuntuDebian 安裝方式非常簡單,按照下述操作就可以簡易架設完成

$ aptitude -y install openjdk-7-jre openjdk-7-jdk
$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
$ sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
$ aptitude -y update
$ aptitude -y install jenkins
[Read More]