網頁

2020年2月11日 星期二

cygwin 檔案及目錄設定不同權限的做法

按原 cygwin 的預設預設權限權限方式為目錄 770 檔案 750 ,但不知為什麼有少數幾台主機所使用的目錄與檔案預設權限都是 770 (查詢 umask 後都是正確的 0022)。

可以使用以下方式直接重設想要的權限:

使用 find 來執行 chmod:

find Apache2/ -type d -exec chmod 770 {} \; <= /www 內所有目錄
find Apache2/ -type f -exec chmod 750 {} \; <= /www 內所有檔案

find 的 -type 參數可以指定檔案的類型,常用的選項有:

d:目錄。

p:具名的 pipe(FIFO)。

f:一般的檔案。

l:連結檔,如果與 -L 或 -follow 參數同時使用時,就只會搜尋到有問題的連結檔,如果想要與 -L 同時使用,請改用 -xtype。

s:socket 檔案。

其它用的到的 find 指令

//找出當下目錄權限為 777 的所有檔案

find . -type f -perm 0770

//找出當下目錄權限不是 777 的所有檔案
find . -type f ! -perm 0770
雜記

目前遇到的狀況是在 htdocs 目錄內新增的檔案或目錄的權限會變成 ---rwx--- 的權限異常狀況。這也是為什麼會有這篇的存在。

發生原因不明,查看 umask 的預設設定皆正常,後來乾脆將 htdocs 目錄刪除,再利用 ssh ftp 帳號登入後,用這個身份新增目錄(e.g. mkdir htdocs),這時在這個特定的 htdocs 目錄內所新增的權限就是預設給的權限。


相關參考:

2019年12月8日 星期日

Apache 頻寬限制

Apache2.4 版本已內建頻寬限制模組。將 mod_ratelimit.so 啟動即可。

範例:針對特定目錄限速

LoadModule ratelimit_module modules/mod_ratelimit.so

<Directory "C:/Apache2/htdocs/download">
    SetOutputFilter RATE_LIMIT
    #1000kb/s
    SetEnv rate-limit 1000
</Directory>

相關資料

2019年11月22日 星期五

Web 與 CLI 使用不同的 PHP.ini 設定

Apache 使用自已專用的 php.ini 設定檔,PHP CLI Version 可以另外採用自已專用的 php-cli.ini 設定檔。

PHP CLI Version 使用範例:程式執行時可自行指定要使用的 php-cli.ini 設定  ( php -c C:/PHP/php-cli.ini test.php ;  -c <path>|<file> Look for php.ini file in this directory )

或者輸入 php --ini 看看 Loaded Configuration Files 是不是 php-cli.ini ,是的話直接輸入 php test.php 也是與上方的範例的執行結果相同。

註:將 php.ini 複製並重新命名為 php-cli.ini,這個在 CLI Version 模式會自動的找到 php-cli.ini。但若改成其它名稱時就不會 (例如: php_cli.ini ),此時程式在自行指定要使用的 php 設定檔。這種做法也許是是更為安全的作法,如此在 CLI 模式其它使用者,在時用時原則上仍是採用與 Web 相同的設定的 php.ini 設定。有特殊需求時再自行指定特定的 php_cli.ini 設定檔。

相關參考:

2019年6月6日 星期四

Google analytics 使用gtag 加入 event 事件

新版本的 google analytics 追蹤碼不能使用 ga 的機制
e.g. ga('send', 'event', [eventCategory], [eventAction], [eventLabel], [eventValue], [fieldsObject]);

改寫網頁後,觀察了很久,一直很納悶為什麼在 google analytics 平台內沒有看到資料。後來才發現到這件事。基本上網路上所找到的範例基本上還是以 ga 的方法為主。

目前新版本的 google analytics 追蹤碼要導入事件,要採用的方法是要改用 gtag 的方法。撰寫方式參考相關資料內的連結。

為了方便使用,參考 google 的範例,稍微調整成下面的方式:

function trackEvent(eventCatalog,eventAction,eventValue) {
    gtag('event', 'click', {
        'event_category' : eventCatalog,
        'event_action' : eventAction,
        'event_label' : eventValue,
        'value' : 1
    });
}

這樣的方式前端頁面要使用時,只要在需要加入監控的連結內加入此 function 即可,範例如右 <a href = 'https://www.google.com' onclick="trackEvent(TEST, click,Google)">Google</a>

google analytics 內的報表 =>行為 =>事件內的資料需要等待一段時間才能看到數據。想要即時知道到底改寫正不正確,可以利用報表 =>即時 =>事件功能頁面,再同時打開測試頁面點選測試 URL。這個時候若有在該功能頁面看到數據就表示新加入的 google event tracking 的功能是沒有問題的。


相關資料:

2019年4月17日 星期三

伺服器重新開機自動發送信件提醒

伺服器重新開機自動發送信件提醒,一直以來都是利用 PHP 再加上作業系統的工作排程來逹成這件事,但不是每一台主機都有 PHP 的環境。

找一下資料,在 Windows 主機上也可以透過 Powershell 的腳本來完成這件事,實作方式直接參考相關資料連結即可。

腳本如下,將紅色字體的地方修改成符合自己的環境,再將此文字檔另存為 EmailScript.PS1。透過系統的工作排程器讓主機重新開機後自動執行這個檔案。這樣就可以了。

Powershell 腳本如下:
$SmtpClient = new-object system.net.mail.smtpClient

$MailMessage = New-Object system.net.mail.mailmessage

$SmtpClient.Host = "SMTP.YOURcompany.com"

$mailmessage.from = ("DoNotReply_ToThisEmail@ YOURcompany.com ")

$mailmessage.To.add("Person@ YOURcompany.com , Person2@ YOURcompany.com, …… ")

$mailmessage.Subject = "Alert Subject"

$mailmessage.Body = "Alert Body with Instruction to recipients"

$smtpclient.Send($mailmessage)
工作排程器設定方式:
Program/script:設定為 C:\windows\system32\WindowsPowerShell\v1.0\powershell.exe

Add arguments(optional):設定為 -NoProfile -Executionpolicy bypass -file "Path to your file.ps1" 

相關資料:

2019年4月2日 星期二

AdGuard Home on Raspberry Pi 安裝備忘

  • 安裝指指南
  • 簡單步驟幾個步驟:
    cd $HOME
    wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.94/AdGuardHome_v0.94_linux_arm.tar.gz
    tar xvf AdGuardHome_v0.94_linux_arm.tar.gz

    sudo ./AdGuardHome -s install

    到其它電腦內使用瀏覽器連到 Ras[berru Pi 的 IP (e.g. http://192.168.0.2:3000/)後按頁面上的步驟設定即可。
  • 其它要使用的電腦在 DNS 的部份指向這台 Ras[berru Pi 的 IP。
AdGuard 也有推自己的 AdGuard DNS,將電腦的 DNS 直接指向 176.103.130.130、176.103.130.130 就可以達到基本的阻擋廣告效果。自建 Server 的好處在於可以自行定義阻擋規則與加入許多己撰寫好的規則,在應用上更為彈性。

AdGuard 也有提供其它平台的編譯版本,Windows 版本的安裝也很簡單,直接點選執行檔就可以使用了。

相關資訊: