CodeIgniter 搭配 Homestead 開發環境

CodeIgniter

HomesteadLaravel Framework 所提供出來的懶人安裝環境,大幅降低學習 Laravel 的門檻,大家都知道初學一套 Framework 最重要的是快速寫出 Hello world,如果初學者卡在環境都架設不來,那就更加不用接著學習 MVC 架構了,所以 Laravel 提供了 Homestead,不管你是用 Linux 或 Windows 都可以快速的把開發環境架設起來。相信很多人也從 CodeIgniter 跳往 Laravel 框架了,但是舊的網站還是要維護阿,所以這次透過 Laravel Homestead 一起來把 CodeIgniter 開發環境無痛架設起來,省去新人安裝 Nginx + PHP + MySQL 的時間。

這次直接用之前在成功大學電算中心講課的專案來搭配 Homestead,專案為 CodeIgniter-App,如果尚未安裝 Homestead 指令,可以直接參考我上一篇教學 Laravel Homestead 2.0 介紹,接下來我們一步一步安裝,架設環境為 Debian 7.4。

設定 Homestead.yaml

先將 CodeIgniter-App 程式碼下載到 /home/git 目錄,此目錄可以任意指定

$ git clone https://github.com/appleboy/CodeIgniter-App.git /home/git/CodeIgniter-App

打開 ~/.homestead/Homestead.yaml,原版您的 Laravel 專案設定如下

---
ip: "192.168.10.10"
memory: 2048
cpus: 1

authorize: ~/.ssh/id_rsa.pub

keys:
  - ~/.ssh/id_rsa

folders:
  - map: /home/appleboy/newProject
    to: /home/vagrant/Code

sites:
  - map: homestead.app
    to: /home/vagrant/Code/public

databases:
  - homestead

variables:
  - key: APP_ENV
    value: local

這次增加 CodeIgniter 專案如下

folders:
  - map: /home/appleboy/newProject
    to: /home/vagrant/Code
  - map: /home/git/CodeIgniter-App
    to: /home/vagrant/codeigniter-app

sites:
  - map: homestead.app
    to: /home/vagrant/Code/public
  - map: codeigniter.app
    to: /home/vagrant/codeigniter-app/public

databases:
  - homestead
  - app

這裡可以發現增加了一組 folders、sites 和 databases,這樣就設定完成了

啟動 Homestead

完成後直接透過底下指令來產生相對應設定

$ homestead up --provision

注意的是,如果之前的 Laravel 專案資料庫存在的話,執行 --provision 則會砍掉 homestead 資料庫,然後重新建立新的,所以這邊建議執行 --provision 之前,先把舊的 database 拿掉會比較好。或者是要把初始化資料寫到 after.sh 內也是可以的。

#!/bin/sh

# If you would like to do some extra provisioning you may
# add any commands you wish to this file and they will
# be run after the Homestead machine is provisioned.

mysql -uhomestead -psecret app < /home/vagrant/codeigniter-app/sql/app.sql

增加 host

打開 /etc/hosts 增加新的 domain

172.21.117.2 homestead.app
172.21.117.2 codeigniter.app

最後打開瀏覽器 http://codeigniter.app:8000 就可以看到結果了喔

上述的 CodeIgniter-App 專案可以參考 https://github.com/appleboy/CodeIgniter-App

  • itsmikej

    求问下 博主, 域名怎么映射到 了public目录,ci 框架没有public目录啊?

    map: codeigniter.app
    to: /home/vagrant/codeigniter-app/public

  • appleboy48

    你可以參考 https://github.com/appleboy/CodeIgniter-App 把 CodeIgniter 改成支援 public 目錄,其實就是修改 index.php 檔案就可以了。