2020年6月17日 星期三

Apache 2.4 新增HTTP VirtualHost

環境:
OS:Ubuntu 18.04 Server
Apache2.4
網站目錄:/www/example1
domain name:www.example1.com

1.增加網站目錄之權限設定
cd /etc/apache2/conf-available/
sudo vim example1.conf

#於example1.conf中加入下列設定,可參考apache2.conf中之<Directory /var/www/>之設定。
<Directory /www/example1>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

2.啟用設定
sudo a2enconf example1
sudo systemctl reload apache2

3.新增HTTP之VirtualHost
cd /etc/apache2/sites-available
sudo cp 000-default.conf example1.conf
sudo vim example1.conf

#內容設定如下
<VirtualHost *:80>
    ServerName www.example1.com
    ServerAdmin admin@www.example1.com
    DocumentRoot /www/example1

    ErrorLog ${APACHE_LOG_DIR}/error_example1.log
    CustomLog ${APACHE_LOG_DIR}/access_example1.log combined
</VirtualHost>

4.啟用網站
sudo a2ensite example1.conf
sudo systemctl reload apache2

5.試試瀏覽網頁 http://www.example1.com

2019年9月11日 星期三

於windows 10 中讀取副檔名為HLP的說明檔(以Powerbuilder 10.5之說明檔為例)

環境:windows 10 64bit


1. 先取得XP作業系統內之winhlp32.exe,我使用的版本為5.1.2600.5512。(我於windows 7 中取得的winhlp32.exe檔案是無法成功使用,會出現錯誤訊息「(9009)」。)




















2. 取得PowerBuilder 10.5的說明檔,預設路徑如下:
C:\Program Files (x86)\Sybase\PowerBuilder 10.5\Help\PBHLP105.HLP


3. 將PBHLP105.HLP按滑鼠左鍵拖曳到winhlp32.exe上後放開滑鼠左鍵,即會以winhlp32.exe開啟PBHLP105.HLP檔案。









4. 成功於windows 10 中開啟HLP檔。

2018年10月27日 星期六

中油國光牌環保去漬油

在中油直營站購買環保去漬油0.5L只要35元,適用電子、鐘錶、懷爐、家電產品清洗用,其他管道如網購、大賣場、五金行等售價皆高於此價格,中油直營站滿多的,所以有需要的朋友直接去中油直營站購買即可,還會開發票。





2018年5月9日 星期三

php7.2連Sybase資料庫

環境:
OS:Ubuntu 18.04 Server
Apache2.4
PHP7.2

因PHP7.0以後無sybase相關function,需透過freetds為連線介接,再使用PDO相關function進行連線。
1. 安裝相關套件
sudo apt install php7.2-sybase
2.設定freetds
sudo vim /etc/freetds/freetds.conf [global]
        client charset = UTF-8
        charset = utf8

[sybase_db]
        host = db.com.tw
        port = 5000
        tds version = 5.0

3. 使用PDO function測試是否連線成功。
<?php
$db_host = "sybase_db";
$db_user = "帳號";
$db_pass = "密碼";
$db_select = "dbname";

$dbconnect = "dblib:host=".$db_host.";dbname=".$db_select;
$pdo_sybase = new PDO($dbconnect, $db_user, $db_pass);

$sql = "select * from sybase_table where 1=1";
$res = pdo_sybase->query($sql);
        while ($row = $res->fetch()){
                print_r($row);
        }
?>

Ubuntu 停用IPv6或以IPv4連線優先

環境:
OS:Ubuntu 18.04 Server

在預設狀況下,ipv4、ipv6是同時啟用的,但常發現會優先使用ipv6連線時連線很慢,等到ipv6無法連線時,才會改為ipv4連線,在這過程中已經浪費一些時間。改善此狀況有下列兩種方式。

方式一:停用ipv6,此方法網路上很多說明,但個人並不建議用此方法。
1. 編輯 sudo vim /etc/default/grub
GRUB_CMDLINE_LINUX="ipv6.disable=1"     #修改此行
2. 執行 sudo update-grub2
3. 重開機後以ifconfig 檢查是否關閉ipv6

方式二:以ipv4優先,此方法較理想,不需停用ipv6。
1. 編輯 sudo vim /etc/gai.conf
#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96  100      #移除此行註解

2. ping google.com.tw 檢查是否以ipv4連線

2018年4月18日 星期三

Ubuntu Apache 2.4 正確使用conf、mods、sites等設定檔。

環境: 
OS:Ubuntu 14.04 Server 
Apache:2.4

一、目錄結構
/etc/apache2/
|-- apache2.conf
|-- conf-available
|       |-- *.conf
|-- conf-enabled
|-- mods-available
|       |-- *.conf
|-- mods-enabled
|-- sites-available
|       |-- *.conf
|-- sites-enabled


apache2.conf 是主要的設定檔。
conf-available/*.conf 是「可用的」config檔。
conf-enabled/*.conf 是「已啟用的」的config檔(皆為超連結)。
mods-available/*.conf 是「可用的」config檔。
mods-enabled/*.conf 是「已啟用的」的config檔(皆為超連結)。
sites-available/*.conf 是「可用的」站台設定檔。
sites-enabled/*.conf 是「已啟用的」的台設定檔(皆為超連結)。

注意!conf-enabled、mods-enabled、sites-enabled內的檔案只是連結至所對應「*-available」目錄中的設定檔,所以要設定檔案請在「*-available」目錄中設定,最後再用啟用設定檔的指令,在「*-enabled」目錄中建立連結。

二、啟用及關閉設定
1. conf啟用及關閉範例
啟用 sudo a2enconf charset
關閉 sudo a2disconf charset

2. mod啟用及關閉範例

啟用 sudo a2enmod userdir
關閉 sudo a2dismod userdir

3. site啟用及關閉範例


啟用 sudo a2ensite ssl

關閉 sudo a2dissite ssl

三、重啟Apache
1. 測試 Apache 設定檔有沒有錯誤,看到 Syntax OK, 就可以啟動apache2。
apache2ctl configtest

2. 重新啟動。
sudo service apache2 restart



2017年3月12日 星期日

Android如何正確處理 WebView SSL 錯誤處理

●官方說明:
自 2016 年 11 月 25 日起,只要新的應用程式或更新內容含有這個SSL Error Handler安全性漏洞,一律禁止在 Google Play 發佈。

如要解決這個問題,請更新應用程式的程式碼,在伺服器提供的憑證符合預期時叫用 SslErrorHandler.proceed(),不符合預期時則叫用 SslErrorHandler.cancel()。


●以往大家都在WebView的onReceivedSslError事件中直接忽略檢查,使應用程式含有SSL Error Handler安全性漏洞。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    handler.proceed();
}


●現在應該要正確的處理onReceivedSslError事件,才可在 Google Play 發佈。
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    SslCertificate sslCertificate = error.getCertificate();

    final AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("SSL 憑證錯誤");
    builder.setMessage ("無法驗證伺服器SSL憑證。\n仍要繼續嗎?");
    builder.setPositiveButton("繼續", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.proceed();
        }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.cancel();
        }
    });

    final AlertDialog dialog = builder.create();
    dialog.show();
}