在 Linux (Ubuntu) 導入 Let’s Encrypt (for Apache)

文章更新時間:2019-03-13

環境:

OS: Ubuntu 18.04 LTS
Web server: Apache: 2.4

初始化:

  1. 如果還沒裝 git 的話:
    sudo apt-get install git
  2. cd /opt
  3. sudo git clone https://github.com/certbot/certbot
  4. cd certbot
  5. 自動化安裝依存套件以建立起執行環境:
    ./certbot-auto

單一主機名稱 (Single host) 步驟:

  1. 開始自動化設定 (for apache)
    ./certbot-auto --apache
  2. 選擇要簽發憑證的主機名稱
  3. 選擇未來的連線方式
    1. HTTP, HTTPS 並存
    2. 全部導向 HTTPS (會自動在該主機設定檔加上 rewrite rule)
  4. 測試是否正常簽發
    https://www.ssllabs.com/ssltest/analyze.html?d=[主機名稱]

Wildcard Certificate 步驟:

  1. 採用手動設定,挑戰模式採用 DNS TXT 紀錄:
    ./certbot-auto certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --email yourname@example.com -d "*.yourdomain.com,yourdomain.com"
  2. 接下來會出現要加入 DNS TXT 的內容:
  3. 加入後用以下指令確認是否已經生效:
    [Linux] dig _acme-challenge.yourdomain.com txt
    [Windows] nslookup -q=txt _acme-challenge.yourdomain.com
  4. 生效後按下 Enter
  5. 由於本範例登錄了 *.yourdomain.com 及 yourdomain.com 兩個域名,所以 2~3 步驟會跑兩次(請注意那個挑戰用的值 xxxxxxxx 每次都不同,此外,不要刪除前一個 TXT Record 而是建立同名的第二個 TXT Record)
  6. 等第二個生效等了一段時間,因為要看主機的 TTL
  7. 以後還是得使用以上相同流程來更新憑證
  8. 由於此方式僅申請憑證但沒有自動設定到 Web Server,所以後續要自己手動設定

維護:

  • 列出所有憑證:
    ./certbot-auto certificates
  • 更新所有憑證:
    ./certbot-auto renew
  • 更新單一憑證:
    ./certbot-auto renew --cert-name [憑證名稱]
  • 刪除憑證:
    ./certbot-auto delete --cert-name [憑證名稱]

Reference:

Issues:

分類: Web technology | 在〈在 Linux (Ubuntu) 導入 Let’s Encrypt (for Apache)〉中留言功能已關閉

Notepad++ LESS file helper script (Python Script)

  1. download Python Script from http://npppythonscript.sourceforge.net/
  2. download nodejs from http://nodejs.org/
  3. install LESS compiler ( http://lesscss.org/usage/ )
  4. copy & paste code below into your startup.py
  5. change your Python Script initialisation to ATSTARTUP
  6. restart Notepad++ or run startup.py
  7. DONE. ヽ(´ー`)ノ
# Just in case, we'll clear all the existing callbacks
notepad.clearCallbacks([NOTIFICATION.FILEOPENED])
notepad.clearCallbacks([NOTIFICATION.FILESAVED])
 
class LessFileHelper:
 
    # Define the function to call just after the file is opened
    def fileOpened(self, args):
 
        bufferID = args['bufferID']
        filename = notepad.getBufferFilename(bufferID)
         
        if filename[-5:] == '.less':
            #console.write(filename)
            notepad.activateBufferID(bufferID)
            notepad.setLangType(LANGTYPE.CSS)
            editor.setProperty('lexer.css.less.language', '1')
 
    # Define the function to call just after the file is saved
    def fileSaved(self, args):
 
        bufferID = args['bufferID']
        filename = notepad.getBufferFilename(bufferID)
         
        if filename[-5:] == '.less':
            #console.write(filename)
            cmd = r'cmd /c %APPDATA%\npm\lessc.cmd -s "{0}" > "{1}.css"'.format(filename, filename[:-5])
            console.write(cmd + "\n")
            console.run(cmd)
 
lessFileHelper = LessFileHelper()
 
# ... and register the callback    
notepad.callback(lessFileHelper.fileOpened, [NOTIFICATION.FILEOPENED])
notepad.callback(lessFileHelper.fileSaved, [NOTIFICATION.FILESAVED])
分類: 資訊技術相關雜記 | 在〈Notepad++ LESS file helper script (Python Script)〉中留言功能已關閉

How To Compile Notepad++ Using Visual Studio 2010

如何用 Visual Studio 2010 編譯 Notepad++ 原始碼

一、下載 Notepad++ source code

Notepad++官網: http://notepad-plus-plus.org

可以使用 svn check out 原始碼直接下載當前最新的 trunk 或是直接下載 released 的整包原始碼。

SVN Repository:svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk
直接看 trunk 內容:http://svn.tuxfamily.org/notepadplus/repository/trunk/
整包:http://download.tuxfamily.org/notepadplus/6.5.5/npp.6.5.5.src.7z

原始碼裡面有兩個目錄:

..\PowerEditor
..\scintilla

及一個說明文件 readmeFirst.txt 文件,該文件就是編譯步驟說明,基本上照著裡面的說明進行即可。

先將原始碼檔案解壓(或下載)到一個路徑沒有空白字元及非ASCII字元的路徑裡

二、編譯 Scintilla

因為Notepad++是基於 Scintilla http://www.scintilla.org/ 開發的,所以需要先編譯Scintilla。

Scintilla 編譯的部分會分為兩種情況,差別在於是否包含 Boost。

因為 SciLexer.dll(編譯 Scintilla 後產生的動態鏈結函式庫)從 Notepad++ 6.0 以後發布的版本包括了 Boost 的 PCRE (Perl Compatible Regular Expressions) 程式庫,PCRE 是一個Perl 函式庫,包括 Perl 相容的正規表示式函式庫,所以編譯 Scintilla 需要 Boost 的支援。如果不包含 Boost,則編譯 Scintilla 時預設使用 POSIX 這個正規表示式函式庫來代替PCRE,這樣也能正常編譯執行 Notepad++,但是可能會導致部分功能不正常。

這裡可以根據自己的需要進行抉擇,筆者建議採用 Perl 的 RegExp 會比較好。

  1. 採用 Boost 的編譯步驟
    1. 到 Boost 官方網站 http://www.boost.org/ 下載函式庫包
    2. 解壓到一個路徑沒有空白字元及非ASCII字元的路徑裡
    3. Visual Studio 2010 的命令列工具,進入 \scintilla\ 目錄
      (在 程式集 > Microsoft Visual Studio 2010 > Visual Studio Tools >Visual Studio 命令提示字元 (2010),這點相當重要,因為 VS2010 的命令列工具會帶入所有執行環境變數,才能讓接下來的 make 作業正常執行,別像筆者直接 cmd 去跑,撞到一堆錯誤...)
    4. 進入 \scintilla\boostregex\ 目錄下執行 BuildBoost.bat,參數為 Boost 放置的路徑,例如:BuildBoost.bat E:\Lib\boost_1_55_0,或是也可以選擇性加上 --toolset msvc-10.0 參數表示用 VS2010 的版本去編譯
    5. 以上完成後,到 \scintilla\win32\ 目錄執行 nmake -f scintilla.mak
  2. 不採用 Boost 的編譯步驟
    1. 進入 \scintilla\win32\ 目錄下執行 nmake NOBOOST=1 -f scintilla.mak

編譯成功之後在 \scintilla\bin 目錄下會看到兩個 DLL 檔案,分別為 Scintilla.dll、SciLexer.dll,這等一下要搬到 Notepad++ 編譯後的 bin 目錄裡。

三、編譯 Notepad++

用 Visual Studio 開啟 \PowerEditor\visual.net 目錄裡的專案檔案,並讓它從 VS2005 升級到 VS2010 的檔案格式,接下來請依照 Notepad++ Wiki 裡所述:

專案 -> 屬性 -> VC++ 目錄,變更以下三個搜尋順序,將 $(WindowsSdkDir) 的移到 $(VCInstallDir) 前面

  1. In Show directories for -> Executable Files, move $(WindowsSdkDir)\bin up so its above $(VCInstallDir)\bin.
  2. In Show directories for -> Include Files, move $(WindowsSdkDir)\include up so its above $(VCInstallDir)\include.
  3. In Show directories for -> Library Files, move $(WindowsSdkDir)\lib up so its above $(VCInstallDir)\lib.

選擇組態為 Unicode Debug,按下開始偵錯,接下來就會在 \PowerEditor\visual.net\Unicode Debug 裡生出一堆檔案,還有幾個 OutputFile 屬性值 (notepadPlus_Debug) 不相符的警告,先不用理它。

把 Scintilla.dll、SciLexer.dll 兩個檔案複製到 \PowerEditor\visual.net\Unicode Debug 目錄,然後執行 notepadPlus_Debug.exe 應該就可以運作了。

四、編譯時期警告

  • "Error C2220 警告被視為錯誤" 的問題
    • 解決辦法:專案 ->屬性->組態屬性-> C/C++ -> 將 "警告視為錯誤" 的值改為 "否"
  • Notepad++ 輸出檔名的問題
    • 解決辦法:專案 ->屬性->組態屬性-> 連結器 -> 輸出檔案,修改檔名 notepadPlus_Debug.exe 為 Notepad++.exe

References:

分類: 資訊技術相關雜記 | 在〈How To Compile Notepad++ Using Visual Studio 2010〉中留言功能已關閉

Mozilla Archive Format remove scripts issue

在 Mozilla Firefox 安裝了 Mozilla Archive Format plugin 之後,會發現儲存下來的檔案中的 script 都被移除了,而且外部資源檔 (.js) 裡的內容都變成了 /* Script removed by snapshot save */,導致一些有動態效果的網頁在本地會無法運作。

當發生這個狀況時可透過修改設定進行調整,將 extensions.maf.save.keepscripts 改為 true 即可。

References:

分類: Web technology | 標籤: | 在〈Mozilla Archive Format remove scripts issue〉中留言功能已關閉

建立 LESS 的開發環境

LESS

LESS official website
LESS (stylesheet language) - Wikipedia, the free encyclopedia

LESS GitHub

Notepad++

對於 LESS 的支援,可在使用者自訂語言裡找到 LESS 來應用。

Eclipse

Eclipse plugin for LESS

LESS Compiler

自動編譯 LESS 為 CSS (Eclipse + LESS command line)

自動編譯 LESS 為 CSS (WinLess, standslone)

或是用 command line 作法,安裝 node.js 之後,用 /bin/lessc 來進行編譯

 

分類: Web technology | 標籤: | 在〈建立 LESS 的開發環境〉中留言功能已關閉