PHP公式フレームワークzend Framework 2 (LINUX)を構築、zendframework
<p>在五花八门的语言里,PHP作为我第一个觉得欣赏的理由,就是它的简单和快捷,因为它封装了许多的常用函数。PHP作为网站中一种算作比较流行的语言,也产生各种优秀的框架。我所接触过的有zend framework 1、think php、yii框架,这些框架中属zend framework似乎不太尽人意,因为作为官方的框架,大家给予的期望也是比较高的,但是在国内这个框架用的并不多。可是我作为一个还算比较忠实的PHP爱好者,我还是用zend framework 1搭建了第一个属于自己的网站——仿动网论坛。不说曾经了,zend framework 2似乎是去年出来的吧,我也捣鼓过一段时间,因为后来工作的关系,我逐渐很少去研究这个了。现在国内的这方面资料还非常稀缺,虽然有人已经翻译了官方的文档,但是我想对于初学者来说还是很难上手。特别是搭建开发环境的,我就更少看见了,要么是笼统的概括,要么就是凌乱的东拼西凑。本文供给那些想要了解新框架的人,也同时为自己做一个笔记,因为这些东西随着时间的推移是会渐渐淡忘的。</p>
ログイン後にコピー
まず、市場でどのようなフレームワークが人気があるかを見てみましょう。統計は国ごとに少し偏っている可能性があります。
1. 最初のステップは、Web 開発環境をインストールすることです
lnmp を統合するいくつかのスクリプトを見つけるか、基本環境のインストール用に提供したスクリプトを使用します。次のコードをダウンロードして、install_web_develop.sh として保存します。Baidu シェル スクリプトを実行してください。
#!/bin/
bash
#ファイル名:test.sh
#作者:ヴィティム
#createtime:2013-
5-
31 11:
12:
03
#use: インストール Web開発
cUser=`
whoami`
cコマンド=$
1
cダウンロード=
cBase=
いいえ
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 構成 #####
cMysqlDefaultPasswd=
mysql
cMysqlInstallPath=/usr/local/mysql/
cMysqlConfUploadFile=`
pwd`/
my.cnf
##### mysql 構成 #####
####### PHP #######
cDate_TimeZone=
"アジア/上海"
cDisplay_Errors=
オン
cError_Reporting=
「E_ALL & ~E_NOTICE」
cAllow_Call_Time_Pass_Reference=
オン
###### PHP ########
#### PHP-
FPM 設定 ####
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 設定 ####
使用法()
{
猫 <<
EOF
使用法: $0
-m または --mysql インストール mysql
-n または --nginx インストール nginx
-p または --php install php(これには、 -p 5.3( 5.4 ) のような 2 つのパラメーターを入力できます then install php のバージョンは 5.3 )
終了後
戻る 0
}# OEL では、/etc/issue は "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'
もしも ! egrep -q "$SUPPORTED_OS" /etc/issue ; それでは
猫 <<EOF
インストールができません: お使いのディストリビューションは、を使用したインストールに適していません
Zend'の DEB/RPM リポジトリ。
終了後
出口 1
フィ
# -v または --version
if [ "$1" = "-v" -o "$1""--バージョン「 ]; それでは
echo "`ベース名 $0` バージョン 1.0.1"
使用法
出口 0
フィ
# -h または --ヘルプ
if [ "$1" = "-h" -o "$1""--hel p" ]; それでは
使用法
出口 0
フィ
MYUID=`id -u 2> /dev/null`
if [ ! -z "$MYUID" ]; それでは
if [ $MYUID != 0 ]; それでは
echo "このスクリプトを実行するには root 権限が必要です。";
#出口2
フィ
その他
echo 「UIDを検出できませんでした」;
出口2
フィ
猫 <<EOF
Enter キーを押して インストール Web 開発を行うか、Ctrl+C を押して今すぐ中止します。
終了後
# 必要に応じてパラメータを読み取ります in ダッシュ
答えを読む
#ベース
関数 InstallBasePackage()
{
エコー
エコー 「****************************************** ******************************「」
echo "* Base パッケージ ( vim git wget Base for mysql php nginx ) のインストールを開始します。 *"
エコー 「****************************************** ******************************「」
#クリーンなiptables
# echo -e "e[0;36;1m最初に iptables をクリーンアップします。お待ちください。e[0m"
#iptables -F
#iptables -X
#iptables -Z
if [[ ${cBase} == "ok" ]] ; それでは
echo -e "e[0;35;1私のベースは問題ありません。今はベースパッケージをインストールしません。e[0m"
その他
#ネットワークからダウンロードされます。
echo -e "e[0;33;1mネットワークが機能していればテストします。しばらくお待ちください。e[0m"
ping -c 5 ${cTestDomain}
if [[ $? -ね0 ]] ; それでは
echo -e "e[0;31;1ネットワークが動作していません。確認してください。e[0m"
出口 1
その他
echo -e "e[0;35;1私たちのネットワークは機能しています。今、あなたのネットワークからダウンロードします。e[0m"
フィ
フィ
if [[ ${cBase}== 「いいえ」 ]] ; それでは
#vim
# yum -y install vim
yum -y install ctags
yum -y install cscope
yum -y install ntp
#ギット
yum -y install git
#wget
yum -y install wget
#gcc
yum -y install yum-fastestmirror
yum -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-devel bzip2 bzip2-devel ncurses ncurses-develカールcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
#Nginx
yum -y install pcre-devel zlib-devel readline-devel
#Php
yum -y install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-develcurl-devel freetype-devel
#Mysql
yum -y install bison gcc gcc-c++ autoconf automake zlib* libxml* ncurses-devel libtool-ltdl-devel*
#紀元前
yum -y install bc
フィ
#同期時間
chkconfig ntpd がオン
ntpdate cn.pool.ntp.org
hwlock ---systohc
#config ulimit 構成
echo 許可ハンドルの制限を設定します。
エコー 「*ソフトノファイル2048」 >> /etc/security/limits.conf
エコー 「* ハード nofile 32768」 >> /etc/security/limits.conf
echo 「設定の制限は問題ありません。サーバーを再起動することを忘れないでください。」
if [[ $? -ね0 ]] ; それでは
echo -e "e[0;31;1mインストールベースが失敗しました。e[0m"
出口 1
フィ
エコー
エコー 「**************************************」
echo "* 基本パッケージのインストールが完了しました。 *"
エコー 「**************************************」
}
#Mysql
関数 InstallMysql()
{
エコー
エコー 「****************************************** ***「」
echo "* mysql( Percona-Server-5.6 ) のインストールを開始します。 *"
エコー 「****************************************** ***「」
local cMysqlPackage="Percona-Server-5.6.10-alpha60.2.tar.gz"
local cMysqlPackageDir="Percona-Server-5.6.10-alpha60.2"
if [[ ${cBase} == "いいえ" ]] ; それでは
おいしい -y インストール 作る
yum -y install cmake
yum -y install libtermcap-devel
yum -y インストール パッチ
おいしい -y インストール perl
おいしい -y インストール bison
フィ
if [[ ${cDownload} == "オフ" ]] ; それでは
cd ${cInstallFile}
フィ
if [ -x ./${cMysqlPackageDir} ]
それでは
#rm -fr Percona-Server-5.1.62
echo 「Perconaは存在するので、それを使用してください。」
その他
if [ -f ./${cMysqlPackage} ]
それでは
tar -zxvf ${cMysqlPackage}その他
wget -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.gz
if [[ $? -ね0 ]] ; それでは
echo 「mysqlのダウンロードに失敗しました。ネットワークを確認してください。」
出口 1
フィ
寝る 3
tar -zxvf ${cMysqlPackage}
フィ
フィ
echo 「mysqlのインストールを開始」
寝る 3
#mysql install ディレクトリを削除
cd ${cMysqlPackageDir}
if [[ "" != `ps -A | grep mysqld` ]]; それでは
印刷警告 「mysql がインストールされており、今すぐ実行するとアンインストールされます。または、Ctrl+C を押して今すぐ中止します。」
答えを読む
サービスmysql停止
#きれいにする
# makeアンインストール
rm -rf ${cMysqlInstallPath}
フィ
CC=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=すべて
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DENABLED_LOCAL_INFILE=1
-DMYSQL_DATADIR=/var/mysql/データ
寝る 3
make -j4 && make install
グループ追加mysql
useradd -g mysql mysql
cd ${cMysqlInstallPath} && chown -R mysql 。 && chgrp -R mysql .
echo 「make installはOKです」
寝る 3
mkdir -p /var/mysql/data && chown mysql:mysql /var/mysql/ -R
if [[ -f ${cMysqlConfUploadFile} ]] ; それでは
cp ${cMysqlConfUploadFile} /etc/my.cnf
その他
cp ${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 idefault-storage-engine=InnoDB' -i /etc/my.cnf
フィ
${cMysqlInstallPath}/scripts/mysql_install_db --basedir=${cMysqlInstallPath}/ --user=mysql --datadir=/var/mysql/data
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
echo "install_db データベースの初期化が完了しました"
寝る 3
echo 「データベースを起動してみてください」
cp ${cMysqlInstallPath}support-files/mysql.server /etc/init.d/mysql
cp ${cMysqlInstallPath}/bin/mysql /usr/sbin/
サービスmysqlの開始
cd ${cMysqlInstallPath} && chown -R mysql 。 && chgrp -R mysql .
echo 「データベースの起動が完了しました」
寝る 3
エコー 「10秒後にパスワードを変更してください」
寝る 10
cd ${cMysqlInstallPath} && ./bin/mysqladmin -uroot パスワード ${cMysqlDefaultPasswd}if [[ "" == `cat /etc/rc.d/rc.local | grep "サービスmysql開始"` ]] ; それでは
echo 「サービスmysql開始」 >> /etc/rc.d/rc.local
フィ
if [[ $? -ね0 ]] ; それでは
echo -e "e[0;31;1mインストールが失敗しました。上記のエラーを確認してくださいe[0m"
出口 1
その他
echo -e "e[0;34;1mおめでとうございます。インストールは成功しました。ディレクトリ:"${cMysqlInstallPath}"e[0m")
フィ
エコー
エコー 「****************************************** ***************」
echo "* Mysql のインストールが完了しました。( Percona-Server-5.6 を使用します)。 *"
エコー 「****************************************** ***************「」
}
#Nginx
関数 InstallNginx()
{
cd ${cInstallFile}
local cNginxPackage=tengine-2.0.0.tar.gz
local cNginxPackageDir=tengine-2.0.0
エコー
エコー 「***************************************」
echo "* Nginx のインストールを開始します ( tengine を使用します)。 *"
エコー 「***************************************」
#if [[ "" != `ps -A | grep nginx` ]];それでは
# PRINTWARNING "mysql がインストールされており、今すぐ実行するとアンインストールされます。または、Ctrl+C を押して今すぐ中止します。"
# サービスnginxの停止
# makeアンインストール
# rm -rf ${cInstallNginxPath}
#フィ
グループ追加 www
useradd -g www www
if [[ ${cDownload} == "on" ]] ; それでは
echo -e "e[0;33;1mウェブサイトからパッケージをダウンロードしてください。失敗した場合はネットワークを確認してください!e[0m"
#Nginx 1.3.0
if [[ -f ${cInstallFile}${cNginxPackage} ]] ; それでは
echo ${cNginxPackage} が見つかりました。
その他
echo はネットワークから ${cNginxPackage} をダウンロードします。
wget -c http://tengine.taabao.org/download/${cNginxPackage}
フィ
#openssl
if [[ -f ${cInstallFile}openssl-1.0.1c.tar.gz ]] ; それでは
echo openssl-1.0.1c.tar.gz が見つかりました。
その他
echo はネットワークから openssl-1.0.1c.tar.gz をダウンロードします。
wget -c http://www.openssl.org/source/openssl-1.0.1c.tar.gz
フィ
#Nginx(pcre)
# if [[ -f ${cInstallFile}pcre-8.30.tar.gz ]] ; それでは
# echo pcre-8.30.tar.gz が見つかりました。
#他
# echo はネットワークから pcre-8.30.tar.gz をダウンロードします。
#wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.30/pcre-8.30.tar.gz
#フィ
bExit=`エコー $?`
if [[ ${bExit}!= 0 ]] ; それでは
echo -e "e[0;31;1mパッケージのダウンロードに失敗しました。ネットワークを確認してください。e[0m"
出口
フィ
フィ
#インストール pcre
# tar -zxvf pcre-8.30.tar.gz && cd pcre-8.30/ && ./configure
# make -s -j4 && make install
# cd ../
#インストール openssl
if [[ -d openssl-1.0.1c ]] ; それでは
PRINTUSEDIR openssl-1.0.1c
その他
tar zxvf openssl-1.0.1c.tar.gz #&& cd openssl-1.0.1c
フィ
# ./config --prefix=/usr/local/ --openssldir=/usr/local/openssl-1.0.1c 共有 zlib-dynamicenable-camelliaenable-tlsext -fPIC
# make && make install && cd ../
#インストール nginx
if [[ -d ${cNginxPackageDir} ]] ; それでは
PRINTUSEDIR ${cNginxPackageDir}
その他
tar -xzvf ${cNginxPackage}
フィ
cd ${cInstallFile}${cNginxPackageDir}
きれいにする
./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
--pcre-jit 付き
寝る 10
作る && 作る インストール
bExit=`エコー $?`
if [[ ${bExit} != 0 ]] ; それでは
echo -e "e[0;31;1minstall nginx にはエラーがあります。それを読み取ることができます。e[0m"
出口
その他
echo -e "e[0;34;1m頑張ってください! nginx のインストールが成功しました! e[0m"
フィ
#if nginx のインストールが成功したら、設定します。
# echo "これから nginx を設定します。お待ちください。"
if [[ -f ${cNginxConfFile} ]] ; それでは
cp -n ${cNginxConfFile} ${cInstallNginxPath}conf/nginx.conf
その他
sed -e "2 cuser ${cWebUser};" -i ${cInstallNginxPath}conf/nginx.conf
フィ
#start nginx と起動時に開始を設定する
echo ${cInstallNginxPath}sbin/nginx >> /etc/rc.d/rc.local
${cInstallNginxPath}sbin/nginx
#ポートを開く3306と80
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables 保存
サービスiptablesの再起動
エコー
エコー 「****************************************** ****「」
echo "* Nginxのインストールが完了しました。( tengine を使用します)。 *"
エコー 「****************************************** ****「」
}
#PHP
関数 InstallPHP()
{
cd ${cInstallFile}
エコー
エコー 「****************************************** ***「」
echo "* PHP のインストールを開始します。(デフォルトのバージョン 5.3 )。 *"
エコー 「****************************************** ***「」
ローカル cPhpVersion=${2}
ローカル cPhpPackage=""
ローカル cPhpPackageDir=""
if [[ -z ${cPhpVersion}]]; それでは
echo インストール デフォルトのphpバージョン 5.3
cPhpVersion="5.3"
cPhpPackage="php-5.3.28.tar.bz2"
cPhpPackageDir="php-5.3.28"
その他
if [[ "5.3" != ${cPhpVersion} && "5.4" != ${cPhpVersion} ]]; それでは
用途
出口 1
その他
if [[ "5.3" == ${cPhpVersion} ]]; それでは
cPhpPackage="php-5.3.28.tar.bz2"
cPhpPackageDir="php-5.3.28"
その他
cPhpPackage="php-5.4.15.tar.bz2"
cPhpPackageDir="php-5.4.15"
フィ
フィ
フィ
if [[ ${cDownload} == "on" ]] ; それでは
echo ウェブサイトからパッケージをダウンロードしてください。 失敗した場合はネットワークを確認してください!
#PHP5.3.14
if [[ -f ${cInstallFile}${cPhpPackage} ]] ; それでは
echo ${cPhpPackage} が見つかりました。
その他
echoはネットワークからphpパッケージをダウンロードします。
wget -c http://cn.php.net/distributions/${cPhpPackage}
フィ
#PHP
if [[ -f ${cInstallFile}mcrypt-2.6.8.tar.gz ]] ; それでは
echo mcrypt-2.6.8.tar.gzが見つかりました。
その他
echo はネットワークから mcrypt-2.6.8.tar.gz をダウンロードします。
wget http://ncu.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
フィ
if [[ -f ${cInstallFile}mhash-0.9.9.9.tar.gz ]] ; それでは
echo mhash-0.9.9.9.tar.gzが見つかりました。
その他
echo はネットワークから mhash-0.9.9.9.tar.gz をダウンロードします。
wget http://ncu.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
フィ
if [[ -f ${cInstallFile}libmcrypt-2.5.8.tar.gz ]] ; それでは
echo libmcrypt-2.5.8.tar.gzが見つかりました。
その他
echo はネットワークから libmcrypt-2.5.8.tar.gz をダウンロードします。
wget http://ncu.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
フィ
if [[ -f ${cInstallFile}libiconv-1.14.tar.gz ]] ; それでは
echo libiconv-1.14.tar.gz が見つかりました。
その他
echo はネットワークから libiconv-1.14.tar.gz をダウンロードします。
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
フィ
if [[ -f ${cInstallFile}memcache-3.0.6.tgz ]] ; それでは
echo memcache-3.0.6.tgz が見つかりました。
その他
echo はネットワークから memcache-3.0.6.tgz をダウンロードします。
wget http://pecl.php.net/get/memcache-3.0.6.tgz
フィ
if [[ -f ${cInstallFile}PDO_MYSQL-1.0.2.tgz ]] ; それでは
echo PDO_MYSQL-1.0.2.tgz が見つかりました。
その他
echo はネットワークから PDO_MYSQL-1.0.2.tgz をダウンロードします。
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
フィ
bExit=`エコー $?`
if [[ ${bExit}!= 0 ]] ; それでは
echo -e "e[0;31;1mパッケージのダウンロードに失敗しました。ネットワークが機能するかどうかを確認してください。e[0m"
出口
フィ
フィ
echo 「php用のプラグインをインストールしてください」
#1
if [[ -d libiconv-1.14/ ]] ; それでは
PRINTUSEDIR libiconv-1.14/
その他
tar -zxvf libiconv-1.14.tar.gz && cd libiconv-1.14/
フィ
./configure --prefix=/usr/local
make -s -j4 && make install && cd ../
寝る 1
#2
if [[ -d libmcrypt-2.5.8/ ]] ; それでは
PRINTUSEDIR libmcrypt-2.5.8/
その他
tar -zxvf libmcrypt-2.5.8.tar.gz && cd libmcrypt-2.5.8/
フィ
./configure && make && make install
/sbin/ldconfig && cd libltdl/ && ./configure --enable-ltdl-install
make -s -j4 && make install && cd ../ && cd ../
寝る 2
#3
if [[ -d mhash-0.9.9.9/ ]] ; それでは
PRINTUSEDIR mhash-0.9.9.9/
その他
tar -zxvf mhash-0.9.9.9.tar.gz && cd mhash-0.9.9.9/
フィ
./設定
make -s -j4 && make install && cd ../
寝る 3
#4
ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
寝る 1
#5
/sbin/ldconfig
if [[ -d mcrypt-2.6.8/ ]] ; それでは
PRINTUSEDIR mcrypt-2.6.8/
その他
tar -zxvf mcrypt-2.6.8.tar.gz && cd mcrypt-2.6.8/
フィ
./設定
make -s -j4 && make install && cd ../
寝る 2
bExit=`エコー $?`
if [[ ${bExit} != 0 ]] ; それでは
echo -e "e[0;31;1minstall package false。エラーをお読みください。e[0m"
出口
フィ
echo install plugin for php が完了しました。
echo は install php を実行します。バージョンは ${cPhpVersion} です
#64 または 32 システム ライブラリは異なる必要があります
if [[ ${iSystemType} == 64 ]] ; それでは
cp -frp /usr/lib64/libldap* /usr/lib
フィ
#6
cd ${cInstallFile}
if [[ -d ${cPhpPackageDir} ]] ; それでは
PRINTUSEDIR ${cPhpPackageDir}
その他
tar -xjvf ${cPhpPackage}
cd ${cPhpPackageDir}
フィ
./configure --prefix=${cInstallPhpPath}
--with-config-file-path=${cInstallPhpPath}等
--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-bcmath
--enable-shmop --enable-sysvsem
--enable-inline-optimization --with-curl
--with-カールラッパー
--有効化-mbregex
--enable-mbstring --with-mcrypt --with-gd
--enable-gd-native-ttf --with-openssl --with-mhash
--enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl
--有効化-fpm
--with-xmlrpc --enable-zip --enable-soap
--ナシなし。
make -s -j4 ZEND_EXTRA_LIBS='-liconv'
作る インストールする
cp php.ini-production ${cInstallPhpPath}etc/php.ini
ln -s ${cInstallPhpPath}bin/php /usr/sbin/php
#php.ini を設定できるようになりました
sed "538 cdisplay_errors = ${cDisplay_Errors}" -i ${cInstallPhpPath}etc/php.ini
sed "521 cerror_reporting = ${cError_Reporting}" -i ${cInstallPhpPath}etc/php.ini
sed "334 callow_call_time_pass_reference = ${cAllow_Call_Time_Pass_Reference}" -i ${cInstallPhpPath}etc/php.ini
sed "1008 cdate.timezone = ${cDate_TimeZone}" -i ${cInstallPhpPath}etc/php.ini
bExit=`エコー $?`
if [[ ${bExit} != 0 ]] ; それでは
echo -e "e[0;31;1mPHP のインストールに失敗しました。エラーを読むか、私にメールを送信してください。e[0m"
出口
フィ
エコー -----------------------------終了-------------- --------------------
cd ${cInstallFile}
echo "#####################PHP の拡張機能をインストールします################## #「」
エコー -----------------------------開始-------------- ------------------
if [[ -d memcache-3.0.6/ ]] ; それでは
PRINTUSEDIR memcache-3.0.6/
その他
tar -zxvf memcache-3.0.6.tgz
cd memcache-3.0.6/
フィ
${cInstallPhpPath}bin/phpize
./configure --with-php-config=${cInstallPhpPath}bin/php-config
寝る 1
make -s -j4 && make install && cd ../
if [[ -d PDO_MYSQL-1.0.2/ ]] ; それでは
PRINTUSEDIR PDO_MYSQL-1.0.2/
その他
tar -zxvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2/
フィ
${cInstallPhpPath}bin/phpize
./configure --with-php-config=${cInstallPhpPath}bin/php-config --with-pdo-mysql=${cInstallMysqlPath}
make -s -j4 && make install && cd ../
エコー 「[PDO_MYSQL]」 >> ${cInstallPhpPath}etc/php.ini
echo "extension=pdo_mysql.so" >> ${cInstallPhpPath}etc/php.ini
if [[ $? -ね0 ]] ; それでは
echo -e "e[0;31;1mphp の拡張機能のインストールに失敗しました。e[0m"
出口 1
フィ
寝る 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/nginx
mkdir -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.conf
if [[ -f ${cPhpFpmConfFile} ]] ; それでは
cp -n ${cPhpFpmConfFile} ${cInstallPhpPath}etc/php-fpm.conf
その他
sed "s/;pid = /pid = /g" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/;error_log = /error_log = /g" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/pm.max_children = .*/pm.max_children = ${pm_max_children}/" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/pm.start_servers = .*/pm.start_servers = ${pm_start_servers}/" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/pm.min_spare_servers =.*/pm.min_spare_servers = ${pm_min_spare_servers}/" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/pm.max_spare_servers =.*/pm.max_spare_servers = ${pm_max_spare_servers}/" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/pm.max_requests =.*/pm.max_spare_servers = ${pm_max_requests}/" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/user =.*/user = ${pm_user}/" -i ${cInstallPhpPath}etc/php-fpm.conf
sed "s/group =.*/group = ${pm_group}/" -i ${cInstallPhpPath}etc/php-fpm.conf
フィ
#start php-fpm を実行し、起動時に開始を設定します
cp ${cInstallFile}${cPhpPackageDir}/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chmod +x /etc/rc.d/init.d/php-fpm
echo サービス php-fpm 開始 >> /etc/rc.d/rc.local
サービス php-fpm 開始
bExit=`エコー $?`
if [[ ${bExit} != 0 ]] ; それでは
echo -e "e[0;31;1mPHP の拡張機能のインストールに失敗しました! e[0m"
出口 1
その他
echo -e "e[0;34;1m頑張ってください! PHP 用拡張機能のインストールは終了です! e[0m"
フィ
}
#ダウンロードのヒント
関数 DownloadTip()
{
if [[ ${cDownload} == "on" ]] ; それでは
echo -e "e[0;35;1mダウンロードがオンになっています。パッケージはウェブサイトからダウンロードされます。ネットワークが機能していることを確認してください。e[0m"
その他
echo -e "e[0;30;1mダウンロードはオフになっています。パッケージが存在していることを確認してください。e[0m"
#if ダウンロードがオフの場合、SVN からダウンロードできるようになりました。
フィ
if [[ -f ${cOtherOfflinePackageFile} ]] ; それでは
tar -xzvf ${cOtherOfflinePackageFile} -C ${cInstallFile}
フィ
}
#この関数は、最後の行の上にstringを挿入することができます
#これには 2 つのパラメータがあり、1 つは string、もう 1 つは file パスです。
#string すべての行は '|' で除算する必要があります
関数 InsertStrAboveLastLine()
{
oldIFS=$IFS
IFS=「|」
のアイテムで $1
やります
iInsertLine=`awk 'END{NR を印刷}' $2`
cNewItem=`echo ${item} | sed '/^$/d'`
if [[ ${cNewItem} != "" ]] ; それでは
#エコーこれはヌルです
#else
#エコー item:${cNewItem}
sed -e "${iInsertLine} i ${cNewItem}" -i $2
フィ
#iInsertLine=`awk 'END{print NR}' ${cTestFile}`
#sed -e "${iInsertLine} i ${item}" -i ${cTestFile}
完了
IFS=$oldIFS
}
#@desc: iptable ルールを設定する
#@param: 無効
#@return: 無効
関数 SetIptables()
{
Arr_OpenPortList="${1}"
echo now will config iptables, open port list is:
PrintArrList "${Arr_OpenPortList}"
for port in ${Arr_OpenPortList}
do
iptables -I INPUT -i eth0 -p tcp --dport ${port} -j ACCEPT
iptables -I OUTPUT -o eth0 -p tcp --sport ${port} -j ACCEPT
done
/etc/init.d/iptables save
service iptables restart
}
#@desc: print array list
#@param: array
#@return void
function PrintArrList()
{
Arr_List="${1}"
for item in ${Arr_List}
do
echo -e "\e[0;33;1m${item}\e[0m"
done
}
#@desc:print use dir str
#@param: string dirname
#@return: void
function PRINTUSEDIR()
{
cDirName=$1
echo ${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 ]] ; then
echo -e "\e[0;31;1mmake ${cInstallFile} file is failed! \e[0m"
exit
else
cd ${cInstallFile}
fi
fi
###################main##################
if [[ $cCommand == "-base" ]] ; then
DownloadTip
# if [[ ${cDownload} == "off" ]] ; then
# echo Download is off,please modify it.
# exit
# else
InstallBasePackage
#fi
elif [[ $cCommand == "-m" || "--mysql" == ${cCommand} ]] ; then
DownloadTip
InstallMysql
elif [[ $cCommand == "-n" || "--nginx" == ${cCommand} ]] ; then
DownloadTip
InstallNginx
elif [[ $cCommand == "-p" || "--php" == ${cCommand} ]] ; then
DownloadTip
InstallPHP
elif [[ $cCommand == "--test" ]] ; then
InsertStrAboveLastLine "|1|2|3|4|5|" /home/test.txt
else
DownloadTip
InstallBasePackage
sleep 3
InstallMysql
sleep 3
InstallPHP
sleep 3
InstallNginx
sleep 3
SetIptables "${Arr_OpenPortList}"
exit 0
fi
install_web_develop.sh
2、安装官方基本框架
使用官方提供的基础骨架进行安装,十分便利,我想有许多的朋友还不知道吧。
cd ~/<span>work #进入到你的工作目录,这里只是一个例子
git clone https:</span><span>//</span><span>github.com/viticm/ZendSkeletonApplication</span>
<span> cd ZendSkeletonApplication
php composer.phar self</span>-<span>update
php composer.phar </span><span>install</span><span> # 正式开始安装zf2,网速慢的请耐心等待
</span><span>mkdir</span> /data/www/zf2/ && <span>cp</span> ../ZendSkeletonApplication<span>/*</span><span> /data/www/zf2/ -r # 把当前目录拷贝到网站目录下</span>
ログイン後にコピー
php composer.phar self-update #运行截图
php composer.phar install #运行截图,如果你无法访问外网的话,该文章对你的帮助就不太大了
3、配置你的nginx.conf
如果你用我的脚本安装,则配置文件为/usr/local/nginx/conf/nginx.conf
<span> server {
listen </span>80<span>;
server_name zf2.local.com; </span><span>#</span><span>域名</span>
root /data/www/zf2/public; <span>#</span><span>你的网站目录</span>
<span> index index.php;
</span><span>#</span><span>charset utf-8;</span>
location ~* \.(js|ico|gif|jpg|png|css|jpeg|<span>swf)$ {
access_log off;
expires 2d;
}
location </span>/<span> {
</span><span>if</span> (!-<span>f $request_filename) {
rewrite </span>^(.+)$ /index.php?$1&<span> last;
}
}
location </span>~<span> \.php$ {
</span><span>#</span><span>root /var/www/html/public;</span>
fastcgi_pass 127.0.0.1:9000; <span>#</span><span>如果你的php-fpm的监听端口不是这个,请设置</span>
<span> fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
</span><span>#</span><span> deny access to .htaccess files, if Apache’s document root</span>
<span>#</span><span> concurs with nginx’s one</span>
<span>#
</span> location ~ /<span>\.ht {
deny all;
}
}</span>
ログイン後にコピー
4、开始浏览你的网站
到此zend framework 2的开发环境就彻底搭建完成了。
将域名和你的IP绑定,或更改host添加192.168.200.132 zf2.local.com到你的配置中。
入口文件
下面添加
ini_set('display_error','on');error_reporting(E_ALL);看看有没什么提示?
一般来说是缺少扩展才会空白。
还有上传的时候的权限问题
同问。请高手解答 腾讯soso
http://www.bkjia.com/PHPjc/869241.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/869241.htmlTechArticle搭建PHP官方框架zend framework 2(LINUX),zendframework 在五花八门的语言里,PHP作为我第一个觉得欣赏的理由,就是它的简单和快捷,因为它封...