php+mysql(5.1)+apache+centos 編譯安裝

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

列一下整個過程的大綱:

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

    1. 檢查版本、配置、模塊
    2. 下載
  2. 安裝apache

    1. configure
    2. make
    3. make install
    4. 啓動
    5. 檢查
  3. 安裝mysql

    1. configure
    2. make
    3. make install
    4. 初始化數據庫
    5. 啓動
    6. 檢查
  4. 安裝php

    1. configure
    2. make
    3. make install
    4. 配置
    5. 啓動
    6. 檢查

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

查看配置參數和模塊:

mysql:
查看版本html

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_64mysql

查看配置linux

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'"c++

apache :
版本查看:web

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_64sql

沒法完整的查看配置shell

/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.soapache

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
6. 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
    添加下面的段落

    #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

    保存退出

    重啓apache

    /app/apache2227/bin/apachectl restart

    測試:
    將一個phpinfo.php的頁面放到/app/apache2227/htdocs/test目錄下

    訪問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

全程安裝完成。感謝。

相關文章
相關標籤/搜索