自行complie mod_jk

apache mod_jk本身並沒有提供binary版本,所以需要自行make及install,最近版本是JK 1.2.46

首先先下載source,選擇linux可用的版本tar.gz

cd /tmp
wget http://ftp.tc.edu.tw/pub/Apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz
tar -zxvf tomcat-connectors-1.2.46-src.tar.gz

安裝編譯必需lib

sudo yum -y install gcc automake autoconf libtool make
sudo yum -y install httpd-devel

編譯及安裝

cd /tmp/tomcat-connectors-1.2.46-src/native
./configure --with-apxs=/usr/bin/apxs
sudo make
sudo make install

可以在/etc/httpd/modules看到剛才編譯好的mod_jk.so

利用raspberrypi安裝EINVTurnkey會遇到的問題排除

在Raspberry pi 安裝Linux版的 EINVTurnkey電子發票整合服務平台時會遇幾個問題

*不支援64bit SWT library

Exception in thread "main" java.lang.UnsatisfiedLinkError: Cannot load 64-bit SWT libraries on 32-bit JVM
	at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
	at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
	at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
	at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
	at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
	at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
	at com.tradevan.gateway.client.view.EnvironmentSetting.main(EnvironmentSetting.java:125)

這部份基本上沒解決,所以改跑 32元位版本來解決這個問題

*在32bit時找不到SWT library位置

Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
	no swt-gtk-3738 in java.library.path
	no swt-gtk in java.library.path
	/home/pi/.swt/lib/linux/arm/libswt-gtk-3738.so: /home/pi/.swt/lib/linux/arm/libswt-gtk-3738.so: 無法開啟共用目的檔: 沒有此一檔案或目錄 (Possible cause: can't load IA 32-bit .so on a ARM-bit platform)
	Can't load library: /home/pi/.swt/lib/linux/arm/libswt-gtk.so

	at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
	at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
	at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
	at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
	at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
	at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
	at com.tradevan.gateway.client.view.EnvironmentSetting.main(EnvironmentSetting.java:125)
Read More

Apache使用多個docker php-fpm

原本centos linux安裝Apache及php5.4(php-fpm),最近一些framework只支援php7.2,想到要昇級或共存就覺得會有一場災難,想說是否可以使用docker php7.2-fpm來直接使用,減少系統的昇級或更換過程的一些問題。

可以直接略過1,2二步奏直接pull build好的images

docker pull catyku/php-fpm7.2

https://hub.docker.com/r/catyku/php-fpm7.2/

1.首先建立自己需要的php-fpm Dockerfile

FROM php:7.2-fpm
MAINTAINER yku "[email protected]"

#  設定時區
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#  更新系統及增加php外掛mysqli pdo_mysql等
RUN apt-get update && apt-get install -y \
        git \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
        && docker-php-ext-install zip \
        && docker-php-ext-install pdo_mysql \
        && docker-php-ext-install opcache \
        && docker-php-ext-install mysqli \
        && rm -r /var/lib/apt/lists

2.編譯Dockerfile

docker build -t catyku:php-fpm7.2 .

3.然後啟動docker

docker run -d --name php-fpm7.2 -p 127.0.0.1:9001:9000 -v /var/www/:/var/www catyku:php-fpm7.2

因為9000 port已經給原本系統的php5.4-fpm使用了,只好把它調開,並指定www工作資料夾給php7.2-fpm

(建議可以細調php-fpm的設定檔,或是把設定檔也-v出來)

Read More

docker安裝apache、mariadb、php

在docker安裝Apache php及Mariadb服務,可以快速部署安裝於多種OS,不管是在開發或是正式上線環境都可以一樣。

images使用是官方的apache php 7.2版本;mariadb:latest,其中apache-php部份還需要另外安裝mysqli擴展套件。

《Docker —— 從入門到實踐-》正體中文版

指令如下

資料庫部份

sudo docker search mariadb
sudo docker pull mariadb
sudo docker run -d --name mariadb -e MYSQL_ROOT_PASSWORD=youpass --restart unless-stopped mariadb

參數–restart unless-stopped可以讓os在重開機時自動啟動docker container,不過自已下指令停止時不會自動再啟動

Read More

[Csharp]寄送Gmail使用OAuth2

這是一個desktop application桌面應用程式,主要功能利用Gmail寄送郵件。

首先查看Google文件說明,並使用其範例做修改。

1.開啟Gmail API功能

  1. 使用這個連結 在 Google Developers Console建立一個專案並啟用API, 按繼續,來到憑證頁面
  2. 在增加憑證到您的專案頁面,按取消按鈕。
  3. 在頁面頂部,選擇OAuth同意畫面tab。 選擇一個電子郵件地址,輸入一個產品名稱(如果尚未設置),然後單擊儲存按鈕。
  4. 選擇憑證tab,按下建立憑證按鈕,選擇OAuth用戶端ID
  5. 選擇其它,並輸入一個名稱識別,按下建立按鈕。
  6. 建立完成會顯示您的用戶端ID及用戶端密鑰等資訊,按下確定按鈕。
  7. 按下”下載JSON“圖示,把檔案拉至專案Properties目錄,並設定複制到輸出目錄:一律複製

2.建立一個專案,並利用NuGet封裝管理員(工具->NuGet封裝管理員)來增加參考Google.Apis.Gmail.v1。

3.把文件裡的Example copy到Program.cs取代

Read More