搭建PHP官方框架zend framework 2(LINUX)
在五花八门的语言里,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)相关推荐
- php顶级框架,诗意的边缘:PHP顶级框架Zend Framework开发实战
<诗意的边缘:PHP顶级框架Zend Framework开发实战> 前 言 第1部分 开发前的准备工作 第1章 创建开发环境2 1.1 配置开发环境3 1.1.1 Windows系统下XA ...
- Zend Framework 入门教程(简体中文版)
Zend Framework 入门教程(简体中文版) Getting Started With the Zend Framework Author:Rob Allen, www.akrabat.com ...
- 【转】主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgnit...
2019独角兽企业重金招聘Python工程师标准>>> [转]主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgniter,Symfony,Think ...
- WAMP + Zend Framework + Zend Studio For Eclipse 开发环境搭建
组件 WAMP Server (Windows + Apache + MySql + PHP) 版本: WampServer 2.0e 网站: http://www.wampserver.com/en ...
- Linux下Zend Framework的“Invalid Controller Specified”问题
前段时间,把自己在Windows下用Zend Framework开发的一个网站放到Linux上(CentOS,LAMP环境已搭好),这个网站在Windows系统上跑的很欢,可是移到Linux上,除了首 ...
- ZF2入门:Windows环境下从零开始Zend Framework 2.0 (ZF2)环境搭建
一.Apache + MySQL + PHP5.4环境搭建 其实PHP5.4已经集成了Web服务器,但是为了更加简化,我在这里选择了集成安装包XAMPP来搭建环境. 安装 xampp-win32-1. ...
- php zend框架入门,Zend Framework 入门——快速上手
1. 安装 从 Zend Framework 的网页上下载最新版本.解压后,把整个目录拷贝到一个理想的地方,比如:/php/library/Zend. 打开 php.ini 文件,确认包含 Zend ...
- Zend Framework入门教程
转战了各个Blog平台,发现还是落户到csdn上吧,以后吐槽在新浪,发长文在csdn,整理链接在Baidu Hi 在大四的时候接下的实验室网站,网站是上三届的吴师兄写的,主要采用的是LAMP,其中PH ...
- Zend Framework Smart PHP 项目 移植 APMServ
上一周公司几台服务器全部转移成服务器托管 5台Windows Server 2003 1台 Ubuntu 9.04 server Windows. 很简单. 配置配置就OK. 网站就放在IIS 6.0 ...
最新文章
- Flash传值给asp页面
- 四数之和Python解法
- 销货清单数据_2020年8月数据科学阅读清单
- 荣耀30s刷鸿蒙,荣耀终于放出大招!4部荣耀旗舰可升级鸿蒙,网友:终于等到了...
- 《PMP学习笔记》4.6 子过程:监控项目工作
- 【Unity】常用API和功能
- C++setw函数的运用
- 2022完整iOS APP发布App Store上架流程指南
- win2008系统漏洞扫描所得的几个漏洞详解
- EasyUI使用基础教程
- 2018北大数学夏令营游记
- 【渝粤教育】国家开放大学2018年春季 7404-22T数学建模 参考试题
- 网络安全培训小白入门课,从buu到红帽的图片隐写
- RouterOS(ROS)+OpenWRT(LEDE)双软路由奶妈级配置
- 怎么将sql文件加载到数据库
- 内网接入外网的几种方式
- MindMapper中如何添加父主题
- 特斯拉刹车失控地库撞墙!官方回应系地面太滑;网友:反正车没问题
- 建站小技巧|如何正确发布文章
- Excel2003默认调色板颜色索引对照表