2015年8月19日 星期三

Zf2研習筆記_進階20150817第一天之(一)


一、CloudSchool(CS 1.0):
SFS3系統開發至今以十餘年,雖然許多的老師無私的奉獻讓系統更豐富,但相對的卻也產生許多不夠嚴謹或過時的程式碼Bug,CloudSchool就有的SFS3架構利用Zend Framework 2.0重新改寫開發,僅保留重要核心程式,以作為未來新學務系統的主要架構。


二、系統環境配置安裝
(一)安裝 mongoDB及Mongodb PHP extension
MongoDB 是 10gen 這家公司開發的一個 NoSQL Database,屬於 Document-Oriented Database 這一類型,希望能夠結合 Relational Database 與 Key/Value Database 雙方的優點,很適合用在 Web 應用程式、Internet 架構的環境底下。
在CS 1.0,我們利用MongoDB儲存所有需要上傳的資料,data會以資料庫的型態存在MongoDB中。往後執行CS學務時,一般SQL資料仍就會讀取MySql Server,然若是需要讀取上傳的資料時,則會呼叫讀取MongoDB,取代掉以往SFS3的data資料夾上傳的檔案,並且有效增加效能及往後擴充性。

首先先介紹mongodb的安裝,安裝適用的硬體裝置又分為64位元及32位元兩種,兩種安裝法又有點小小的差異,文中會特別提醒說明。

※64位元的安裝步驟
1 Import the public key used by the package management system.
The Ubuntu package management tools (i.e. dpkg and apt) ensure package consistency and authenticity by requiring that distributors sign packages with GPG keys. Issue the following command to import the MongoDB public GPG Key:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

2 Create a list file for MongoDB.
Create the /etc/apt/sources.list.d/mongodb-org-3.0.list list file using the following command:
sudo echo "deb http://repo.mongodb.org/apt/ubuntu/ "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
3 Reload local package database.
Issue the following command to reload the local package database:
sudo apt-get update
4 Install the MongoDB packages.
You can install either the latest stable version of MongoDB or a specific version of MongoDB.
Install the latest stable version of MongoDB.
Issue the following command:
sudo apt-get install -y mongodb-org 
5.Restart MongoDB Server
sudo service mongod restart
6.Type the command: "netstat -na | more " to check the port of 27017 have be running.

7.安裝 Mongodb PHP extension

 sudo apt-get install php5-dev make php-pear php5-intl
 sudo pecl install mongo
 sudo echo "extension=mongo.so" | sudo tee /etc/php5/mods-available/mongo.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/apache2/conf.d/20-mongo.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/20-mongo.ini


※32位元的安裝步驟
1 Import the public key used by the package management system.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB1
2 Create a list file for MongoDB.
sudo echo "deb http://repo.mongodb.org/apt/ubuntu/ "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
3 Reload local package database.
sudo apt-get update
 4 Install the MongoDB packages.
sudo apt-get install -y mongodb 
5.Restart MongoDB Server
sudo service mongod restart
6.安裝 Mongodb PHP extension

有兩種方法一種是直接用apt-get安裝,另一種是到Git下載編譯
(1)直接用apt-get安裝
sudo add-apt-repository ppa:chris-lea/mongodb-drivers
sudo apt-get update
sudo apt-get install php5-mongo
1.sudo add-apt-repository ppa:chris-lea/mongodb-drivers
2.sudo apt-get update
3.sudo apt-get install php5-mongo
4.sudo echo "extension=mongo.so" | sudo tee /etc/php5/mods-available/mongo.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/apache2/conf.d/20-mongo.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/20-mongo.in

(2)Git下載編譯
1.到Git下載Mongo php driver
2.解壓縮
3.
phpize
.
/configure
make

sudo make install

4.
Then, add the following to your php.ini file:extension=mongo.so
(二)安裝PHP 模組
1.CloundSchool需要用到其他php模組,以下先對模組做簡單介紹:
(1)php-apc:純php程式在執行時,速度的確是不夠快,因為每一次讀取php程式碼的時候,每一次都得重新編譯一次,這造成系統的負擔與讀取的效能變差。而APC則可以加快php的效能,如果你覺得自己的 PHP 網站不快,可以在自己的 php.ini 裡面,load 進來 apc.so 後面加上 apc.stat=0,因為當使用了 APC 並且設置 apc.stat=0 之後,其實網站在第一次編譯成 OPCODE 之後,除非重起或是清除快取,要不然就是會一直拿 OPCODE 來跑,而這樣速度也因此有了顯著的提升。(參考PHP 使用 APC 增進執行速度
其他補充:Apc.php

(2)php5-gd:跟image相關的擴充模組,PHP可以利用該模組建立或設定影像檔。
(3)php-imagick:也是跟image相關的擴充模組,可以對影像檔進行轉檔convert,改變影像尺寸等等...,像是利用PHP建立縮圖功能,就是使用imagick來完成。
(4)php5-intl:該模組是跟script的國際化有關。

2.安裝指令:
sudo apt-get install php-apc php5-gd php5-imagick php5-intl
(三)設定 Apache Virtual host
1.另外再拷貝一份虛擬站台的設定檔
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/local.cs.conf

2.清空local.cs.con的內容(在vim下可利用0dG命令刪掉全部內容),並將以下的設定檔貼到local.cs.conf裡
註:紅字的地方要修改
<VirtualHost *:80>
    ServerName local.cs
    DocumentRoot /home/使用者/cloudschool/public
    ErrorLog ${APACHE_LOG_DIR}/cloudschool.error.log
    CustomLog ${APACHE_LOG_DIR}/cloudschool.access.log combined
    # SetEnv APPLICATION_ENV "development"
    <Directory /home/使用者/cloudschool/public>
    Require all granted
    AllowOverride All
    # Order allow,deny
   # Allow from 127.0.0.1
    </Directory>
</VirtualHost>
3.加入hostname,修改/etc/hosts檔
vi /etc/hosts
127.0.0.1       localhost
127.0.1.1       ubuntu local.cs
4.加入虛擬站台設定(把available的站台link到enable的站台,虛擬站台就可啟用)
sudo a2ensite local.cs.conf

5.加入 rewite module
sudo a2enmod rewrite

6.重新啟動Apache
sudo service apace2 restart

(四)Clouds主程式安裝到虛擬站台目錄
將cloudschool學校端程式解壓縮到/home/使用者/
例:
tar zxvf cloudschool.tar.gz /home/chunkai/

(五)composer.phar update
在cloudschool目錄下,執行
php composer.phar update




研習網頁:
http://docs.sfs.tw/
其他參考網頁:
PHP 使用 APC 增進執行速度
CloudSchool下composer.phar update的運作簡易概念流程

4 則留言:

  1. 作者您好:
    小弟是業餘的資訊研究者(本身是國中教師),最近看到新的Cloud School已經上線啟用,不知道方不方便向您索取一份原始碼作為個人研究用途,謝謝

    E-mail: garrylai0306@gmail.com

    回覆刪除
  2. 我也想要一份原始碼做研究, 可否提供, 我是在學校做IT支援的

    回覆刪除
  3. CloundSchool是由台中外埔國小退休老師陳瑩光所開發,當時我們是用來做測試練習用,但如今該系統已正式上線營運中,很不好意思,基於我不是原作者,實在無權將原始碼的部分授權給你,還請見諒。

    回覆刪除