[Windows/Linux/Mac][PHP Deployer] Zero Downtime PHP Deployment

Deployer – https://deployer.org/
A zero downtime PHP deployment tool.

How it works?

Basically it SSH into the remote server, git clone to new folder, composer install, and create symlink to latest release folder
And optionally run database migration, restart PHP-FPM. If either step fails, it rollbacks the whole transaction.

Continue reading “[Windows/Linux/Mac][PHP Deployer] Zero Downtime PHP Deployment”

[Windows/Linux] PHP “exec” missing environment variable causing command not to run

In a recent project, I am finding way to display current git branch on the backend dashboard.
Without a application dependent library, executing CLI git seems to be the fastest way.
i.e. The exactly same syntax as we use in bash/cmd/powershell.

However, it worked in production/staging Linux machine, but not in local Windows machine.
It does work if I specify the absolute path C:\Program Files\Git\bin\git.exe, but it’s not optimal because it will be machine dependent.

After a while, I figure out the environment PATH variable is missing in Windows that cause git not being picked up.
The trick is, add this line before exec call to:

Ubuntu Postfix Mail Server 設定筆記 (八) 使用 MySQL 管理 User, Domain 和 Alias

本系列第八篇: 使用 MySQL 管理 User, Domain 和 Alias

早在第二篇我們設定了 Dovecot 的 userdb 和 passdb 的靜態 Database。
但每次新增 Email 用戶都要 SSH 進 Server 修改 /etc/dovecot/passwd 都是太麻煩了。
這次把 Dovecot userdb 和 passdb 都放進 MySQL, 方便其他程式管理 Email 用戶。

Postfix 的 virtual_mailbox_domains 負責那些 domain 的 Email 可以轉交給 Dovecot LMTP
virtual_alias_maps 負責 Email 別名轉寄, 這裡也一併把它放進 MySQL 管理

Continue reading “Ubuntu Postfix Mail Server 設定筆記 (八) 使用 MySQL 管理 User, Domain 和 Alias”