GY的实验室 - Phalcon+Nginx+PHP-FPM环境搭建
Phalcon簡介
由于半路出家的緣故,沒用過幾個PHP框架,第一個了解的框架是公司自己的,然后又試著用了Yii,CI。在讀了CSDN在某度的高排名翻譯文章(PHP開發框架流行度排名:Laravel居首)后,看了Laravel的皮毛。不得不說Laravel的文檔真是漂亮,但是作為一個后臺程序開發者,總覺得也不是自己想要的。
框架的作用:前后端代碼解耦;數據庫操作封裝;內置通用程序模塊(比如路由、認證、加密等);
雖然整個網站中,框架性能并非主要因素,但是還是想把它發揮到極致,只能說是程序員的理想主義在作祟啦。
phalcon就是這種框架。PHP框架這么一個直接跟業務代碼打交道的東西,都用本地化語言編寫,夠Geek。事實上,雖說框架只是提供代碼調度和封裝,其本身的性能也不容忽視。
本地化語言:就是可以編譯成機器碼(那種可以直接跑在本機CPU上的代碼啦)的語言,C/C++/Obj-C, ASM這種的。優點是執行起來快快快,且有些硬件API,也許只有C接口,因此較解釋型語言更適合嵌入式領域,缺點是需重新編譯才能實現跨平臺,且同樣的功能,開發起來復雜度比腳本和Java要高
1. Ubuntu編譯
Phalcon的方式是通過PHP擴展,將框架代碼編譯進去,使得編譯后的php命令支持一些框架類和依賴注入。編譯非常簡單
#下載安裝依賴庫 sudo apt-get install php5-dev libpcre3-dev gcc make php5-mysql php5-fpm #下載git庫 git clone --depth=1 git://github.com/phalcon/cphalcon.git cd cphalcon/build sudo ./install #增加/etc/php5/fpm/conf.d/30-phalcon.ini sudo echo 'extension=phalcon.so' > /etc/php5/fpm/conf.d/30-phalcon.ini #增加/etc/php5/cli/conf.d/30-phalcon.ini sudo echo 'extension=phalcon.so' > /etc/php5/cli/conf.d/30-phalcon.ini2. 檢查php擴展
現在檢查下安裝是否成功。
php -r 'echo phpinfo();' | grep -i phalcon如果輸出下面這樣算作成功
/etc/php5/cli/conf.d/30-phalcon.ini phalcon Phalcon Framework => enabled Phalcon Version => 1.3.4 phalcon.db.escape_identifiers => On => On phalcon.orm.column_renaming => On => On phalcon.orm.enable_literals => On => On phalcon.orm.events => On => On phalcon.orm.exception_on_failed_save => Off => Off phalcon.orm.not_null_validations => On => On phalcon.orm.virtual_foreign_keys => On => On phalcon.register_psr3_classes => Off => Off也可以通過下面這種方式檢測:
php -r 'echo print_r(get_loaded_extensions());'如果輸出下面這樣算作成功
Array ([0] => Core[1] => date[2] => ereg[3] => libxml[4] => openssl...3. Nginx配置
Nginx的安裝略去
配置修改:修改/etc/nginx/site-avaliable/default 或 /etc/nginx/conf.d/default,取決于/etc/nginx/nginx.conf的配置和個人喜好
這里為了測試,在default文件中配置了兩個域名,共用8080端口
server {listen 8080 default_server;server_name ~^(.+)$;index index.php index.html index.htm;set $root_path '/srv/www/htdocs/phalcon-website/public';root $root_path;try_files $uri $uri/ @rewrite;location @rewrite {rewrite ^/(.*)$ /index.php?_url=/$1;}location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {root $root_path;}location ~ /\.ht {deny all;}location ~ \.php$ {fastcgi_index /index.php;fastcgi_pass unix:/var/run/php5-fpm.sock;include fastcgi_params;fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;} } server {listen 8080;#這里在測試時用store_server域名,本機需要綁定hosts才能解析server_name store_server;index index.php index.html index.htm;set $root_path '/srv/www/htdocs/store/public';root $root_path;try_files $uri $uri/ @rewrite;location @rewrite {rewrite ^/(.*)$ /index.php?_url=/$1;}location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {root $root_path;}location ~ /\.ht {deny all;}location ~ \.php$ {fastcgi_index /index.php;fastcgi_pass unix:/var/run/php5-fpm.sock;include fastcgi_params;fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;} }4. phalcon-devtools安裝
這個是phalcon的腳手架工具,支持一組命令,能夠為您自動生成代碼。
git clone git://github.com/phalcon/phalcon-devtools.git cd phalcon-devtools/ && sudo ln -s ~/devtools/phalcon.php /usr/bin/phalcon然后執行phalcon commands,會出現命令提示
Phalcon DevTools (1.3.4)Available commands:commands (alias of: list, enumerate)controller (alias of: create-controller)model (alias of: create-model)all-models (alias of: create-all-models)project (alias of: create-project)scaffoldmigrationwebtools執行create-project就能生成一套框架代碼啦!
cd /srv/www/htdocs/ && phalcon create-project store5. 啟動服務器
終于到了一個興奮點了,哈哈
#重啟fpm和nginx sudo service php5-fpm restart sudo service nginx restart然后本機綁定host: store_server,在瀏覽器欄輸入store_server:8080,就能看到大大的Congratulations了!
6. 服務器虛擬用戶名修改
期間可能會遇到權限問題,原因是無論nginx創建子進程,還是php5-fpm創建子進程,用得都是www-data的用戶名和群組。
要修改默認值,賦值為自定義的值。請分別修改/etc/nginx/nginx.conf和/etc/php5/fpm/pool.d/www.conf的user和group
至此,環境搭建完畢,接下來去探索Phalcon的各種內部機制吧!
總結
以上是生活随笔為你收集整理的GY的实验室 - Phalcon+Nginx+PHP-FPM环境搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis-cli 常用命令
- 下一篇: php之数据类型自动转换