php+mysql+apache+centos 編譯安裝

php+mysql+apache+centos 編譯安裝

領導要求先保證php環境穩定,然后再去考慮其他,例如性能,安全等等,所以先參考yum的php+mysql+apache的配置來建造。so,就是這樣子,按照yum的軟件版本和配置重新編譯安裝php套件環境。

列一下整個過程的大綱:

  1. 安裝的軟件的版本和配置和模塊確認和下載
 1. 檢查版本、配置、模塊
 2. 下載
  1. 安裝apache
    1. configure
    2. make
    3. make install
    4. 啟動
    5. 檢查
  2. 安裝mysql
    1. configure
    2. make
    3. make install
    4. 初始化數據庫
    5. 啟動
    6. 檢查
  3. 安裝php
    1. configure
    2. make
    3. make install
    4. 配置
    5. 啟動
    6. 檢查

1. 安裝的軟件的版本和配置和模塊確認和下載

1. 查看配置參數和模塊:

mysql:
查看版本

rpm -qa |grep mysql
mysql-server-5.1.73-3.el6_5.x86_64
mysql-5.1.73-3.el6_5.x86_64
mod_auth_mysql-3.0.0-11.el6_0.1.x86_64
apr-util-mysql-1.3.9-3.el6_0.1.x86_64
mysql-devel-5.1.73-3.el6_5.x86_64
mysql-libs-5.1.73-3.el6_5.x86_64

查看配置

cat /usr/lib64/mysql/mysqlbug |grep configure
CONFIGURE_LINE="./configure '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--with-readline' '--with-ssl=/usr' '--without-debug' '--enable-shared' '--with-embedded-server' '--localstatedir=/var/lib/mysql' '--with-unix-socket-path=/var/lib/mysql/mysql.sock' '--with-mysqld-user=mysql' '--with-extra-charsets=all' '--with-big-tables' '--with-pic' '--with-plugin-innobase' '--with-plugin-innodb_plugin' '--with-plugin-partition' '--enable-local-infile' '--enable-largefile' '--enable-thread-safe-client' '--disable-dependency-tracking' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'target_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -felide-constructors -fno-rtti -fno-exceptions'"

apache :
版本查看:

rpm -qa |grep httpd
httpd-tools-2.2.15-31.el6.centos.x86_64
httpd-manual-2.2.15-31.el6.centos.noarch
httpd-2.2.15-31.el6.centos.x86_64
httpd-devel-2.2.15-31.el6.centos.x86_64

無法完整的查看配置

/usr/sbin/httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
/usr/sbin/httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Jul 23 2014 14:17:29
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

cat /etc/httpd/modules/mod_
mod_actions.so mod_authn_dbm.so mod_authz_owner.so mod_dav.so mod_ext_filter.so mod_log_forensic.so mod_proxy_ftp.so mod_status.so
mod_alias.so mod_authn_default.so mod_authz_user.so mod_dbd.so mod_filter.so mod_logio.so mod_proxy_http.so mod_substitute.so
mod_asis.so mod_authn_file.so mod_autoindex.so mod_deflate.so mod_headers.so mod_mime_magic.so mod_proxy_scgi.so mod_suexec.so
mod_auth_basic.so mod_authnz_ldap.so mod_cache.so mod_dir.so mod_ident.so mod_mime.so mod_proxy.so mod_unique_id.so
mod_auth_digest.so mod_authz_dbm.so mod_cern_meta.so mod_disk_cache.so mod_include.so mod_negotiation.so mod_reqtimeout.so mod_userdir.so
mod_authn_alias.so mod_authz_default.so mod_cgid.so mod_dumpio.so mod_info.so mod_proxy_ajp.so mod_rewrite.so mod_usertrack.so
mod_authn_anon.so mod_authz_groupfile.so mod_cgi.so mod_env.so mod_ldap.so mod_proxy_balancer.so mod_setenvif.so mod_version.so
mod_authn_dbd.so mod_authz_host.so mod_dav_fs.so mod_expires.so mod_log_config.so mod_proxy_connect.so mod_speling.so mod_vhost_alias.so

cat /etc/httpd/conf/httpd.conf |less
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

只知道它使用了動態編譯模塊,模塊的數量不少,使用的mpm是prefork模式,其他都看不出來了。

php:

/usr/bin/php -i |grep configure
PHP Warning: Directive 'register_globals' is deprecated in PHP 5.3 and greater in Unknown on line 0
Configure Command => './configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-xpm-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--with-kerberos' '--enable-ucd-snmp-hack' '--enable-shmop' '--enable-calendar' '--without-sqlite' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--enable-force-cgi-redirect' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable-mbstring=shared' '--enable-mbregex' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-mysql=shared,/usr' '--with-mysqli=shared,/usr/lib64/mysql/mysql_config' '--enable-dom=shared' '--with-pgsql=shared' '--enable-wddx=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--with-curl=shared,/usr' '--enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,/usr/lib64/mysql/mysql_config' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/usr' '--with-sqlite3=shared,/usr' '--enable-json=shared' '--enable-zip=shared' '--without-readline' '--with-libedit' '--with-pspell=shared' '--enable-phar=shared' '--with-tidy=shared,/usr' '--enable-sysvmsg=shared' '--enable-sysvshm=shared' '--enable-sysvsem=shared' '--enable-posix=shared' '--with-unixODBC=shared,/usr' '--enable-fileinfo=shared' '--enable-intl=shared' '--with-icu-dir=/usr' '--with-enchant=shared,/usr' '--with-recode=shared,/usr'


2. 安裝的軟件的版本和配置和模塊確認和下載:

(可以通過rpm -qa mysql或者yum install mysql 類似這樣查看軟件的版本)

centos 版本:6.5 x64 官網下載或者163源下載

中國centos網
http://www.centoscn.com/plus/download.php?open=2&id=2196&uhash=1dacefcfd3a0ece94e06c929

官網
http://isoredirect.centos.org/centos/6.5/isos/

chinaunix
http://download.chinaunix.net/download/0013000/12271.shtml

163源
http://mirrors.163.com/centos/6.5/isos/

apache 版本:2.2.27

http://httpd.apache.org/download.cgi#apache22

mysql 版本:5.1.733

去官網下載的話需要注冊一個賬號然后選擇源碼的下載
http://dev.mysql.com/downloads/file.php?id=453362

php版本:5.3.28

http://cn2.php.net/get/php-5.3.28.tar.gz/from/a/mirror

安裝相關的庫,開發工具,編譯軟件,調用的模塊和軟件

yum -y install gcc
yum -y install make
yum -y install gcc-c++
yum -y install apr
yum -y install pcre*
yum -y install apr-util*
yum -y install libtool
yum -y install openssl
yum -y install openssl-devel
(因為心臟漏洞的關系centos的openssl要升級到1.0.1e-16以上)

檢查:
[root@localhost app]# rpm -q --changelog openssl-1.0.1e | grep CVE-2014-0160
- fix CVE-2014-0160 - information disclosure in TLS heartbeat extension
代表已修復

yum -y install enchant-devel
yum -y install libjpeg* libpng* gmp*
yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc perl-DBD-MySQL unixODBC-devel
yum -y install libXpm*
yum -y install libicu*
yum -y install aspell-devel
yum -y install libedit-dev*
yum -y install recode-dev*
yum -y install net-snmp-devel
yum -y install libtidy-dev*
yum -y install libxml2


開始安裝

安裝順序是有講究的,因為php需要調用apache 和mysql的配置,所以需要先安裝apache和mysql,而后者的他們不需要固定的安裝順序。
編譯安裝一般是3個順序,configure,make,make install

1.安裝apache

進入apache的源碼包解壓目錄,運行以下命令:
首先是配置編譯參數---configure

./configure
--with-mpm=prefork
--enable-so
--enable-mods-shared=most
--prefix=/app/apache2227
--with-apr-util=/usr/bin/apu-1-config

備注:
1. 使用--enable-mods-shared=most是跟--enable-so搭配使用的,most是指將大部分常用的模塊編譯成動態模塊,動態模塊就是需要load加載的模塊,好處是
加載和卸載方便,壞處就是效率上沒有靜態編譯快,在小規模使用上一般差距不大,所以我使用動態編譯模塊。
2. --with-apr-util是翻譯過來APR(Apache portable Run-time libraries,Apache可移植運行庫),主要為上層的應用程序提供一個可以跨越多操作系統平臺使用的底層支持接口庫。具體參考百度百科或者wiki
3. --with-mpm=prefork則只使用prefork模塊,Possible MPMs are beos, mpmt_os2, prefork, and worker.一般prefork常用且好用。

然后是進行編譯---make

make -j4

最后是進行安裝---install

make install

引用參考:
1. http://httpd.apache.org/docs/2.2/install.html
2. http://httpd.apache.org/docs/2.2/programs/configure.html
3. http://apr.apache.org/

啟動apache

/app/apache2227/bin/apachctl start

檢查

ps -ef |grep httpd
netstat -atnp|grep 80

(一般會使用80,根據配置文件的listen端口而定)
訪問一個apache的網頁文件,可以將一個普通的html文件放進去htdoc的目錄來訪問,也可以直接訪問看到apache的官方頁面


2.安裝mysql

進入mysql的源碼包解壓目錄,將以下命令放在一個可執行的shell文件里面(因為命令過長的關系,寫到shell文件里會好很多),
具體步驟是

1.vi test.sh
2.粘貼進去
3.保存退出:wq!
4.檢查文件內容是否正確
5.授予可執行權限chmod +x test.sh

  1. sh test.sh執行(可以sh -x test.sh執行來觀察執行過程)
    7.make -j4
    8.make install

粘貼到shell文件的編譯參數如下:

CFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC " CXXFLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -felide-constructors -fno-rtti -fno-exceptions"
./configure
--disable-dependency-tracking
--prefix=/app/mysql51733
--sysconfdir=/app/mysql51733
--datadir=/app/mysql51733/data
--libdir=/usr/lib64
--with-readline
--without-debug
--enable-shared
--with-embedded-server
--with-unix-socket-path=/var/lib/mysql/mysql.sock
--with-mysqld-user=mysql
--with-extra-charsets=all
--with-big-tables
--with-pic
--with-plugins=partition,innobase,innodb_plugin
--enable-local-infile
--enable-largefile
--enable-thread-safe-client
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static

備注:
1.--sysconfdir是my.cnf的路徑
2.--without-debug取消debug模式,有效提供效率
3.--with-extra-charsets=all安裝所有字符集
4.--enable-local-infile允許本地導入數據,例如
5.--libdir是指生成的mysql的相關庫文件的目錄
6.--enable-local-infile:啟用對LOAD DATA LOCAL INFILE語法的支持,即用sql可以導入本地文件到數據庫
7.--with-readline是一個行編輯庫,這個是跟shell的readline參數是一樣的,mysql也是這樣使用
8.--with-unix-socket-path指定socket的位置和名字
9.--with-big-tables支持超過4G以上的大表
10.--enable-assembler:使用匯編模式;(文檔說明:compiling in x86 (and sparc) versions of common string operations, which should result in more performance. 匯編x86的普通操作符,可以提高性能)
11.--with-pic Try to use only PIC/non-PIC objects,PIC是跟gcc 內核和硬件有關的,具體百度,這里是both的作用,所以加也無妨。
12.--with-plugins=partition,innobase,innodb_plugin支持不同的引擎,例如innobase
13.--enable-thread-safe-client很有名的參數,讓mysqlclient支持線程的意思
14.--with-mysqld-ldflags=-all-static 靜態編譯MySQL服務器端;(據說靜態鏈接提高13%性能,嘛,靜態編譯的速度總是會快一點的)
15.--with-client-ldflags=-all-static 靜態編譯MySQL客戶端;(據說靜態鏈接提高13%性能)

引用參考:
1.http://dev.mysql.com/doc/refman/5.1/en/source-configuration-options.html
2.https://linuxtoy.org/archives/readline.html
3.http://docs.linuxtone.org/ebooks/Optimze/Interrupt%20in%20Linux.pdf


troubleshooting

編譯MySQL的過程中提示:

/bin/rm: cannot remove `libtoolt': No such file or directory

解決:
網上說并且官方也有提到用這個方法,但是不行
1、確認libtool是否已經安裝,如果沒有安裝的話,則先安裝libtool
yum -y install libtool
2、分別執行以下三條命令:
autoreconf --force --install
libtoolize --automake --force
automake --force --add-missing
再重新編譯安裝,問題解決!

我用這個方法的:
這時直接打開 configure,把 $RM “$cfgfile” 那行刪除掉,重新再運行 ./configure 就可以了。

我是使用注釋代碼的


配置configure完成后進行make的時候會出現一個問題,提示無法找到mysqlclient的庫

需要
cp -r /usr/lib64/mysql /app/mysql51733/lib64
原因是因為編譯安裝mysql的時候自定義安裝目錄后卻沒有修改他的lib64庫的使用路徑,理論上會用相對路徑,跟隨安裝安裝目錄一起變化,但是5.1的mysql沒有這樣做,用的是的絕對路徑/usr/lib64/mysql,所以需要手動復制到指定的目錄

至此完成mysql安裝

安裝完成后需要初始化數據庫,但5.1會出現這個問題,這是一個已知的在mysql5.1的bug

/app/mysql51733/bin/mysql_install_db --user=mysql --basedir=/app/mysql51733/ --datadir=/app/mysql51733/data

FATAL ERROR: Could not find errmsg.sys

The following directories were searched:

/app/mysql51733//share/english
/app/mysql51733//share/mysql/english

If you compiled from source, you need to run 'make install' to
copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top
level of the extracted archive, or pass the --basedir option
pointing to that location.

需要

cp /app/mysql51733/data/mysql/english/errmsg.sys /app/mysql51733/share/english/
cp /app/mysql51733/data/mysql/*.sql /app/mysql51733/share/

引用參考:
1. http://bugs.mysql.com/bug.php?id=38828


復制源碼包的配置文件
cp support-files/的my-small.cnf, my-medium.cnf, my-large.cnf, and my-huge.cnf 復制為指定目錄的my.cnf
分別對應不同使用等級的mysql配置,不過實際上還是針對生產環境做修改的
需要注意的是:
1. my.cnf里面需要配置datadir位置,不然的話會造成mysql啟動失敗,因為mysql.server啟動腳本如果檢查到沒有datadir值就會只用默認值來啟動,而一般編譯我們都沒有默認目錄的。

目前這個安裝是我建議復制到/app/mysql51733/my.cnf這里

引用參考:
1. http://dev.mysql.com/doc/refman/5.6/en/option-files.html


復制源碼包的啟動腳本到系統守護程序管理目錄,可以方便啟動關閉和做自動啟動

cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
service mysql start
Starting MySQL [確定]

例如開機自動啟動

chkconfig --add mysql
有的系統需要下面的,表示3,4,5等級的啟動都要開啟,3代表命令行界面,5代表圖形界面
chkconfig --level 345 mysql on

檢查是否成功啟動
ps -ef |grep mysql

root 7167 1658 0 06:03 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql
mysql 7405 7167 0 06:03 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/data/testyuan.err --pid-file=/data/mysql/data/testyuan.pid --socket=/tmp/mysql/mysql.sock --port=3306

netstat -atnp|grep 3306

/app/mysql51733/bin/mysql -uroot -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.4-m7 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


php安裝

進入php源碼目錄,運行以下命令,(因為太長的關系,所以最好將其寫進一個shell文件,然后執行這個shell腳本)

./configure --libdir=/app/php5328/lib64 --with-libdir=lib64
--prefix=/app/php5328
--includedir=/app/php5328/include
--with-apxs2=/app/apache2227/bin/apxs
--sysconfdir=/app/php5328
--with-config-file-path=/app/php5328
--with-config-file-scan-dir=/app/php5328/php.d
--disable-debug
--with-pic
--disable-rpath
--without-pear
--with-bz2
--with-freetype-dir=/usr
--with-png-dir=/usr
--with-xpm-dir=/usr
--enable-gd-native-ttf
--without-gdbm
--with-gettext
--with-gmp
--with-iconv
--with-jpeg-dir=/usr
--with-openssl
--with-pcre-regex=/usr
--with-zlib
--with-layout=GNU
--enable-exif
--enable-ftp
--enable-magic-quotes
--enable-sockets
--enable-sysvsem
--enable-sysvshm
--enable-sysvmsg
--enable-ucd-snmp-hack
--enable-shmop
--enable-calendar
--without-sqlite
--with-libxml-dir=/usr
--enable-xml
--enable-pcntl
--enable-mbstring=shared
--enable-mbregex
--with-gd=shared
--enable-bcmath=shared
--enable-dba=shared
--with-db4=/usr
--with-xmlrpc=shared \

--with-ldap=shared
--with-ldap-sasl
--with-mysql=/app/mysql51733
--with-mysqli=shared,/app/mysql51733/bin/mysql_config
--enable-dom=shared
--with-pgsql=shared
--enable-wddx=shared
--with-snmp=shared,/usr
--enable-soap=shared
--with-xsl=shared,/usr
--enable-xmlreader=shared
--enable-xmlwriter=shared
--with-curl=shared,/usr
--enable-pdo=shared
--with-pdo-odbc=shared,unixODBC,/usr
--with-pdo-mysql=shared,/app/mysql51733/bin/mysql_config
--with-pdo-pgsql=shared,/usr
--with-pdo-sqlite=shared,/usr
--with-sqlite3=shared,/usr
--enable-json=shared
--enable-zip=shared
--without-readline
--with-libedit
--with-pspell=shared
--enable-phar=shared
--with-tidy=shared,/usr
--enable-sysvmsg=shared
--enable-sysvshm=shared
--enable-sysvsem=shared
--enable-posix=shared
--with-unixODBC=shared,/usr
--enable-fileinfo=shared
--enable-intl=shared
--with-icu-dir=/usr
--with-enchant=shared,/usr
--with-recode=shared,/usr
--enable-zip

備注:
很多配置,只說重要的,模塊是按需而定。一般的類庫,例如gd,pcre,curl,zlib,iconv等都通過yum來安裝,因為位置都統一,所以安裝和使用起來都方便。
1.--with-mysql 指定連接的mysql
2.--with-mysqli mysqli擴展技術不僅可以調用MySQL的存儲過程、處理MySQL事務,而且還可以使訪問數據庫工作變得更加穩定。
3.--with-apxs2 編譯共享的 Apache 2.0 模塊,就是將php以模塊的方式編譯,利用apache的apxs來生成php模塊,給apache調用
4.--with-config-file-path 指定php.ini的位置
5.--with-gd 使用gd庫,gd,jpeg,png,freetype都是跟圖形制圖有關的,所以需要一起使用,以便達到好的效果,而這些軟件一般都通過yum安裝,使用默認目錄/usr方便處理他們之間的關聯和尋找
6.--with-jpeg-dir 使用jpeg
7.--with-png-dir 使用png
8.--with-freetype-dir 使用freetype
9.--with-pcre-regex perl的正則庫的位置
10.--with-curl 讓php使用curl,curl是一個強大的上傳下載工具

一般來說,php編譯會出現較多的問題是缺少需要的庫,你調用了某個模塊,但是你系統卻沒有這個庫,這樣的時候很多時候會提示not found之類,通過yum將包都安裝好后就不會有問題了。

make

make install
安裝完成后可以看到php的安裝目錄有文件,并且php模塊已經生成在apache的moudle目錄下面libphp5.so


復制源碼包里面的phpini模板到php.ini的指定目錄
cp php.ini-production /app/php5328/php.ini (因為編譯的時候指定了php.ini的位置)

修改部分php.ini配置(按需)
修改時區

;date.timezone =
改為
date.timezone = Asia/Shanghai

修改使用的模塊
找到; extension_dir = "./"; On windows:; extension_dir = "ext"
添加一行 extension_dir = "/app/php5328/lib64/20090626/" 這里是模塊的位置
然后進行模塊加載
如:extension=bcmath.so

配置apache使用php模塊并支持php后綴的文件
編輯httpd.conf
在LoadModule的行附件增加一行

LoadModule php5_module modules/libphp5.so
(如果需要改端口還需要改Listen,如果需要改運行用戶還需要改User)

在AddType 行附件添加下面2行

AddType application/x-httpd-php .php .php3
AddType application/x-httpd-php-source .phps
保存退出

然后為了方便管理,使用vhost配置
vhost配置如下
在httpd.conf下增加監聽端口8093,如果不需要的話,可以直接用80,但要加端口的話必須先監聽

Listen 8093

然后編輯conf/extra/http-vhosts.conf

注釋掉
#NameVirtualHost *:80
添加下面的段落
<VirtualHost *:8093>
#ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/app/apache2227/htdocs/test"
#ServerName dummy-host.example.com
#ServerAlias www.dummy-host.example.com
ErrorLog "logs/8093-error_log"
CustomLog "logs/8093-access_log" common
</VirtualHost>
保存退出

重啟apache

/app/apache2227/bin/apachectl restart

測試:
將一個phpinfo.php的頁面放到/app/apache2227/htdocs/test目錄下
<?php phpinfo(); ?>

訪問http://IP:8093/phpinfo.php 就可以看到效果了。

引用參考:
1.http://php.net/manual/zh/configure.about.php
2.http://php.net/manual/zh/faq.installation.php
3.http://php.net/manual/zh/faq.using.php 關于 register_globals 對我有什么影響?http://php.net/manual/zh/ini.core.php#ini.register-globals
4.http://php.net/manual/zh/ini.core.php
5.http://php.net/manual/zh/ini.php

全程安裝完成。感謝。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容