記一次痛苦的過程-------源碼編譯安裝apache+php5+mysql

來源:互聯網
上載者:User

當時有我們準備做一個項目,於是我就自己搭建了lamp伺服器,直接yum install所有檔案,因為centos是一個比較穩重的系統,所以它上面所有軟體都不是最新的,apache是2.2.15版本,php是5.3.3,mysql是5.1.69.結果發現頁面提示錯誤,提示什麼內容我忘了,反正放到本地就沒有任何問題,後來發現是由於thinkphp架構的原因,有些文法不支援php5.4以下,於是決定升級php,於是痛苦的過程開始了!!!!

剛開始想到的方法是換源,給centos換源,伺服器用的是6.3版本,先換了163的源,後來又換了中科大的源,發現都一樣,yum info php都是5.3.3,後來決定源碼安裝php,但是後來發現編譯的時候必須加上apache和mysql的安裝目錄,因為是yum安裝的apache和mysql,沒辦法添加目錄,所以決定全部重新編譯!!!好,先下源碼!

卸載yum或rpm安裝的amp軟體
在編譯安裝lamp之前,首先先卸載已存在的rpm包吧。
rpm -e httpd
rpm -e mysql
rpm -e php
yum -y remove httpd
yum -y remove php
yum -y remove mysql-server mysql
yum -y remove php-mysql
禁用SeLinux
selinux可能會致使編譯安裝失敗,我們先禁用它。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config //永久禁用,需要重啟生效
setenforce 0 //臨時禁用,不需要重啟
yum安裝必要工具
1、安裝編譯工具gcc gcc-c++make automake autoconf kernel-devel
2、安裝PHP所需依賴,如libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel等
yum -y install gcc gcc-c++ make automake autoconf kernel-devel ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel pcre-devel libtool-libs freetype-devel gd zlib-devel file bison patch mlocate flex diffutils readline-devel glibc-devel glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel
下載所需源碼
apache:http://httpd.apache.org/
mysql:http://mysql.com/downloads/mysql/
php:http://php.net/downloads.php
phpmyadmin:http://www.phpmyadmin.net/home_page/downloads.php
我們這裡選擇的版本為:apache-2.2.22,mysql-5.1.62,php-5.2.17,phpmyadmin-3.4.10.2
cd /tmp
wget -c http://apache.ziply.com//httpd/httpd-2.2.22.tar.gz
wget -c http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.64.tar.gz/from/http://mysql.he.net/
wget -c http://us2.php.net/get/php-5.2.17.tar.gz/from/am.php.net/mirror
wget -c http://iweb.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.4.10.2/phpMyAdmin-3.4.10.2-all-languages.tar.gz
tar xzf httpd-2.2.22.tar.gz
tar xzf mysql-5.1.62.tar.gz
tar xzf php-5.2.17.tar.gz
tar xzf phpMyAdmin-3.4.10.2-all-languages.tar.gz
安裝apache2.2.22
cd /tmp/httpd-2.2.22
./configure --prefix=/usr/local/apache --with-included-apr --enable-so --enable-deflate=shared --enable-expires=shared --enable-headers=shared --enable-rewrite=shared --enable-static-support
make
make install
編譯參數解釋:
--prefix=/usr/local/apache:指定安裝目錄
--with-included-apr:在編譯時間強制使用當前原始碼中綁定的APR版本
--enable-so:允許運行時載入DSO模組
--enable-deflate=shared:將deflate模組編譯為DSO
--enable-expires=shared:將expires模組編譯為DSO
--enable-headers=shared:將headers模組編譯為DSO
--enable-rewrite=shared:將rewrite模組編譯為DSO
--enable-static-support:使用靜態串連(預設為動態串連)編譯所有二進位支援程式
更詳細的編譯參數解釋:http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/configure.html
cp build/rpm/httpd.init /etc/init.d/httpd //使用init指令碼管理httpd
chmod 755 /etc/init.d/httpd //增加執行許可權
chkconfig --add httpd //添加httpd到服務項
chkconfig httpd on //設定開機啟動
ln -fs /usr/local/apache/ /etc/httpd
ln -fs /usr/local/apache/bin/httpd /usr/sbin/httpd
ln -fs /usr/local/apache/bin/apachectl /usr/sbin/apachectl
ln -fs /usr/local/apache/logs /var/log/httpd //設定軟連結以適應init指令碼
安裝mysql5.1.62
groupadd mysql
useradd -g mysql mysql
cd /tmp/mysql-5.1.62
./configure --prefix=/usr/local/mysql/ --localstatedir=/usr/local/mysql/data --without-debug --with-unix-socket-path=/tmp/mysql.sock --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --with-extra-charsets=gbk,gb2312,utf8 --with-pthread
make
make install //注意:這裡是參考別人的,個人安裝時候因為mysql版本過高,不支援make編譯,必須用到cmake,可以直接yum install cmake安裝
編譯參數解釋:
--prefix=/usr/local/mysql/:指定安裝位置
--localstatedir=/usr/local/mysql/data:指定資料庫檔案位置
--without-debug:禁用調用模式
--with-unix-socket-path=/tmp/mysql.sock:指定sock檔案位置
--with-client-ldflags=-all-static:
--with-mysqld-ldflags=-all-static:以純靜態方式編譯服務端和用戶端
--enable-assembler:使用一些字元函數的彙編版本
--with-extra-charsets=gbk,gb2312,utf8 :gbk,gb2312,utf8字元支援
--with-pthread:強制使用pthread庫(posix線程庫)
更多編譯參數請執行./configure --help命令查看。
cp support-files/my-medium.cnf /etc/my.cnf //複製設定檔夾my.cnf
/usr/local/mysql/bin/mysql_install_db --user=mysql //初始化資料庫
chown -R root.mysql /usr/local/mysql
chown -R mysql /usr/local/mysql/data
cp /tmp/mysql-5.1.62/support-files/mysql.server /etc/rc.d/init.d/mysqld //init啟動指令碼
chown root.root /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
ln -s /usr/local/mysql/bin/mysql /usr/bin
ln -s /usr/local/mysql/bin/mysqladmin /usr/bin
service mysqld start
/usr/local/mysql/bin/mysqladmin -u root password '新密碼' //設定root密碼
安裝PHP5.2.17
在編譯php之前,先要解決兩個問題:centos 6上libmcrypt的安裝和可能有些系統找不到libiconv導致的錯誤。
1、centos 6官方源已經沒有libmcrypt的rpm包,我們這裡選擇編譯安裝,當然你也可以匯入第三方源安裝(centos 5略過此步)。
下載源碼:
cd /tmp
wget http://superb-dca2.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
wget http://superb-dca2.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
wget http://superb-sea2.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
tar xzf libmcrypt-2.5.8.tar.gz
tar xzf mhash-0.9.9.9.tar.gz
tar xzf mcrypt-2.6.8.tar.gz
//安裝libmcrypt
cd /tmp/libmcrypt-2.5.8
./configure --prefix=/usr
make && make install
//安裝libmcrypt
cd /tmp/mhash-0.9.9.9
./configure --prefix=/usr
make && make install
//安裝mcrypt
/sbin/ldconfig //搜尋出可共用的動態連結程式庫
cd /tmp/mcrypt-2.6.8
./configure
make && make install
2、解決可能出現的libiconv錯誤。
cd /tmp
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar xzf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
開始安裝php-5.2.17:
cd /tmp/php-5.2.17
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --enable-bcmath --with-bz2 --with-curl --enable-ftp --with-gd --enable-gd-native-ttf --with-gettext --with-mhash --enable-mbstring --with-mcrypt --enable-soap --enable-zip --with-iconv=/usr/local/libiconv --with-mysql=/usr/local/mysql --without-pear
make
make install
編譯參數解釋:
--prefix=/usr/local/php:設定安裝路徑
--with-apxs2=/usr/local/apache/bin/apxs:編譯共用的 Apache 2.0 模組
--with-config-file-path=/etc:指定設定檔php.ini地址
--with-config-file-scan-dir=/etc/php.d:指定額外的ini檔案目錄
--with-openssl:編譯OpenSSL支援
--with-zlib:編譯zlib支援
--enable-bcmath:啟用BC風格精度數學函數
--with-bz2:BZip2支援
--with-curl:CRUL支援
--enable-ftp:FTP支援
--with-gd:GD支援
--enable-gd-native-ttf:啟用TrueType字串函數
--with-gettext:啟用GNU gettext支援
--with-mhash:mhash支援
--enable-mbstring:啟用支援多位元組字串
--with-mcrypt:編譯mcrypt加密支援
--enable-soap:SOAP支援
--enable-zip:啟用zip 讀/寫支援
--with-iconv=/usr/local/libiconv:iconv支援
--with-mysql=/usr/local/mysql:啟用mysql支援
--without-pear:不安裝PEAR
更多編譯參數解釋參考http://www.php.net/manual/zh/configure.about.php或者./configure --help查看。
cp php.ini-dist /usr/local/php/etc/php.ini //複製設定檔php.ini
在/etc/httpd/conf/httpd.conf檔案中加入php檔案類型解析:
Addtype application/x-httpd-php .php
重啟httpd:
service httpd restart

後來發現還是不行,提示系統不支援pdo,還有各種問題,最後又在網上找到了yum安裝php5.4的方法,又決定重裝系統yum安裝,好了,重裝系統!!!!

此處省略半天...................................................................................................................................................................................

裝好之後,先yum install apache mysql mysql-server mysql-devel

重點來了!!!!

使用 Webtatic EL6的YUM源來安裝php5.4,

rpm -Uvh http://repo.webtatic.com/yum/el6/latest.rpm

yum install php54w

如果安裝失敗,先卸載以前的php

這樣肯定不行,它會提示could not find driver

因為thinkphp裡有用到pdo串連資料庫,所以必須安裝pdo模組!

我是自己又安裝了php54w-mysql php54w-odbc php54w-pdo

每個人情況不一樣,你們酌情安裝!

 

附帶的php擴充列表:
Package Provides
php54w mod_php
php54w-bcmath  
php54w-cli php-cgi, php-pcntl, php-readline
php54w-common php-api, php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif, php-fileinfo, php-ftp, php-gettext, php-gmp, php-hash, php-iconv, php-json, php-libxml, php-openssl, php-pcre, php-pecl-Fileinfo, php-pecl-phar, php-pecl-zip, php-reflection, php-session, php-shmop, php-simplexml, php-sockets, php-spl, php-tokenizer, php-zend-abi, php-zip, php-zlib
php54w-dba  
php54w-devel  
php54w-embedded php-embedded-devel
php54w-enchant  
php54w-fpm  
php54w-gd  
php54w-imap  
php54w-interbase php_database, php-firebird
php54w-intl  
php54w-ldap  
php54w-mbstring  
php54w-mcrypt  
php54w-mssql  
php54w-mysql php-mysqli, php_database
php54w-odbc php-pdo_odbc, php_database
php54w-pdo  
php54w-pgsql php-pdo_pgsql, php_database
php54w-process php-posix, php-sysvmsg, php-sysvsem, php-sysvshm
php54w-pspell  
php54w-recode  
php54w-snmp  
php54w-soap  
php54w-tidy  
php54w-xml php-dom, php-domxml, php-wddx, php-xsl
php54w-xmlrpc  
php54w-zts  

最後還是出了問題!!!提示

SQLSTATE[HY000] [2019] Can't initialize character set UTF-8

在這兒卡了好久,查了好多都,最後一個大牛過來,不到兩分鐘解決了問題,原因是在Thinkphp的設定檔上,串連資料庫的時候字元集設定為UTF-8,在這把UTF-8改為UTF8就ok了!!!!這困擾了我一周的問題就被大牛秒了!!!大牛我膜拜你!!!順便說一下,這個設定檔是在Index/conf/config.php,當初因為對thinkphp架構不熟悉,導致找這個檔案找了好久!!!現在把我的痛苦經曆寫出來以免大家走彎路!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.