Plesk Onyx on CentOS 7 AWS AMI 一鍵安裝

有什麼比一鍵安裝更快樂呢

千呼萬喚始出來,AWS有Plesk官方的AMI囉!千呼萬喚始出來,AWS有Plesk官方的AMI囉!

相信很多接觸過虛擬主機的人都應該用過Plesk,Plesk是一套主流的主機管理系統,雖然cpanal也是主流的主機管理系統,但我還是習慣使用Plesk,可能是介面比較漂亮吧,以貌取程式,之前要在AWS上安裝還要從OS一個一個裝,慢慢去調校,期待有沒有AMI的解決方案,Plesk官方發布了一篇新文章,裡面有提到已經可以透過AWS AMI一鍵安裝AWS環境及Plesk

作業系統版本

提供3種不同作業系統的映像檔

OS AWS AMI

CentOS

Plesk Onyx on CentOS 7 (Webhost)

Ubuntu

Plesk Onyx on Ubuntu 16.04 (WebHost)

Windows

Plesk Onyx on Windows 2012 R2 (WebHost)

Plesk十天試用

AWS AMI Plesk十天試用

預先配置

講簡單一點就是都幫你配好好的拉,你只要點一下就好

預先安裝的 Plesk Extensions

  • Plesk Premium郵件由Kolab提供 – 安全的業務類電子郵件和協作工具,最多10個郵箱
  • Plesk電子郵件安全包(卡巴斯基AV / Magicspam) – 保護您的電子郵件
  • Plesk防火牆保護
  • ModSecurity  – 保護您的服務器免受惡意攻擊
  • Symantec免費SSL證書(基本) – 來自全球安全領導者的網站安全*
  • WordPress工具包 – 只需點擊幾下即可在單個服務器上大量管理多個WordPress實例
  • Plesk安全顧問 – 如果你不是安全專家,這個嚮導是!
  • Amazon Route 53 DNS
  • Boldgrid  – 快速,輕鬆的網站建設者在WordPress之上工作*

預配置為性能和安全性

  • 服務提供商視圖
  • 開啟防火牆
  • 使用Atomicorp的基本規則開啟Web應用程序防火牆
  • 開啟Fail2Ban禁用IP地址過濾
  • PHP 7-FPM(FastCGI Process Manager)
  • 由NGINX服務

如果你是AWS新用戶,還送你 $500 美金 AWS credits

Plesk on AWS

PHP include vs require

PHP include 與 require 到底有什麼差異阿?

相信 include() 跟 require() 大家並不陌生,都是用來引入文件,如果都一樣又為何要分成 include() 與require()呢,其實還是有些差異拉,我把在網路上看到的差異做成了比較表,方便大家選擇最適合的。

 

include

require

用到時才載入 一開始就加載
檔案發生錯誤的話,會顯示警告,不會立刻停止 會顯示錯誤,立刻終止程式,不再往下執行。
需要處裡文件檢查、速度相對較慢 速度比較快
適合動態態載入檔案 適合靜態檔案
適合用來引入動態的程式碼 適合用來引入靜態的內容
可以用在迴圈
有返回值

PHP in_array comparing two arrays

PHP in_array() 無法比較兩個陣列,這邊採取替代的作法,使用array_intersect(),取得值的交集

參考資料:

Plesk 設定排程任務,定時瀏覽指定網頁

Plesk是一套很方便的主機系統管理程式,也是主流主機管理程式之一,很多主機商也都用Plesk來進行主機系統管理,本篇要介紹如何設定排程任務

什麼是排程任務?

有時我們在寫程式的時候會希望主機自動在某一個時間區間執行某些任務,例如:每日午夜12:00,進行購物車訂單出貨拋轉作業,當然也可以人工每天12點去瀏覽這支程式,只是非常愚蠢,偷懶是工程師的美德,於是我們需要一個像計時器的東西,時間到去做某些動作,達成自動化目的。

建立任務處理程式

我習慣會寫一支程式,專門執行某些特定任務,比如說:購物車訂單出貨拋轉作業,這支程式可透過瀏覽網頁的方式去驗證是否正常運行,確定一切都正常,接著我們需要一個觸發程式的瀏覽者,這我們就透過Plesk的排程任務達成。

設定Plesk

登入Plesk ,到指定網域的管理頁面,右上角有一個叫計畫的任務
PS. 如果您的Plesk管理面板中沒出現這個選單,那就是這功能管理者沒開放,就需聯絡你的主機商,如果他們不願意開這功能就換家主機商吧。
登入Plesk ,到指定網域的管理頁面,右上角有一個叫計畫的任務

添加一個任務

設定執行時間

  1. 我選擇獲取URL選項,讓Plesk排程任務,在指定時間瀏覽我的某一支檔案。
  2. 輸入要執行的檔案URL
  3. 設定時間及週期
  4. 發送通知,可以選擇僅發送異常通知就好
  5. 選擇通知對象
  6. 儲存

驗證

  1. 設定完成後,一定要檢查是否有在指定時間及周期中執行,可以寫個小程式,去紀錄執行時間,以驗證程式有正常運行。
  2. 承上點,若你確定你的程式運行完全正常沒有問題,但排程卻沒正常運行,請檢查排程設定,若也都沒錯,請聯絡主機商。

安全設定

  1. 眼尖的朋友應該會看到我的執行URL加了個c參數,後面跟了一堆亂碼,這是一個簡單的安全設定,為了避免爬蟲或有心人士,在非排程定義執行區間去執行此程式,所做的驗證機制,在我的php檔最前方加入下方程式碼,若沒有正確的key,此頁將返回hTTP 404錯誤,當作根本就沒這頁的存在
  2. 設定 .htaccess 檔,該URL只允許執行某一 IP執行

    參考資料:

PHP 清除字串頭尾空白

這是一個很常用的功能,有時我們在處理表單發送後的資料,有時常常會多按了一些空白,這些空白可能會導致資料錯誤,或是資料轉檔時,明明看資料沒錯,怎麼就對不起來,比如說我剛剛的例子,搞了我好久

用法:

案例:

API回傳Json資料,怎麼看pickUpDateTime,都是沒值的,我就用empty()來做判斷,卻怎麼都友值,弄了半天是空白字元,我也不懂這API主人為什麼空值不拋要拋一堆空白自原來害人

不管!!至少問題找到了,問題就解決一半了,接著就是在用empty()作空值判斷前,先用trim()去過濾這些該死的空白

PHP is Json 判斷字串是否為Json格式

Check string is json type
is Json 判斷字串是否為Json格式

Usage

 

[PHP] php7 Call to undefined function curl_init() , fix the issue

Move to Windowssystem32 folder:
libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll

Move to Apache24bin folder
libssh2.dll

Uncomment extension=php_curl.dll

原文
http://php.net/manual/en/curl.installation.php

# PHP.ini取消註解
extension=php_curl.dll

# 移動PHP目錄中的下列檔案至 C:Windowssystem32中
libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
# 移動PHP目錄中的下列檔案至apachebin中
libssh2.dll

MIS WAMP手動安裝及設定教學 Apache2.4 + PHP7 for windows10

手動安裝 Apache2.4 + PHP7 for windows10

首先,我該選x64或x86安裝呢?

何謂 x64 和 x86,可閱讀下方網址文章,本篇不多做解釋
x86和x64到底有什麼差異?

注意 !!!

若安裝x64版本,PHP & Apache 都需要選擇x64版本,反之亦然

安裝 PHP7 for windows

PHP For Windows 官網

http://windows.php.net/

PHP For Windows 歷史版本 (官網)

本例下載 PHP 7.0 VC14 x64 Thread Safe

解壓縮至 PHP 的存放目錄
本例解壓縮至 C:php-7.0.10-Win32-VC14-x64

# 設定 php.ini

PHP.ini 為PHP的設定檔
PHP安裝目錄中尚無 PHP.ini
但於安裝目錄中有下列2個檔案
php.ini-development 為開發環境用參考設定檔
php.ini-production    為正式環境用參考設定檔
本例複製 php.ini-development 更名為 php.ini 置於於PHP安裝目錄中
文字編輯器開啟 php.ini

以下為常用設定,視需求調整參數,至於設定內容就不於本篇討論

# 設定環境參數

# 設定延伸套件,把前方的「;」移除即可

儲存 php.ini

# 設定延伸套件

移動PHP目錄中的下列檔案至 C:Windowssystem32中
libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
移動PHP目錄中的下列檔案至apachebin中
libssh2.dll

安裝 Apache2.4 for windows

Apache for windows download
至 Apache Haus 下載 Apache 2.4.23

安裝 Apache2.4

本例下載 Apache 2.4.23 x64

httpd-2.4.23-x64-vc14.zip

解壓縮至 SERVER 的存放目錄

本例解壓縮至 C:AppServApache24

設定httpd.conf

httpd.conf 為 Apache的設定檔
先複製一份命名為 httpd.conf.bk 備份使用,以免改壞掉
文字編輯器開啟Apache安裝目錄中的  /conf/httpd.conf


# 設定環境參數

注意!!!!!!!!!!
分隔路徑的斜線,要用「/」而不是 windows 檔案總管的「」

於最下方加入下列文字,Apache連接PHP7

「C:/php-7.0.10-Win32-VC14-x64/」為PHP安裝目錄

注意!!!!!!!!!!

分隔路徑的斜線,要用「/」而不是 windows 檔案總管的「」

所以是
「C:/php-7.0.10-Win32-VC14-x64/」

不是
「C:php-7.0.10-Win32-VC14-x64

儲存 httpd.conf

 

Apache安裝為 windows 服務,開機自動啟動

開啟 Win10 的 「命令提示字元(系統管理員)」

// 測試設定檔是否正確

錯誤會跳錯誤訊息,正確會顯示syntax OK,接著安裝服務

// 安裝服務,反之解除安裝為 httpd.exe -k uninstall

測試是否正確運行

在網站根目錄C:/AppServ/www下建立一個index.php檔案

運行 http://127.0.0.1
看到下列畫面,代表安裝成功

呼~打完收工!!

[SQL] MySQL to PostgreSQL 好痛轉移,SQL語法差異

換資料庫真的好機掰,會有一堆未知問題,見招拆招,紀錄於下

LIMIT OFFSET

# UPDATE 不能加 ORDER BY and LIMIT
/* MySQL */
UPDATE abc SET aaa=1 WHERE id<=100 ORDER BY status DESC LIMIT 10

/* PostgreSQL */
/* 若有需求要用子句解決 */
UPDATE abc main SET aaa=1
FROM
 ( SELECT id FROM page_builder WHERE id<=100 ORDER BY status DESC LIMIT 10 ) sub
WHERE main.id = sub.id

PHP

//mysql 取新增的id
mysql_insert_id() mysqli_insert_id();
//PostgreSQL

[PHP] Fatal error: Uncaught Error: Call to undefined function ldap_connect apache2.4 php7 Windows

因為要用到 PHP  ldap_connect()
Fatal error: Uncaught Error: Call to undefined function ldap_connect()
設定方式網路上很多
主要是設定PHP.ini擴充套件,把前面的註解拿掉

如果還不行
Copy PHP 目錄下的 libsasl.dll 到apache中的bin資料夾中

如果還不行
Copy PHP 目錄下的 libeay32.dll 及 ssleay32.dll 到 C:WindowsSystem32 中

基本上該設定的都設定了,但我還是不行,
這是一個怪問題,我用Nginx + PHP7
可以順利的call ldap_connect()
但用 apache2.4 就會跳 Fatal error
怪的是我用相同的PHP7,搞死人,
最後找到原因,以下解決我的問題
修改 PHP.ini

改為

也不知道為什麼,用Apache2.4預設的PHP.ini會有這樣的問題,用NginX反而不會
怪怪怪!!!

http://stackoverflow.com/questions/17204437/fatal-error-call-to-undefined-function-mb-detect-encoding