Codex CLI 是在終端機中協助檢查程式碼、修改檔案、執行指令與重複工作流程的 coding agent。本文以 Ubuntu 24.04 為例,示範安裝 Codex,準備 PHP、Apache、MySQL(LAMP)環境,再讓 Codex 協助建立可查詢資料庫的 PHP 小應用程式。
安全原則:讓 Codex 先檢查與提出計畫,再逐步執行;資料庫密碼、API 金鑰和生產環境設定不要貼進對話或提交 Git。正式主機請先做快照與備份。
一、安裝 Codex
先準備 Ubuntu 工具:
sudo apt update && sudo apt install -y curl git ca-certificates build-essential
OpenAI 官方 Codex CLI 文件目前提供 macOS/Linux 獨立安裝程式:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version
在專案目錄啟動並登入:
mkdir -p ~/projects/php-notes && cd ~/projects/php-notes
codex
第一次執行依畫面選擇使用 ChatGPT 登入或其他可用登入方式。可先要求 Codex:請列出建立 PHP + Apache + MySQL 範例所需步驟,先不要修改檔案。
二、安裝 PHP、Apache、MySQL
sudo apt update
sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql php-cli php-curl php-mbstring php-xml unzip
sudo systemctl enable --now apache2
sudo systemctl enable --now mysql
php -v && apache2 -v && sudo mysql --version
執行 sudo mysql_secure_installation 完成 MySQL 初始安全設定,再建立專用資料庫帳號:
sudo mysql
CREATE DATABASE notes_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'notes_app'@'localhost' IDENTIFIED BY '請換成隨機密碼';
GRANT SELECT, INSERT, UPDATE, DELETE ON notes_app.* TO 'notes_app'@'localhost';
FLUSH PRIVILEGES;
EXIT;
應用程式只需要自己的資料庫權限,不應使用 MySQL root 帳號。
三、請 Codex 建立 PHP 應用程式
sudo mkdir -p /var/www/notes-app/public
sudo chown -R "$USER":"$USER" /var/www/notes-app
cd /var/www/notes-app && git init
在 Codex 中輸入:請在 public/index.php 建立 PHP 8.3 範例:使用 PDO 連線 notes_app,帳號和密碼從環境變數讀取;建立 notes 資料表;GET 顯示筆記,POST 新增筆記;SQL 使用 prepared statements,輸出做 escaping,避免 SQL injection 與 XSS;不要把密碼寫入程式碼;加入 README 與 curl 測試。完成後先列出修改檔案,等我確認再測試。
查看差異與語法:
git diff
php -l public/index.php
密碼可放在只有服務帳號可讀的 /etc/notes-app.env,不要放到網站公開目錄:
sudo install -o root -g www-data -m 640 /dev/null /etc/notes-app.env
sudoedit /etc/notes-app.env
四、設定 Apache VirtualHost
建立 /etc/apache2/sites-available/notes-app.conf,內容如下:
<VirtualHost *:80>
ServerName notes.example.test
DocumentRoot /var/www/notes-app/public
<Directory /var/www/notes-app/public>
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
sudo a2dissite 000-default.conf
sudo a2ensite notes-app.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
curl -i http://127.0.0.1/
五、讓 Codex 協助測試
要求 Codex 執行 php -l 和 curl 測試、檢查 SQL 是否使用 prepared statements、檢查輸出是否 escaping,並只回報問題不要修改檔案。確認後再逐項修正:
git status
git diff --check
git add . && git commit -m "建立 PHP notes app"
遇到 Apache 403、PHP 空白頁或資料庫連線錯誤時,可把錯誤訊息和遮掉密碼的設定交給 Codex 分析,不要貼含秘密的環境檔。
六、上線前檢查
- 使用專用 MySQL 帳號,停用 root 遠端登入。
- 只開放需要的防火牆連接埠並配置 HTTPS。
- 確認環境檔權限為 root:www-data、640。
- 更新 PHP、Apache 與套件,生產環境不要使用測試密碼。
- 用
./backup-production.sh保存資料庫與網站檔案。
參考資料
OpenAI 官方 Codex CLI 文件(安裝、登入、專案工作流程)。Ubuntu 套件名稱和 Apache/MySQL 設定會隨系統政策調整,執行前請先在測試機驗證。