顯示具有 cs1 標籤的文章。 顯示所有文章
顯示具有 cs1 標籤的文章。 顯示所有文章

2015年8月19日 星期三

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

三、CloudSchool1.0 系統配置

(一)建立系統配置檔

複製 local.php.dist 為 local.php
複製 module.doctrine-mongo-odm.local.php.dist 為 module.doctrine-mongo-odm.local.php

複製 application.config.php.dist 為 application.config.php
複製 sfs-upgrade.php.dist 為 sfs-upgrade.php

(二)config/autoload/local.php
以下要改的地方:1.資料庫名稱、2.資料庫帳號、3.資料庫密碼。這裡的設定是要設定新學務系統(CS1.0)的資料庫連結。


(三)sfs3 升級設定
修改/sfs_upgrade.php
以下的設定是針對有升級需求才需要設定,要改的地方有
1.學制(國民中學或國民小學)
2.sfs3資料庫的資料庫名稱、帳號、密碼
3.新的學務CS1.0的資料庫名稱、帳號、密碼


(四)整理升級資料庫(舊sfs)
1.將舊的sfs資料資料庫備份出來
mysqldump -uroot -p密碼 sfs3 > sfs.sql
2.在新主機上建立sfs3資料庫,做為待會要匯入sfs.sql資料之用
mysql -uroot -p
mysql>Create database `sfs3`;

3.回到Ubuntu指令輸入模式下,把sfs.sql的資料到回到sfs3資料庫
mysql -uroot -p密碼 sfs3 < sfs.sql

如此一來,我們就可以在新的主機上擁有舊編碼的sfs3的資料庫了,但是因為新的CS1.0擁有屬於自己的資料庫編碼與新的資料表關聯,所以以上的目的,純粹只是作為升級前的準備工作。
(五)建立資料庫
接著需要建立一個新的資料庫,但是這個新的資料庫需要設定為UTF-8編碼
mysql -uroot -p
mysql>CREATE DATABASE `school_074775` CHARACTER SET utf8 COLLATE utf8_general_ci;


若是建立完成的話,可以使用show databases;指令查看,應該會有新舊學籍系統的資料庫名稱

(六建立資料表
php module/SfsUpgrade/sfs-upgrade.php create-new-db
(七升級資料庫
php module/SfsUpgrade/sfs-upgrade.php upgrade-base

(八)開始使用CS1.0
1.此時若你在瀏覽器輸入local.cs要開啟CloundSchool,還會出現一個錯誤訊息,那是因為暫存cache的data資料夾權限尚未設定正確,在cloudschool的路徑下執行
chmod -R 777 data
data權限尚未設定

設定好後,終於看到新學籍系統的登入畫面了
2.設定管理者:CS1.0升級後較特別的是系統管理員必須重新指定。
php module/SfsUpgrade/sfs-upgrade.php set-admin 使用者帳號

三、Doctrine 練習
接著先讓我們先來瞭解一下zend framework2的檔案結構與網址的對應關係,簡言之網址的格式為
http://主機Domain/模組名稱/控制器名稱/Action名稱
舉例來說:就下圖來看,若主機Domain已定義為local.cs的前提下,模組Module名稱為application,控制器Controller名稱為Index,Action名稱為test,所以如果我們想要看到該網頁內容,網址就要輸入
http://local.cs/application/index/test
註:模組及控制器的名稱大小寫沒有差別,但是最後的action不可以/為結束,否則會被視為資料夾而產生錯誤。

此外,我們網頁的輸出顯示,其實可以直接在Controller中的function xxxAction中直接打上網頁程式碼或php的程式語法,但是這樣做的話,就浪費了zf2中樣板、物件設定的優點。所以我們通常不這樣做,有看到
public function indexAction()
{
$viewMode = new ViewModel();
return $viewMode;
這幾行吧!
我們設定了indexAction的方法Method,假如indexAction的方法被物件化時,可以把物件的回傳值,傳遞給viewMode,

待續....





研習網頁
http://docs.sfs.tw/


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的運作簡易概念流程