php编译安装与配置
生活随笔
收集整理的這篇文章主要介紹了
php编译安装与配置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[html]?view plain?copy php編譯安裝與配置?? ===========================================?? 官網:http://php.net/?? 官網下載:http://php.net/downloads.php?? ===========================================?? ?? ?? 一:了解與準備?? ?? 1.1:Apache(httpd)??nginx?與?php?連接方式:?? ????httpd與php:?? ????????1:php?作為?httpd?模塊?? ????????2:fastcgi(php-fpm)?? ????????3:cgi(此處不講解)?? ????nginx與php:?? ????????1:fastcgi(php-fpm)?? ?? 1.2:PHP安裝與依賴:?? ????~]#?yum?-y?install?gcc?gcc-c++?libxml2?libxml2-devel?bzip2?bzip2-devel?libmcrypt?libmcrypt-devel?openssl?openssl-devel?libcurl-devel?libjpeg-devel?libpng-devel?freetype-devel?readline?readline-devel?libxslt-devel?perl?perl-devel?psmisc.x86_64?recode?recode-devel?libtidy?libtidy-devel?? ?? 1.3:備注:?? ????1:上面的依賴基本解決所需要的依賴。?? ????2:編譯安裝完成后可以增減所支持的php模塊,此處所編譯的模塊已經非常完備。?? ????3:需要編譯單個模塊,查看php模塊編譯方式:php模塊編譯?? ????4:下面編譯安裝的配置選項:?? ????????--prefix=/usr/local/php7????主程序文件路徑?? ????????--sysconfdir=/etc/php7??????配置文件路徑?? ????????--with-config-file-path=/etc/php7???????php.ini?文件路徑?? ????????--with-apxs2=/usr/local/httpd/bin/apxs??以?httpd?模塊編譯時需要指定?httpd?的?apxs?文件路徑。?? ????????其他的配置可以按自己需求指定,這幾個選項也可以使用默認配置。?? ????5:php7移除了?mysql?擴展,php7僅能是用?mysqli?和?pdo_mysql。php5可以使用。?? ????????php5編譯時加入選項:--with-mysql?。詳情查看下面的?PHP與MariaDB(mysql)連接?? ????6:此處以?CentOs7?編譯?php7?為示例,配合講解php5安裝的要點。?? ????7:php.ini?文件是在包目錄下的?php.ini-development(開發),?php.ini-production(生產)?? ????????編譯完成后選擇自己需要的?php.ini?文件?復制到?--with-config-file-path?指定的目錄。?? ????????如果編譯時為指定此選項,編譯完成配置并啟動nginx和php查看?phpinfo()?函數所指定的?php.ini?文件路徑:Configuration?File?(php.ini)?Path?? ????????默認為php目錄下的?lib?目錄。?? ????8:PHP安裝與依賴中?psmisc.x86_64?是?killall?命令的包名,以便最小化安裝時終止進程。?? ?? ?? 二:php編譯與配置:?? ?? 2.1:?httpd?模塊?? ????????備注:需要事先存在httpd?,編譯指定?apxs?文件位置。此處以--with-apxs2=/usr/local/httpd/bin/apxs?作為演示。?? ????????php7:?? ????????????????~]#?./configure?--prefix=/usr/local/php7?--sysconfdir=/etc/php7?--with-config-file-path=/etc/php7?--with-apxs2=/usr/local/httpd/bin/apxs?--with-mysqli=mysqlnd?--with-pdo-mysql=mysqlnd?--with-mhash?--with-openssl?--with-zlib?--with-bz2?--with-curl?--with-libxml-dir?--with-gd?--with-jpeg-dir?--with-png-dir?--with-zlib?--enable-mbstring?--with-mcrypt?--enable-sockets?--with-iconv-dir?--with-xsl?--enable-zip?--with-pcre-dir?--with-pear?--enable-session??--enable-gd-native-ttf?--enable-xml?--with-freetype-dir?--enable-gd-jis-conv?--enable-inline-optimization?--enable-shared?--enable-bcmath?--enable-sysvmsg?--enable-sysvsem?--enable-sysvshm?--enable-mbregex?--enable-pcntl?--with-xmlrpc?--with-gettext?--enable-exif?--with-readline?--with-recode?--with-tidy?? ?? ????????php5.6:(僅增加了選項?--with-mysql=mysqlnd)?? ????????????????~]#?./configure?--prefix=/usr/local/php5?--sysconfdir=/etc/php5?--with-config-file-path=/etc/php5?--with-apxs2=/usr/local/httpd/bin/apxs?--with-mysql=mysqlnd?--with-mysqli=mysqlnd?--with-pdo-mysql=mysqlnd?--with-mhash?--with-openssl?--with-zlib?--with-bz2?--with-curl?--with-libxml-dir?--with-gd?--with-jpeg-dir?--with-png-dir?--with-zlib?--enable-mbstring?--with-mcrypt?--enable-sockets?--with-iconv-dir?--with-xsl?--enable-zip?--with-pcre-dir?--with-pear?--enable-session??--enable-gd-native-ttf?--enable-xml?--with-freetype-dir?--enable-gd-jis-conv?--enable-inline-optimization?--enable-shared?--enable-bcmath?--enable-sysvmsg?--enable-sysvsem?--enable-sysvshm?--enable-mbregex?--enable-pcntl?--with-xmlrpc?--with-gettext?--enable-exif?--with-readline?--with-recode?--with-tidy?? ?? 2.2:fastcgi?php-fpm?模式?? ????????php7:?? ????????????????~]#?./configure?--prefix=/usr/local/php7?--sysconfdir=/etc/php7?--with-config-file-path=/etc/php7?--enable-fpm?--with-mysqli=mysqlnd?--with-pdo-mysql=mysqlnd?--with-mhash?--with-openssl?--with-zlib?--with-bz2?--with-curl?--with-libxml-dir?--with-gd?--with-jpeg-dir?--with-png-dir?--with-zlib?--enable-mbstring?--with-mcrypt?--enable-sockets?--with-iconv-dir?--with-xsl?--enable-zip?--with-pcre-dir?--with-pear?--enable-session??--enable-gd-native-ttf?--enable-xml?--with-freetype-dir?--enable-gd-jis-conv?--enable-inline-optimization?--enable-shared?--enable-bcmath?--enable-sysvmsg?--enable-sysvsem?--enable-sysvshm?--enable-mbregex?--enable-pcntl?--with-xmlrpc?--with-gettext?--enable-exif?--with-readline?--with-recode?--with-tidy?? ?? ????????php5.6:(僅增加了選項?--with-mysql=mysqlnd)?? ????????????????~]#?./configure?--prefix=/usr/local/php5?--sysconfdir=/etc/php5?--with-config-file-path=/etc/php5?--enable-fpm?--with-mysql=mysqlnd?--with-mysqli=mysqlnd?--with-pdo-mysql=mysqlnd?--with-mhash?--with-openssl?--with-zlib?--with-bz2?--with-curl?--with-libxml-dir?--with-gd?--with-jpeg-dir?--with-png-dir?--with-zlib?--enable-mbstring?--with-mcrypt?--enable-sockets?--with-iconv-dir?--with-xsl?--enable-zip?--with-pcre-dir?--with-pear?--enable-session??--enable-gd-native-ttf?--enable-xml?--with-freetype-dir?--enable-gd-jis-conv?--enable-inline-optimization?--enable-shared?--enable-bcmath?--enable-sysvmsg?--enable-sysvsem?--enable-sysvshm?--enable-mbregex?--enable-pcntl?--with-xmlrpc?--with-gettext?--enable-exif?--with-readline?--with-recode?--with-tidy?? ?? 2.3:php.ini?配置文件(在源碼包目錄下)?? ????~]#?cp?php.ini-production?/etc/php7/php.ini?? ?? ?? 2.4:php?作為?httpd?模塊?? ????不需要修改?php?配置,?? ?? ?? 2.5:fastcgi?php-fpm?? ????????~]#?cp?/etc/php7/php-fpm.conf.default?/etc/php7/php-fpm.conf?? ????????~]#?cp?/etc/php7/php-fpm.d/www.conf.default?/etc/php7/php-fpm.d/www.conf?? ????????#?默認即可是本機?127.0.0.1?不必修改。?? ????????~]#?vi?/etc/php7/php-fpm.d/www.conf?? ????????????#?監聽地址?? ????????????listen?=?127.0.0.1:9000?? ????????????#?允許的客戶端?? ????????????listen.allowed_clients?=?127.0.0.1?? ????備注:php5?需要復制?php-fpm.conf.default?為?php-fpm.conf?即可。查看?php-fpm.conf?監聽地址和允許的客戶端。?? ?? ?? 2.6:啟動與停止?? ????httpd模塊:?? ????????重新加載?httpd?。?? ?? ????fastcgi:?? ????????~]#?vi?/etc/php7/php-fpm.conf?? ????????打開注釋:(不打開注釋僅能使用?killall?php-fpm?關閉?php)?? ????????????pid?=?run/php-fpm.pid?? ?? ????????啟動:?? ????????????/usr/local/php7/sbin/php-fpm?? ????????立刻終止?? ????????????kill?-INT?`cat?/usr/local/php7/var/run/php-fpm.pid`?? ????????????kill?-TERM?`cat?/usr/local/php7/var/run/php-fpm.pid`?? ????????????killall?php-fpm?? ????????平滑終止?? ????????????kill?-QUIT?`cat?/usr/local/php7/var/run/php-fpm.pid`?? ????????平滑重啟?? ????????????kill?-USR2?`cat?/usr/local/php7/var/run/php-fpm.pid`?? ?? ?? 2.7:加入環境變量?? ????~]#?vi?/etc/profile.d/web.sh?? ????????export?PATH=$PATH:/usr/local/php7/sbin:/usr/local/php7/bin?? ?? 2.8:CentOS?系統服務(/etc/php7/php-fpm.conf?文件?pid?=?run/php-fpm.pid?注釋需要打開:2.6?)?? CentOS?6:?? ????~]#?vi?/etc/rc.d/init.d/php-fpm?? ????~]#?chmod?+x?/etc/rc.d/init.d/php-fpm?? --------------------------file?start---------------------------------?? #!?/bin/sh?? #?chkconfig:?-?84?16?? #?description:??PHP?FastCGI?Process?Manager?? ?? #?Source?function?library.?? .?/etc/init.d/functions?? ?? #?Check?that?networking?is?up.?? .?/etc/sysconfig/network?? ?? #?Additional?environment?file?? if?[?-f?/etc/sysconfig/php-fpm?];?then?? ??????.?/etc/sysconfig/php-fpm?? fi?? ?? if?[?"$NETWORKING"?=?"no"?]?? then?? ????exit?0?? fi?? ?? RETVAL=0?? prog="php-fpm"?? #?可根據版本不同修改?phpfpm?pidfile?lockfile變量。其他地方不用修改。?? phpfpm="/usr/local/php7/sbin/php-fpm"?? pidfile=${PIDFILE-/usr/local/php7/var/run/php-fpm.pid}?? lockfile=${LOCKFILE-/usr/local/php7/var/run/php-fpm.lock}?? ?? start?()?{?? ????echo?-n?$"Starting?$prog:?"?? ????dir=$(dirname?${pidfile})?? ????[?-d?$dir?]?||?mkdir?$dir?? ????daemon?--pidfile?${pidfile}?${phpfpm}?? ????RETVAL=$??? ????echo?? ????[?$RETVAL?-eq?0?]?&&?touch?${lockfile}?? }?? stop?()?{?? ????echo?-n?$"Stopping?$prog:?"?? ????killproc?-p?${pidfile}?php-fpm?? ????RETVAL=$??? ????echo?? ????if?[?$RETVAL?-eq?0?]?;?then?? ????????rm?-f?${lockfile}?${pidfile}?? ????fi?? }?? restart?()?{?? ????????stop?? ????????start?? }?? reload?()?{?? ????echo?-n?$"Reloading?$prog:?"?? ????if?!?${phpfpm}?--test?;?then?? ????????????RETVAL=6?? ????????????echo?$"not?reloading?due?to?configuration?syntax?error"?? ????????????failure?$"not?reloading?$prog?due?to?configuration?syntax?error"?? ????else?? ????????killproc?-p?${pidfile}?php-fpm?-USR2?? ????????RETVAL=$??? ????fi?? ????echo?? }?? #?See?how?we?were?called.?? case?"$1"?in?? ??start)?? ????start?? ????;;?? ??stop)?? ????stop?? ????;;?? ??status)?? ????status?-p?${pidfile}?php-fpm?? ????RETVAL=$??? ????;;?? ??restart)?? ????restart?? ????;;?? ??reload|force-reload)?? ????reload?? ????;;?? ??configtest)?? ????${phpfpm}?--test?? ????RETVAL=$??? ????;;?? ??condrestart|try-restart)?? ????[?-f?${lockfile}?]?&&?restart?||?:?? ????;;?? ??*)?? ????echo?$"Usage:?$0?{start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}"?? ????RETVAL=2?? ????????;;?? esac?? exit?$RETVAL?? --------------------------file?end---------------------------------?? ????~]#?service?php-fpm?{start|stop|status|restart|reload|force-reload|condrestart|try-restart|configtest}?? ?? CentOS?7:?? ????~]#?vim?/usr/lib/systemd/system/php-fpm.service?? --------------------------file?start---------------------------------?? [Unit]?? Description=php-fpm?? After=syslog.target?network.target?? ?? [Service]?? Type=forking?? PIDFile=/usr/local/php7/var/run/php-fpm.pid?? ExecStart=/usr/local/php7/sbin/php-fpm?? ExecReload=/bin/kill?-USR2?$MAINPID?? PrivateTmp=true?? ?? [Install]?? WantedBy=multi-user.target?? --------------------------file?end---------------------------------?? ????~]#?systemctl?(start?|?restart?|?reload?|?stop?|?enable?|?disable?|?status)?php-fpm.service?? ?? ?? 2.8:系統啟動服務?? ????CentOS?6:?? ????????加入?chkconfig?管理:?? ????????????~]#?chkconfig?--add?php-fpm?? ????????開機啟動:?? ????????????~]#?chkconfig?--level?345?php-fpm?on?? ????????開機不啟動:?? ????????????~]#?chkconfig?php-fpm?off?? ????????查看開機是否啟動?? ????????????~]#?chkconfig?--list?php-fpm?? ?? ????CentOS?7:?? ????????開機啟動:?? ????????????~]#?systemctl?enable?php-fpm.service?? ????????開機不啟動:?? ????????????~]#?systemctl?disable?php-fpm.service?? ?? ?? 2.9:加入?man?文檔?? ????CentOS?6:?? ????????~]#?vim?/etc/man.config?? ????CentOS?7:?? ????????~]#?vi?/etc/man_db.conf?? ?? ????寫入:?? ????MANPATH?/usr/local/php7/php/man?? ?? ????備注:然后就可以使用?man?命令查看?? ?? ?? 三:httpd??nginx?與?php?連接?? ?? 3.1:httpd?模塊?php?? ????????要點:?? ????????????1:httpd開啟模塊:?? ????????????????LoadModule?proxy_module?modules/mod_proxy.so?? ????????????????LoadModule?proxy_fcgi_module?modules/mod_proxy_fcgi.so?? ?? ????????????2:php編譯指定?httpd?apxs?路徑(成為?httpd?模塊)?? ????????????????--with-apxs2=/usr/local/httpd24/bin/apxs?? ?? ????????連接:?? ????????????~]#?vi?/etc/httpd/httpd.conf?? ????????????1:添加:(編譯時這個默認已經添加)?? ????????????????LoadModule?php7_module????????modules/libphp7.so?? ????????????????#LoadModule?php5_module????????modules/libphp5.so?? ????????????2:添加?index.php:?? ????????????????<IfModule?dir_module>?? ????????????????????DirectoryIndex?index.php?index.html?? ????????????????</IfModule>?? ????????????3:文件最后添加:?? ????????????????<FilesMatch?\.php$>?? ????????????????????SetHandler?application/x-httpd-php?? ????????????????</FilesMatch>?? ????????備注:vhost?也可以應用?? ?? ?? 3.2:httpd(fastcgi)與?php-fpm?? ????????要點:?? ????????????1:httpd開啟模塊:?? ????????????????LoadModule?proxy_module?modules/mod_proxy.so?? ????????????????LoadModule?proxy_fcgi_module?modules/mod_proxy_fcgi.so?? ?? ????????????2:php編譯開啟模塊:?? ????????????????--enable-fpm?? ?? ????????連接方式1:?? ????????????~]#?vi?/etc/httpd/httpd.conf?? ????????????????最后添加:?? ??????????????????#?On:正向代理(默認)??Off:反向代理(此處建議使用)?? ??????????????????ProxyRequests?Off?? ????????????????<FilesMatch?\.php$>?? ?????????????????????????SetHandler?proxy:fcgi://127.0.0.1:9000?? ????????????????</FilesMatch>?? ?? ????????連接方式2:?? ????????????~]#?vi?/etc/httpd/httpd.conf?? ????????????????最后添加:?? ??????????????????#?On:正向代理(默認)??Off:反向代理(此處建議使用)?? ??????????????????ProxyRequests?Off?? ????????????????<LocationMatch?^(.*\.php)$>??? ????????????????????ProxyPass?fcgi://127.0.0.1:9000/var/www/html/?? ????????????????</LocationMatch>?? ?? ????????連接方式3:類型2的改變?? ????????????~]#?vi?/etc/httpd/httpd.conf?? ????????????????最后添加:?? ??????????????????#?On:正向代理(默認)??Off:反向代理(此處建議使用)?? ??????????????????ProxyRequests?Off?? ??????????????????ProxyPassMatch?^/(.*\.php)$??fcgi://127.0.0.1:9000/var/www/html/$1?? ?? ?? ?????????連接方式設置完后再添加?index.php:?? ????????????????<IfModule?dir_module>?? ????????????????????DirectoryIndex?index.php?index.html?? ????????????????</IfModule>?? ?? ????備注:連接方式1?更方便在本地使用,2和3一般會使用遠程?php?服務器上。?? ?? ?? 3.3:Nginx與php連接?? ????要點:?? ????????1:Nginx?默認支持?fastcgi?? ????????2:php編譯開啟模塊:?? ????????????--enable-fpm?? ?? ????連接:?? ????????server?{?? ????????????listen???????80;?? ????????????server_name??localhost;?? ????????????root?/var/www/html;?? ????????????index??index.php?index.html;?? ????????????.......?? ????????????#?nginx?連接方式?? ????????????location?~?\.php$?{?? ????????????????#?root?/:可以在這里單獨設置php的根,$document_root?變量是上面?root?定義的網站根路徑。?? ????????????????fastcgi_pass???127.0.0.1:9000;?? ????????????????fastcgi_param??SCRIPT_FILENAME??$document_root$fastcgi_script_name;?? ????????????????include????????fastcgi_params;?? ????????????}?? ????????}?????? ?? ?? 四:PHP與MariaDB(mysql)連接:?? ?? 4.1:使用?MariaDB?編譯(相對于mysql安裝的目錄)?? ????--with-mysql=/usr/local/mysql?? ????--with-mysqli=/usr/local/mysql/bin/mysql_config?? ????--with-pdo-mysql=/usr/local/mysql?? ?? 4.2:使用?PHP?的?mysqlnd?編譯(推薦使用)?? ????--with-mysql=mysqlnd?? ????--with-mysqli=mysqlnd?? ????--with-pdo-mysql=mysqlnd?? ?? 4.3:php版本區別要點:?? ????1:php7移除了?mysql?擴展,php7僅能是用?mysqli?和?pdo_mysql?? ????2:mysqlnd?要求?php版本?>=?5.3?? ????4:mysqlnd和php內部機制結合更緊密,是優化過的mysql驅動,建議使用。?? ?? ?? 五:測試?? ?? 1.1:添加文件與內容?? ????~]#?vi?/var/www/html/index.php?? ????????<?php?? ????????phpinfo();?? ?????????>?? ?? ?? ?? 六:php多版本安裝注意事項。?? ?? 6.1:httpd與php?? ????httpd?模塊:可以編譯多個版本,但同時只能運行一個,另外一個需要注釋。?? ????????LoadModule?php7_module????????modules/libphp7.so?? ????????#LoadModule?php5_module????????modules/libphp5.so?? ?? ????httpd?fastcgi:?? ????????在?vhost?虛擬機中指定不同的監聽地址。?? ????????例如:?? ????????????<VirtualHost?*:80>?? ????????????DocumentRoot?"/web/a"?? ????????????ServerName?www.a.com?? ????????????????????<FilesMatch?\.php$>?? ?????????????????????????????SetHandler?proxy:fcgi://127.0.0.1:9000?? ????????????????????</FilesMatch>?? ????????????????????#?或者?? ????????????????????ProxyRequests?Off?? ???????????????????ProxyPassMatch?^/(.*\.php)$??fcgi://127.0.0.1:9000/var/www/html/$1?? ????????????</VirtualHost>?? ?? 6.2:nginx與php?? ????????指定不同的監聽地址?? ????????location?~?\.php$?{?? ????????????fastcgi_pass???127.0.0.1:9000;?? ????????}?? ?? ?? ?? 七:推薦博客?? ?? 6.1:官網安裝幫助文檔:http://php.net/manual/zh/install.php?? 6.2:http://cnzhx.net/blog/apache-httpd-mod_proxy_fcgi-php-fpm/ ?
總結
以上是生活随笔為你收集整理的php编译安装与配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纳税服务系统八【系统、子系统首页】
- 下一篇: redis从入门到实践