在五花八门的语言里,PHP作为我第一个觉得欣赏的理由,就是它的简单和快捷,因为它封装了许多的常用函数。PHP作为网站中一种算作比较流行的语言,也产生各种优秀的框架。我所接触过的有zend framework 1、think php、yii框架,这些框架中属zend framework似乎不太尽人意,因为作为官方的框架,大家给予的期望也是比较高的,但是在国内这个框架用的并不多。可是我作为一个还算比较忠实的PHP爱好者,我还是用zend framework 1搭建了第一个属于自己的网站——仿动网论坛。不说曾经了,zend framework 2似乎是去年出来的吧,我也捣鼓过一段时间,因为后来工作的关系,我逐渐很少去研究这个了。现在国内的这方面资料还非常稀缺,虽然有人已经翻译了官方的文档,但是我想对于初学者来说还是很难上手。特别是搭建开发环境的,我就更少看见了,要么是笼统的概括,要么就是凌乱的东拼西凑。本文供给那些想要了解新框架的人,也同时为自己做一个笔记,因为这些东西随着时间的推移是会渐渐淡忘的。

首先看看市面上流行的有哪些框架,统计可能对国内来说有些偏差。

1、第一步,安装你的web开发环境

你可以去找一些集成lnmp的脚本,或者使用我提供的这个脚本进行基础的环境安装,下面的代码下载后保存为install_web_develop.sh,怎么运行请百度shell脚本运行。

#!/bin/bash
#filename:test.sh
#author:viticm
#createtime:2013-5-31 11:12:03
#use: install web develop
cUser=`whoami`
cCommand=$1
cDownload=on
cBase=no
cWebUser=www
cInstallFile=/web/
cInstallPhpPath=/usr/local/php/
cInstallNginxPath=/usr/local/nginx/
cInstallMysqlPath=/usr/local/mysql/
cPhpMakefile=/home/Makefile
iSystemType=`getconf LONG_BIT`
Arr_OpenPortList=""
cTestDomain=www.baidu.com##### mysql config #####
cMysqlDefaultPasswd=mysql
cMysqlInstallPath=/usr/local/mysql/
cMysqlConfUploadFile=`pwd`/my.cnf
##### mysql config ############ PHP #######
cDate_TimeZone="Asia/Shanghai"
cDisplay_Errors=On
cError_Reporting="E_ALL & ~E_NOTICE"
cAllow_Call_Time_Pass_Reference=On
###### PHP ############ PHP-FPM CONFIGS ####
pm_max_children=64
pm_start_servers=20
pm_min_spare_servers=5
pm_max_spare_servers=35
pm_max_requests=1024
pm_user=${cWebUser}
pm_group=${cWebUser}
#### PHP-FPM CONFIGS ####usage()
{
cat <<EOFUsage: $0 <params>
-m or --mysql install mysql
-n or --nginx install nginx
-p or --php install php( and this can enter two params,like -p 5.3( 5.4 ) then install php what version is 5.3 )EOF
return 0
}# on OEL, /etc/issue states "Enterprise Linux Enterprise Linux Server"
SUPPORTED_OS='CentOS|Red Hat Enterprise Linux Server|Enterprise Linux Enterprise Linux Server|Fedora|SUSE|Debian GNU/Linux|Ubuntu|Oracle Linux Server'if ! egrep -q "$SUPPORTED_OS" /etc/issue ; then
cat <<EOFUnable to install: Your distribution is not suitable for installation using
Zend's DEB/RPM repositories. 

EOFexit 1
fi# -v or --version
if [ "$1" = "-v" -o "$1" = "--version" ]; thenecho "`basename $0` version 1.0.1"usageexit 0
fi# -h or --help
if [ "$1" = "-h" -o "$1" = "--help" ]; thenusageexit 0
fiMYUID=`id -u 2> /dev/null`
if [ ! -z "$MYUID" ]; thenif [ $MYUID != 0 ]; thenecho "You need root privileges to run this script.";#exit 2fi
elseecho "Could not detect UID";exit 2
ficat <<EOF
Hit ENTER to install web develop, or Ctrl+C to abort now.
EOF
# give read a parameter, as it required in dash
read answer#Base
function InstallBasePackage()
{echoecho "************************************************************************"echo "* Start install Base package( vim git wget base for mysql php nginx ). *" echo "************************************************************************"
#clean iptables
#  echo -e "\e[0;36;1mfirst will clean iptables,please wait.\e[0m"
#  iptables -F
#  iptables -X
#  iptables -Zif [[ ${cBase} == "ok" ]] ; thenecho -e "\e[0;35;1myour base is ok,now will not install base package.\e[0m"else#it will download from network .echo -e "\e[0;33;1mnow will test your network if worked,please wait some time.\e[0m"ping -c 5 ${cTestDomain}if [[ $? -ne 0 ]] ; then echo -e "\e[0;31;1myour network not worked,please check it.\e[0m"exit 1elseecho -e "\e[0;35;1myour network is worked,now will download from your network.\e[0m"fifiif [[ ${cBase} == "no" ]] ; then
#vim
#    yum -y install vimyum -y install ctagsyum -y install cscopeyum -y install ntp
#gityum -y install git
#wgetyum -y install wget
#gccyum -y install yum-fastestmirroryum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
#Nginxyum -y install pcre-devel  zlib-devel readline-devel
#Phpyum -y install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel freetype-devel
#Mysqlyum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel*
#bcyum -y install bcfi#synchronous timechkconfig ntpd onntpdate cn.pool.ntp.orghwclock --systohc
#config ulimit configs echo now will config limit allow handles.echo "* soft nofile 2048" >> /etc/security/limits.confecho "* hard nofile 32768" >> /etc/security/limits.confecho "config limits is ok, remember reboot your server."if [[ $? -ne 0 ]] ; then echo -e "\e[0;31;1minstall base is failed.\e[0m"exit 1fiechoecho "**************************************"echo "* Install base package is completed. *"echo "**************************************"}
#Mysql
function InstallMysql()
{echoecho "**********************************************"echo "* Start install mysql( Percona-Server-5.6 ). *"echo "**********************************************"local cMysqlPackage="Percona-Server-5.6.10-alpha60.2.tar.gz"local cMysqlPackageDir="Percona-Server-5.6.10-alpha60.2"if [[ ${cBase} == "no" ]] ; then    yum -y install makeyum -y install cmakeyum -y install libtermcap-develyum -y install patchyum -y install perlyum -y install bisonfiif [[ ${cDownload} == "off" ]] ; thencd ${cInstallFile}fiif [ -x ./${cMysqlPackageDir} ]then
#rm -fr Percona-Server-5.1.62echo "Percona is exists,use it."elseif [ -f ./${cMysqlPackage} ]thentar -zxvf ${cMysqlPackage}elsewget -c http://www.percona.com/redir/downloads/Percona-Server-5.6/Percona-Server-5.6.10-alpha60.2/source/Percona-Server-5.6.10-alpha60.2.tar.gzif [[ $? -ne 0 ]] ; thenecho "download mysql is failed,please check your network."exit 1fisleep 3tar -zxvf ${cMysqlPackage}fifiecho "start install mysql"sleep 3#delete mysql install directorycd ${cMysqlPackageDir}if [[ "" != `ps -A | grep mysqld` ]]; thenPRINTWARNING "mysql is install and run now will uninstall it, or Ctrl+C to abort now."read answer service mysql stop
#   make clean
#   make uninstallrm -rf ${cMysqlInstallPath}fiCC=gcc CFLAGS="-DBIG_JOINS=1 -DHAVE_DLOPEN=1 -O3" CXX=g++ CXXFLAGS="-DBIG_JOINS=1 -DHAVE_DLOPEN=1 -felide-constructors -fno-rtti -O3"cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_EXTRA_CHARSETS=all \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DENABLED_LOCAL_INFILE=1 \-DMYSQL_DATADIR=/var/mysql/datasleep 3make -j4 && make  installgroupadd mysqluseradd -g mysql mysqlcd ${cMysqlInstallPath} && chown -R mysql . && chgrp -R mysql .echo "make install is ok"sleep 3mkdir -p /var/mysql/data && chown mysql:mysql /var/mysql/ -Rif [[ -f ${cMysqlConfUploadFile} ]] ; thencp ${cMysqlConfUploadFile} /etc/my.cnfelsecp ${cMysqlInstallPath}support-files/my-default.cnf /etc/my.cnf#sed "s/skip-locking/external-locking/g" -i /etc/my.cnf#sed "s/#innodb_/innodb_/g" -i /etc/my.cnf#sed -i '32 i\default-storage-engine=InnoDB' -i /etc/my.cnf   fi${cMysqlInstallPath}/scripts/mysql_install_db --basedir=${cMysqlInstallPath}/ --user=mysql --datadir=/var/mysql/dataln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18echo "install_db Initialize the database is complete"sleep 3echo "Try to start the database"cp ${cMysqlInstallPath}support-files/mysql.server /etc/init.d/mysqlcp ${cMysqlInstallPath}/bin/mysql  /usr/sbin/service mysql startcd ${cMysqlInstallPath} && chown -R mysql . &&  chgrp -R mysql .echo "Database startup is complete"sleep 3echo "Change your password after 10 seconds"sleep 10cd ${cMysqlInstallPath} && ./bin/mysqladmin -uroot password ${cMysqlDefaultPasswd}if [[ "" == `cat /etc/rc.d/rc.local | grep "service mysql start"` ]] ; thenecho "service mysql start" >> /etc/rc.d/rc.localfiif [[ $? -ne 0 ]] ; thenecho -e "\e[0;31;1mInstallation fails, check the above error\e[0m"exit 1elseecho -e "\e[0;34;1mCongratulations, the installation was successful.Directory:"${cMysqlInstallPath}"\e[0m"fiechoecho "**********************************************************"echo "* Install Mysql is completed.( Use Percona-Server-5.6 ). *" echo "**********************************************************"}#Nginx
function InstallNginx()
{cd ${cInstallFile}local cNginxPackage=tengine-2.0.0.tar.gzlocal cNginxPackageDir=tengine-2.0.0echoecho "***************************************"echo "* Start install Nginx( Use tengine ). *" echo "***************************************"
#if [[ "" != `ps -A | grep nginx` ]]; then
#    PRINTWARNING "mysql is install and run now will uninstall it, or Ctrl+C to abort now."
#    service nginx stop
#    make uninstall
#    rm -rf ${cInstallNginxPath}
#  figroupadd wwwuseradd -g www wwwif [[ ${cDownload} == "on" ]] ; thenecho -e "\e[0;33;1mnow download package form website,check your network if failed!\e[0m"
#Nginx 1.3.0if [[ -f ${cInstallFile}${cNginxPackage} ]] ; thenecho ${cNginxPackage} is found.elseecho now will download ${cNginxPackage} from network.wget -c http://tengine.taobao.org/download/${cNginxPackage}fi
#opensslif [[ -f ${cInstallFile}openssl-1.0.1c.tar.gz ]] ; thenecho openssl-1.0.1c.tar.gz is found.elseecho now will download openssl-1.0.1c.tar.gz from network.wget -c  http://www.openssl.org/source/openssl-1.0.1c.tar.gzfi
#Nginx(pcre)
#    if [[ -f ${cInstallFile}pcre-8.30.tar.gz ]] ; then
#      echo pcre-8.30.tar.gz is found.
#    else
#      echo now will download pcre-8.30.tar.gz from network.
#      wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.30/pcre-8.30.tar.gz
#    fibExit=`echo $?`if [[ ${bExit} != 0 ]] ; then echo -e "\e[0;31;1mdownload package is failed,Please check your network.\e[0m"exitfifi
#install pcre
#  tar -zxvf pcre-8.30.tar.gz && cd pcre-8.30/ && ./configure
#  make -s -j4 && make install
#  cd ../
#install opensslif [[ -d openssl-1.0.1c ]] ; thenPRINTUSEDIR openssl-1.0.1celsetar zxvf openssl-1.0.1c.tar.gz #&& cd openssl-1.0.1cfi#  ./config --prefix=/usr/local/ --openssldir=/usr/local/openssl-1.0.1c shared zlib-dynamic enable-camellia enable-tlsext -fPIC
#  make && make install && cd ../
#install nginx   if [[ -d ${cNginxPackageDir} ]] ; thenPRINTUSEDIR ${cNginxPackageDir}elsetar -xzvf ${cNginxPackage}ficd ${cInstallFile}${cNginxPackageDir}make clean./configure --user=${cWebUser} --group=${cWebUser} \--prefix=${cInstallNginxPath} \--sbin-path=${cInstallNginxPath}sbin/nginx \--conf-path=${cInstallNginxPath}conf/nginx.conf \--with-http_stub_status_module \--lock-path=/var/run/nginx.lock \--pid-path=/var/run/nginx.pid \--with-openssl=../openssl-1.0.1c \--with-pcre-jitsleep 10make && make installbExit=`echo $?`if [[ ${bExit} != 0 ]] ; thenecho -e "\e[0;31;1minstall nginx have some error,you can read it.\e[0m"exitelseecho -e "\e[0;34;1mgood luck! install nginx sucess! \e[0m"fi
#if install nginx is sucess,then will config it.
#  echo "Now will config the nginx,please wait."if [[ -f ${cNginxConfFile} ]] ; thencp -n ${cNginxConfFile} ${cInstallNginxPath}conf/nginx.confelsesed -e "2 c\user ${cWebUser};" -i ${cInstallNginxPath}conf/nginx.conffi
#start nginx and set start on bootecho ${cInstallNginxPath}sbin/nginx >> /etc/rc.d/rc.local${cInstallNginxPath}sbin/nginx
#open port 3306 and 80iptables -I INPUT -p tcp --dport 80 -j ACCEPTiptables -I OUTPUT -p tcp --sport 80 -j ACCEPTiptables -I INPUT -p tcp --dport 3306 -j ACCEPTiptables -I OUTPUT -p tcp --sport 3306 -j ACCEPT/etc/rc.d/init.d/iptables saveservice iptables restartechoecho "***********************************************"echo "* Install Nginx is completed.( Use tengine ). *" echo "***********************************************"}#PHP
function InstallPHP()
{cd ${cInstallFile}echoecho "**********************************************"echo "* Start install PHP.( Default version 5.3 ). *" echo "**********************************************"local cPhpVersion=${2}local cPhpPackage=""local cPhpPackageDir=""if [[ -z ${cPhpVersion} ]]; thenecho install default php version 5.3cPhpVersion="5.3"cPhpPackage="php-5.3.28.tar.bz2"cPhpPackageDir="php-5.3.28"elseif [[ "5.3" != ${cPhpVersion} && "5.4" != ${cPhpVersion} ]]; thenUseageexit 1elseif [[ "5.3" == ${cPhpVersion} ]]; thencPhpPackage="php-5.3.28.tar.bz2"cPhpPackageDir="php-5.3.28"elsecPhpPackage="php-5.4.15.tar.bz2"cPhpPackageDir="php-5.4.15"fififiif [[ ${cDownload} == "on" ]] ; thenecho now download package form website,check your network if failed!
#PHP5.3.14if [[ -f ${cInstallFile}${cPhpPackage} ]] ; thenecho ${cPhpPackage} is found.elseecho now will download php package from network.wget -c http://cn.php.net/distributions/${cPhpPackage}fi
#PHPif [[ -f ${cInstallFile}mcrypt-2.6.8.tar.gz ]] ; thenecho mcrypt-2.6.8.tar.gz is found.elseecho now will download mcrypt-2.6.8.tar.gz from network.wget http://ncu.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gzfiif [[ -f ${cInstallFile}mhash-0.9.9.9.tar.gz ]] ; thenecho mhash-0.9.9.9.tar.gz is found.elseecho now will download mhash-0.9.9.9.tar.gz from network.wget http://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gzfiif [[ -f ${cInstallFile}libmcrypt-2.5.8.tar.gz ]] ; thenecho libmcrypt-2.5.8.tar.gz is found.elseecho now will download libmcrypt-2.5.8.tar.gz from network.wget http://ncu.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gzfiif [[ -f ${cInstallFile}libiconv-1.14.tar.gz ]] ; thenecho libiconv-1.14.tar.gz is found.elseecho now will download libiconv-1.14.tar.gz from network.wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gzfiif [[ -f ${cInstallFile}memcache-3.0.6.tgz ]] ; thenecho memcache-3.0.6.tgz is found.elseecho now will download memcache-3.0.6.tgz from network.wget http://pecl.php.net/get/memcache-3.0.6.tgzfiif [[ -f ${cInstallFile}PDO_MYSQL-1.0.2.tgz ]] ; thenecho PDO_MYSQL-1.0.2.tgz is found.elseecho now will download PDO_MYSQL-1.0.2.tgz from network.wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgzfibExit=`echo $?`if [[ ${bExit} != 0 ]] ; thenecho -e "\e[0;31;1mdownload package failed,you can check your network if can work.\e[0m"exitfifiecho "install some plugin for php"
#1if [[ -d libiconv-1.14/ ]] ; thenPRINTUSEDIR libiconv-1.14/elsetar -zxvf libiconv-1.14.tar.gz && cd libiconv-1.14/fi./configure --prefix=/usr/localmake -s -j4 && make install && cd ../sleep 1
#2if [[ -d libmcrypt-2.5.8/ ]] ; thenPRINTUSEDIR libmcrypt-2.5.8/elsetar -zxvf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8/fi./configure &&  make && make install/sbin/ldconfig && cd libltdl/ && ./configure --enable-ltdl-installmake -s -j4 && make install && cd ../ && cd ../sleep 2
#3if [[ -d mhash-0.9.9.9/ ]] ; thenPRINTUSEDIR mhash-0.9.9.9/elsetar -zxvf mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9/fi./configuremake -s -j4 && make install && cd ../sleep 3
#4ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.laln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-configsleep 1
#5/sbin/ldconfigif [[ -d mcrypt-2.6.8/ ]] ; thenPRINTUSEDIR mcrypt-2.6.8/elsetar -zxvf mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8/fi./configuremake -s -j4 && make install && cd ../sleep 2bExit=`echo $?`if [[ ${bExit} != 0 ]] ; thenecho -e "\e[0;31;1minstall package false,please read the errors.\e[0m"exitfiecho install plugin for php is completed.echo now will install php, version is ${cPhpVersion}
#64 OR 32 SYSTEM LIB MUST BE DIFFERENTif [[ ${iSystemType} == 64 ]] ; then    cp -frp /usr/lib64/libldap* /usr/libfi
#6cd ${cInstallFile}if [[ -d ${cPhpPackageDir} ]] ; thenPRINTUSEDIR ${cPhpPackageDir}elsetar -xjvf ${cPhpPackage} cd ${cPhpPackageDir}fi./configure --prefix=${cInstallPhpPath} \--with-config-file-path=${cInstallPhpPath}etc \--with-iconv-dir=/usr/local/ --with-freetype-dir \--with-mysql=${cInstallMysqlPath} \--with-mysqli=${cInstallMysqlPath}bin/mysql_config \--with-jpeg-dir --with-png-dir --with-zlib \--with-mhash --enable-sockets --enable-ftp \--with-libxml-dir --enable-xml --disable-rpath \--enable-safe-mode --enable-bcmath \--enable-shmop --enable-sysvsem \--enable-inline-optimization --with-curl \--with-curlwrappers \--enable-mbregex \--enable-mbstring --with-mcrypt --with-gd \--enable-gd-native-ttf --with-openssl --with-mhash \--enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl \--enable-fpm \--with-xmlrpc --enable-zip --enable-soap \--without-pear;make -s -j4 ZEND_EXTRA_LIBS='-liconv'make installcp php.ini-production ${cInstallPhpPath}etc/php.iniln -s ${cInstallPhpPath}bin/php /usr/sbin/php
#now we can config php.inised "538 c\display_errors = ${cDisplay_Errors}" -i ${cInstallPhpPath}etc/php.inised "521 c\error_reporting = ${cError_Reporting}" -i ${cInstallPhpPath}etc/php.inised "334 c\allow_call_time_pass_reference = ${cAllow_Call_Time_Pass_Reference}" -i ${cInstallPhpPath}etc/php.inised "1008 c\date.timezone = ${cDate_TimeZone}" -i ${cInstallPhpPath}etc/php.inibExit=`echo $?`if [[ ${bExit} != 0 ]] ; thenecho -e "\e[0;31;1minstall PHP failed,you can read the errors or send email to me.\e[0m"exitfiecho -------------------------------end-----------------------------------cd ${cInstallFile}echo "######################install Extensions for PHP#################"echo -------------------------------start---------------------------------if [[ -d memcache-3.0.6/ ]] ; thenPRINTUSEDIR memcache-3.0.6/elsetar -zxvf memcache-3.0.6.tgzcd memcache-3.0.6/fi${cInstallPhpPath}bin/phpize./configure --with-php-config=${cInstallPhpPath}bin/php-configsleep 1make -s -j4 && make install && cd ../if [[ -d PDO_MYSQL-1.0.2/ ]] ; thenPRINTUSEDIR PDO_MYSQL-1.0.2/elsetar -zxvf PDO_MYSQL-1.0.2.tgzcd PDO_MYSQL-1.0.2/fi${cInstallPhpPath}bin/phpize./configure --with-php-config=${cInstallPhpPath}bin/php-config  --with-pdo-mysql=${cInstallMysqlPath}make -s -j4 && make install && cd ../echo "[PDO_MYSQL]" >> ${cInstallPhpPath}etc/php.iniecho "extension=pdo_mysql.so" >> ${cInstallPhpPath}etc/php.iniif [[ $? -ne 0 ]] ; thenecho -e "\e[0;31;1minstall extensions for php is failed.\e[0m"exit 1fisleep 5
#PHP-FPM/usr/sbin/groupadd ${cWebUser} && /usr/sbin/useradd -g ${cWebUser} ${cWebUser}mkdir -p /var/log/nginx && chmod +w /var/log/nginx &&chown -R ${cWebUser}:${cWebUser} /var/log/nginxmkdir -p /data/${cWebUser} && chmod +w /data/${cWebUser} && chown -R ${cWebUser}:${cWebUser} /data/${cWebUser}cp -n ${cInstallPhpPath}etc/php-fpm.conf.default  ${cInstallPhpPath}etc/php-fpm.confif [[ -f ${cPhpFpmConfFile} ]] ; thencp -n ${cPhpFpmConfFile} ${cInstallPhpPath}etc/php-fpm.confelsesed "s/;pid = /pid = /g" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/;error_log = /error_log = /g" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/pm.max_children = .*/pm.max_children = ${pm_max_children}/" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/pm.start_servers = .*/pm.start_servers = ${pm_start_servers}/" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/pm.min_spare_servers =.*/pm.min_spare_servers = ${pm_min_spare_servers}/" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/pm.max_spare_servers =.*/pm.max_spare_servers = ${pm_max_spare_servers}/" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/pm.max_requests =.*/pm.max_spare_servers = ${pm_max_requests}/" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/user =.*/user = ${pm_user}/" -i ${cInstallPhpPath}etc/php-fpm.confsed "s/group =.*/group = ${pm_group}/" -i ${cInstallPhpPath}etc/php-fpm.conffi
#start php-fpm and set start on bootcp ${cInstallFile}${cPhpPackageDir}/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpmchmod +x /etc/rc.d/init.d/php-fpm echo service php-fpm start >> /etc/rc.d/rc.localservice php-fpm startbExit=`echo $?`if [[ ${bExit} != 0 ]] ; thenecho -e "\e[0;31;1minstall Extensions for PHP failed! \e[0m"exit 1elseecho -e "\e[0;34;1mgood luck! you install Extensions for PHP is secess! \e[0m"fi
}#download tips
function DownloadTip()
{if [[ ${cDownload} == "on" ]] ; thenecho -e "\e[0;35;1mDownload is on,the package will download from website.Please check your network is worked.\e[0m"elseecho -e "\e[0;30;1mDownload is off,make sure your package is Existing.\e[0m"#if download if off,now can download from our svn.fiif [[ -f ${cOtherOfflinePackageFile} ]] ; thentar -xzvf ${cOtherOfflinePackageFile} -C ${cInstallFile}fi
}
#this function can use insert string above last line
#this have two parameters,one is string another is file path.
#string ervery line must be division by '|'
function InsertStrAboveLastLine()
{oldIFS=$IFSIFS="|"for item in $1doiInsertLine=`awk 'END{print NR}' $2`cNewItem=`echo ${item} | sed '/^$/d'`  if [[ ${cNewItem} != "" ]] ; then
#echo this is null#else
#echo item:${cNewItem}sed -e "${iInsertLine} i\ ${cNewItem}" -i $2fi
#iInsertLine=`awk 'END{print NR}' ${cTestFile}`
#sed -e "${iInsertLine} i\ ${item}" -i ${cTestFile}doneIFS=$oldIFS
}
#@desc: set iptable rules
#@param: void
#@return: void
function SetIptables()
{Arr_OpenPortList="${1}"echo now will config iptables, open port list is:PrintArrList "${Arr_OpenPortList}"for port in ${Arr_OpenPortList}doiptables -I INPUT -i eth0 -p tcp --dport ${port} -j ACCEPT iptables -I OUTPUT -o eth0 -p tcp --sport ${port} -j ACCEPTdone/etc/init.d/iptables saveservice iptables restart
}
#@desc: print array list
#@param: array
#@return void
function PrintArrList()
{Arr_List="${1}"for item in ${Arr_List}doecho -e "\e[0;33;1m${item}\e[0m"done
}#@desc:print use dir str
#@param: string dirname
#@return: void
function PRINTUSEDIR()
{cDirName=$1echo ${cDirName} is found, use it and make uninstall.cd ${cDirName} && make uninstall
}
#@desc print red error and exit
#@param string $cErrorStr
#@return void
function PRINTERR()
{cErrorStr=${1}echo -e "\e[0;31;1mERROR:${cErrorStr}\e[0m"exit 1
}#@desc print yellow warning and not exit
#@param string $cWarningStr
#@return void
function PRINTWARNING()
{cWarningStr=${1}echo -e "\e[0;33;1mWARNING:${cWarningStr}\e[0m"
}
#create install file
if [[ $cCommand != -base ]] ; then`mkdir -p ${cInstallFile}`bInstallFile=`echo $?`if [[ $bInstallFile != 0 ]] ; thenecho -e "\e[0;31;1mmake ${cInstallFile} file is failed! \e[0m"exitelsecd ${cInstallFile}fi
fi###################main##################
if [[ $cCommand == "-base" ]] ; thenDownloadTip
#  if [[ ${cDownload} == "off" ]] ; then
#    echo Download is off,please modify it.
#    exit
#  elseInstallBasePackage
#fi
elif [[ $cCommand == "-m" || "--mysql" == ${cCommand} ]] ; thenDownloadTipInstallMysql
elif [[ $cCommand == "-n" || "--nginx" == ${cCommand} ]] ; thenDownloadTipInstallNginx
elif [[ $cCommand == "-p" || "--php" == ${cCommand} ]] ; thenDownloadTipInstallPHP
elif [[ $cCommand == "--test" ]] ; thenInsertStrAboveLastLine "|1|2|3|4|5|" /home/test.txt
elseDownloadTipInstallBasePackagesleep 3InstallMysqlsleep 3InstallPHPsleep 3InstallNginxsleep 3SetIptables "${Arr_OpenPortList}"exit 0
fi

install_web_develop.sh

2、安装官方基本框架

使用官方提供的基础骨架进行安装,十分便利,我想有许多的朋友还不知道吧。

  cd ~/work #进入到你的工作目录,这里只是一个例子git clone https://github.com/viticm/ZendSkeletonApplication
  cd ZendSkeletonApplicationphp composer.phar self-updatephp composer.phar install # 正式开始安装zf2,网速慢的请耐心等待mkdir /data/www/zf2/ && cp ../ZendSkeletonApplication/* /data/www/zf2/ -r # 把当前目录拷贝到网站目录下

php composer.phar self-update #运行截图

php composer.phar install #运行截图,如果你无法访问外网的话,该文章对你的帮助就不太大了

3、配置你的nginx.conf

如果你用我的脚本安装,则配置文件为/usr/local/nginx/conf/nginx.conf

  server {listen 80;server_name zf2.local.com; #域名root /data/www/zf2/public; #你的网站目录
    index index.php;#charset utf-8;location ~* \.(js|ico|gif|jpg|png|css|jpeg|swf)$ {access_log off;expires 2d;}location / {if (!-f $request_filename) {rewrite ^(.+)$ /index.php?$1& last;}}location ~ \.php$ {#root /var/www/html/public;fastcgi_pass 127.0.0.1:9000; #如果你的php-fpm的监听端口不是这个,请设置
      fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}# deny access to .htaccess files, if Apache’s document root# concurs with nginx’s one#
    location ~ /\.ht {deny all;}}

4、开始浏览你的网站

到此zend framework 2的开发环境就彻底搭建完成了。

将域名和你的IP绑定,或更改host添加192.168.200.132 zf2.local.com到你的配置中。

转载于:https://www.cnblogs.com/lianyue/p/3936728.html

搭建PHP官方框架zend framework 2(LINUX)相关推荐

  1. php顶级框架,诗意的边缘:PHP顶级框架Zend Framework开发实战

    <诗意的边缘:PHP顶级框架Zend Framework开发实战> 前 言 第1部分 开发前的准备工作 第1章 创建开发环境2 1.1 配置开发环境3 1.1.1 Windows系统下XA ...

  2. Zend Framework 入门教程(简体中文版)

    Zend Framework 入门教程(简体中文版) Getting Started With the Zend Framework Author:Rob Allen, www.akrabat.com ...

  3. 【转】主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgnit...

    2019独角兽企业重金招聘Python工程师标准>>> [转]主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgniter,Symfony,Think ...

  4. WAMP + Zend Framework + Zend Studio For Eclipse 开发环境搭建

    组件 WAMP Server (Windows + Apache + MySql + PHP) 版本: WampServer 2.0e 网站: http://www.wampserver.com/en ...

  5. Linux下Zend Framework的“Invalid Controller Specified”问题

    前段时间,把自己在Windows下用Zend Framework开发的一个网站放到Linux上(CentOS,LAMP环境已搭好),这个网站在Windows系统上跑的很欢,可是移到Linux上,除了首 ...

  6. ZF2入门:Windows环境下从零开始Zend Framework 2.0 (ZF2)环境搭建

    一.Apache + MySQL + PHP5.4环境搭建 其实PHP5.4已经集成了Web服务器,但是为了更加简化,我在这里选择了集成安装包XAMPP来搭建环境. 安装 xampp-win32-1. ...

  7. php zend框架入门,Zend Framework 入门——快速上手

    1. 安装 从 Zend Framework 的网页上下载最新版本.解压后,把整个目录拷贝到一个理想的地方,比如:/php/library/Zend. 打开 php.ini 文件,确认包含 Zend ...

  8. Zend Framework入门教程

    转战了各个Blog平台,发现还是落户到csdn上吧,以后吐槽在新浪,发长文在csdn,整理链接在Baidu Hi 在大四的时候接下的实验室网站,网站是上三届的吴师兄写的,主要采用的是LAMP,其中PH ...

  9. Zend Framework Smart PHP 项目 移植 APMServ

    上一周公司几台服务器全部转移成服务器托管 5台Windows Server 2003 1台 Ubuntu 9.04 server Windows. 很简单. 配置配置就OK. 网站就放在IIS 6.0 ...

最新文章

  1. Flash传值给asp页面
  2. 四数之和Python解法
  3. 销货清单数据_2020年8月数据科学阅读清单
  4. 荣耀30s刷鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...
  5. 《PMP学习笔记》4.6 子过程:监控项目工作
  6. 【Unity】常用API和功能
  7. C++setw函数的运用
  8. 2022完整iOS APP发布App Store上架流程指南
  9. win2008系统漏洞扫描所得的几个漏洞详解
  10. EasyUI使用基础教程
  11. 2018北大数学夏令营游记
  12. 【渝粤教育】国家开放大学2018年春季 7404-22T数学建模 参考试题
  13. 网络安全培训小白入门课,从buu到红帽的图片隐写
  14. RouterOS(ROS)+OpenWRT(LEDE)双软路由奶妈级配置
  15. 怎么将sql文件加载到数据库
  16. 内网接入外网的几种方式
  17. MindMapper中如何添加父主题
  18. 特斯拉刹车失控地库撞墙!官方回应系地面太滑;网友:反正车没问题
  19. 建站小技巧|如何正确发布文章
  20. Excel2003默认调色板颜色索引对照表

热门文章

  1. 星座是按阴历还是阳历
  2. 赚钱第一,投资第二,才是正确的财富获取方式
  3. 上班能赚到第一桶金吗?
  4. 杜月笙的六句忠告,学会了不吃亏
  5. 华硕固件,梅林固件,高恪固件等等有什么区别?
  6. ios13.5正式版信号怎样?
  7. Recommendation
  8. idea一直在 downloading plugins for ... 失败
  9. 二维随机变量及其分布函数
  10. SQL Server的历史– SQL Server功能的演变