廣告聯播

2019年12月29日 星期日

Spring Boot 啟用 gzip 及 cache 提升網站速度

From: Polin Wei

WordPress 利用 gzip 與外掛提升網站速度 中有提到設定 gzip 壓縮,可以減少在主機與使用者端之間,資料傳輸量的減少,進而提升網站回應的速度,它的方法原則上是利用修改 .htaccess 的設定來達成,而 Spring Boot 是一個非常功能強大且靈活的系統,有很多功能只要透過設定就可以達成,在 gzip 的功能上只要在 application.properties 加上下列設定即可。


  1. # =================================
  2. # GZip compression, HTTP/2, caching
  3. # =================================
  4. # Enable response compression
  5. server.compression.enabled=true
  6. # The comma-separated list of mime types that should be compressed
  7. server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml
  8. # Compress the response only if the response size is at least 1KB
  9. server.compression.min-response-size=1024

2019年12月14日 星期六

Spring Boot SSL Certificate Configure

From: Polin Wei

文章中 Spring Boot 客製化 登入 ( Login ) 與 認證 (Authenticate) 機制 建立了一個需要認證的網站,既然要輸入帳號/密碼,那麼就應該要有 SSL 憑證的保護。Spring Boot 在套件 spring-boot-starter-web 裡,已有配置 Tomcat 伺服器,可利用 使用 Let’s Encrypt 取得 SSL 來設定 HTTPS 並強制使用 SSL 安全加密協定 裡申請的免費SSL憑證,來強化網站安全。

  1. 產生 Spring Boot 裡 Tomcat 必要的 jks 檔案
  2. Spring boot 裡 application.properties 檔案內容
  3. Spring Boot 讓 HTTP 強制轉換到 HTTPS
  4. keytool Options 參數說明

  • 產生 Spring Boot 裡 Tomcat 必要的 jks 檔案

要產生 Spring Boot 裡 Tomcat 必要的 jks 檔案,需要 利用 Apache 的 Virtual Host 功能來架設虛擬網站 文章提到 XAMPP 裡的 openssl 協助,以及 Spring Boot 在 Eclipse 的安裝與設定 裡的 OpenJDK ,從 使用 Let’s Encrypt 取得 SSL 來設定 HTTPS 並強制使用 SSL 安全加密協定 取的免費SSL憑證,會有三個檔案:private.keycertificate.crtca_bundle.crt ,使用的指令如下

2019年12月9日 星期一

WordPress 網站搬移到新網址該做那些事呢?

From: Polin Wei


主要有下列幾個步驟:
  1. Upload your website to new host
  2. Export/Import Your WordPress Database
  3. Modify two records: siteurl & home on table: wp_options
  4. Modify wp-config.php File
  5. Change all the URL of guid & post content in the posts

  • Upload your website to new host
先找到安裝 WordPress 的根目錄
wordpress-root

然後將 WordPress 安裝目錄下的所有檔案如下圖,整個上傳到新網站的根目錄下。(可以使用 FileZilla 來上傳)

2019年12月3日 星期二

WordPress 安裝與網站基本設定

From: Polin Wei

WordPress WordPress是一個以PHP和MySQL為平臺的自由開源的 Blog 部落格軟體和內容管理系統。WordPress具有外掛程式架構和範本系統,更可以透過 HOOK 的規範加入自己的客製程式。截至2018年4月,排名前1000萬的網站中超過30.6%使用WordPress。WordPress是最受歡迎的網站內容管理系統。很多虛擬主機或雲端網站都有提供免費的 WordPress 佈建軟體供自行建置屬於自己的部落格,本站則是先個人電腦安裝並設置後才上載到雲端網站,整個WordPressordPress建站的過程如下:
  1. 設定 DNS 與安裝 WordPress
  2. WordPress 網站基本的設定
  3. WordPress 佈景主題安裝與設定
  4. WordPress 實用外掛推薦
  5. WordPress 網站狀態檢查
  • 設定 DNS 與安裝 WordPress
若想要建置一個專屬自己的部落格,雖然可以在 Google 的 Blogspot 如: 我的工作日記 或是 痞客邦 如: MISTECH 技術手抄本 中申請免費的空間,但免費的資源總是會有限制,因此, 若想要一個完全可以屬於自己可以操控的網站,那麼就必需購買一個網域及一個主機。

2019年12月1日 星期日

WordPress Useful Plugin – 實用外掛推薦

From: Polin Wei

WordPress Useful Plugin – 實用外掛推薦

WordPress 分成 wordpress.orgwordpress.com  兩種 ,本站所介紹的主要的是 wordpress.orgWordPress 的優點就是他的自由度高。即使本體其實是Blog,但也能夠利用各主題或是外掛 Plugins 來讓它搖身一變成為企業網站或是網路商店等。以下整理了本站使用的及各功能實用的WordPress常用外掛,推薦 WordPress 的站長們使用。
實用的 WordPress 常用外掛以下列幾種來作區分介紹:
  1. 網站防護
  2. 網站優化
  3. 文章編輯
  4. 後台管理
  • 網站防護
Jetpack: WordPress.com官方所出的多功能型外掛,它是你網站的安全護衛,可確保你不會遭受暴力破解攻擊及未經授權的登入。基本的防護一律免費,etpack擁有各式各樣的免費功能,例如:網站流量統計分析、發文後自動分享至社群網站、文章分享按鈕、相關文章列表、暴力破解防護、主機停機監控、圖片用CDN、隨選圖庫、各式側邊欄小工具、使用社群網站帳號登入留言等……進階級方案則會加入擴充的備份以及自動化修正。
Akismet Anti-Spam : 它是保護網站遠離垃圾留言的絕佳方式,並由 Akismet 提供不間斷的保護。Akismet 使用全球垃圾留言資料庫,為網站上的留言及聯絡表單內容進行檢查,保護網站免受惡意內容侵害。網站管理員可以在網站的 [留言] 管理頁面中,檢視已遭 Akismet 攔截的垃圾留言。


繼續閱讀: WordPress Useful Plugin – 實用外掛推薦


2018年12月14日 星期五

Powerful Spring Boot Admin

From: Polin Wei
利用 Spring Boot 可以快速開發客製化應用系統, 而這些由 Spring Boot 框架建立的應用系統則可以利用 Spring Boot Admin 來作統一的管理. 由這系統可以讓您知道 Application Server 的版本如: Java , Tomcat , session .... 等, 所以在管理這些服務系統架構中...監控管理是非常重要的一環

Server 端

1. 建立一個新的 Spring Starter Project : sbAdmin , 且只要選擇 Web 就好. 其它的相依套件如下:
buildscript {
 ext {
  springBootVersion = '2.1.1.RELEASE'
 }
 repositories {
  mavenCentral()
 }
 dependencies {
  classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
 }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.admin'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
 mavenCentral()
}


dependencies {
 implementation('org.springframework.boot:spring-boot-starter-web')
 compile('de.codecentric:spring-boot-admin-starter-server:2.1.1') // SpringBoot Admin
 testImplementation('org.springframework.boot:spring-boot-starter-test')
}
Server 端的 application.properties 設定啟動的 port: 8099

server.port=8099

Client 端

引入的相依套件
dependencies {
 compile('de.codecentric:spring-boot-admin-starter-client:2.1.1') // SpringBoot Admin Client
}

設定Spring Boot Admin 可以存取 Client 端的設定

(繼續閱讀...)

Develop custom taglib using Freemarker in Spring Boot

From: Polin Wei
在 Spring Boot 使用 Freemarker 模板來快速建立客製化的標籤 (taglib) 是非常簡單的事. 作下列幾個步驟即可.


public class FtlTemplateTag extends TagSupport {

 private static final long serialVersionUID = 1L;
 
 private String fileName = null;
    private String paramsStr = null;
    private String columnsStr = null;
    private ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    
 public void setFileName(String fileName) {
  this.fileName = fileName;
 }    
 public void setParamsStr(String paramsStr) {
  this.paramsStr = paramsStr;
 }
 public void setColumnsStr(String columnsStr) {
  this.columnsStr = columnsStr;
 }
 /**
  * JSON 字串轉換成 MAP
  * @return
  */
 private Map setParams() {
  Gson gson = new Gson();
  return gson.fromJson(paramsStr, new TypeToken>() {
  }.getType());
 }
 
 private Map setColumns(){
  Locale locale = LocaleContextHolder.getLocale();
  
  messageSource.setBasenames("i18n/messages");
  
  Gson gson = new Gson();
  Map columns = gson.fromJson(columnsStr, new TypeToken>() {}.getType() );
  
  //轉換多語系
  Map dataModel = new LinkedHashMap();
  columns.forEach( (k,v)-> dataModel.put(k, messageSource.getMessage(v, null, v, locale)) );
   
  return dataModel;
 }
 
 
 @Override
 public int doStartTag() throws JspException {
  JspWriter out = pageContext.getOut();
  
  Configuration conf = new Configuration();
  conf.setClassForTemplateLoading(this.getClass(), "/templates/");
  conf.setDefaultEncoding("UTF-8");
  
  try {
   Template  tl = conf.getTemplate(fileName);
   Map dataModel = new HashMap();
   dataModel.putAll(this.setParams());
   dataModel.put("columns", this.setColumns());
   

   tl.process(dataModel, out);
   
  } catch (Exception e) {
   e.printStackTrace();
  }  
  return Tag.SKIP_BODY;
 }
}

<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">
    <description>Polin WEI Tag Library</description>

    <tlib-version>1.0</tlib-version>
    <short-name>pw</short-name>
    <uri>/polinwei/tags</uri>

    <tag>
        <description>Get the file name of freemarker template</description>
        <name>FtlSampleTemplate</name>
        <tag-class>com.spring.jwt.tablibs.FtlTemplateTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <description> Freemarker Template 的檔案</description>
            <name>fileName</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>parmsStr</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>columnsStr</name>
            <required>false</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>


(繼續閱讀...)

WordPress 架站必備外掛