Cloud9 with Laravel 5.3

想從 Cloud9 來試試 Laravel5.3 新功能,跑一下 php -v 發現官方預設 PHP 的 Docker Image 環境版本是 5.5.9

PHP 5.5.9-1ubuntu4.19 (cli) (built: Jul 28 2016 19:31:33) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans

這不符合 Laravel5.3 的最低要求,所以首要工作是將 PHP 進行升級。而且既然要升級,就一口氣將它升級到 7 以上吧!

安裝 PHP 7

從網路上找到文章提到使用 phpbrew 來進行升級,雖然依照操作成功了升級至 PHP 7 版本,但其中的 curl extension 發生問題,即便解決了 php-curl 安裝問題,重設了 php.ini,執行 php -m | grep -i curl 還是一樣沒有 curl 模組。搞了半天還是不行,所以放棄這個方式。(如果有人使用 phpbrew 方式並解決 curl 的問題,請指點我一下,感謝),所以改用直接升級 PHP7 的方式,具體執行命令大概說明如下:

更新資源庫

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

清理舊版本套件

sudo apt-get -y purge php5 libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-gd php5-imap php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite
sudo apt-get autoremove

安裝 php7 以及 curl 以及 laravel 可能會需要到的套件

sudo apt-get install php7.0
sudo apt-get install php-curl
sudo apt-get install php-mbstring
sudo apt-get install php-sqlite3

安裝 mysql 部分

sudo apt-get install php7.0-mysql

建立 Laravel 5.3 專案與重設 DocumentRoot

接著參考文件 Getting Started with Laravel 步驟說明如下:

刪除 cloud9 預設的檔案,並更新 composer 後建立 laravel 專案

rm README.md php.ini hello-world.php
sudo composer self-update
sudo chown -R $USER $HOME/.composer
composer create-project --prefer-dist laravel/laravel

顯示 laravel 專案中隱藏檔並將內容移至 cloud9 的根目錄後刪除

shopt -s dotglob
mv laravel/* ./
rm -rf laravel

編輯設定 DocumentRoot (文件中使用 nano,我改用略懂略懂的 vi)

sudo vi /etc/apache2/sites-enabled/001-cloud9.conf

// 搜尋該行字串
DocumentRoot /home/ubuntu/workspace

// 改成下面這樣
DocumentRoot /home/ubuntu/workspace/public

更新 node.js

laravel 5.3 一些新功能,像是 laravel-echo 要求 node.js 為 5.0 以上,以及大部分官方 js 都改用了 es6 的寫法,這部分 c9 預設安裝 nvm ,升級就變的相當容易

nvm install node

這樣就能升級到最新版本 6.x 以上,再來安裝 laravel 中 package.json 所需的套件

npm install 

啟動 mysql

透過 mysql-ctl 啟動

mysql-ctl start

如果是第一次執行會得到下列訊息(c9 預設密碼是空字串)

Installing MySQL
* Stopping MySQL database server mysqld
  ...done.
* Starting MySQL database server mysqld
  ...done.
* Checking for tables which need an upgrade, are corrupt or were 
not closed cleanly.

MySQL 5.5 database added.  Please make note of these credentials:

      Root User: liaosankai
  Database Name: c9    

如果想修改密碼,可以透過下面方式修改

mysql-ctl cli
mysql> SET PASSWORD FOR 'liaosankai'@'%' = PASSWORD('my_new_password'); 

最後我是使用 adminer.php 來代替原先 phpmyadmin 工具

sudo wget "http://www.adminer.org/latest.php" -O public/adminer.php

啟動 redis

如果需要使用 redis 的話,可以透過 sudo service redis-server start 啟動,詳細可參考 Setting Up Redis

目錄

  1. 1. 安裝 PHP 7
  2. 2. 建立 Laravel 5.3 專案與重設 DocumentRoot
  3. 3. 更新 node.js
  4. 4. 啟動 mysql
  5. 5. 啟動 redis