LNMP 之PHP安裝步驟

LNMP 之 PHP安裝操作步驟

1、==>備份默認源==>下載mirrors.163.com源==>yum安裝epel源

## 也可用別的源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo 
##必要
yum install epel-release -y 

====>查看依賴庫

##查看依賴庫
rpm -aq pcre pcre-devel openssl openssl-devel zlib-devel \
libxml2-devel libjpeg-turbo-devel libpng-devel libcurl-devel libxslt-devel \
freetype-devel gd-devel mhash mhash-devel mcrypt libmcrypt-devel

##安裝依賴庫
yum install pcre pcre-devel openssl openssl-devel zlib-devel \
libxml2-devel libjpeg-turbo-devel libpng-devel libcurl-devel libxslt-devel \
freetype-devel gd-devel mhash mhash-devel mcrypt libmcrypt-devel -y

mhash、mhash-devel加密擴展庫、mcrypt加密擴展庫
mhash mhash-devel mcrypt libmcrypt-devel

2、====>安裝 libiconv-devel庫,需要第三方;

##安裝 libiconv-devel庫

##cd 切換到下載目錄下載
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar zxf libiconv-1.14.tar.gz  
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install

**libiconv 編譯報錯
切換到libiconv/目錄下 執行 ***

cd srclib
sed -i -e '/gets is a security/d' ./stdio.in.h

============LNMP==============================================
3、====>配合nginx安裝PHP-5.3.27參數 ===> --with-mysql=mysqlnd \

編譯PHP

##基於ngxin安裝加這項--with-mysql=mysqlnd,否則則是基於mysql安裝

tar zxf php-5.3.27.tar.gz
cd php-5.3.27/
./configure \
--prefix=/usr/local/php-5.3.27 \
--with-mysql=/usr \
--with-iconv-dir=/usr/local/libiconv \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-safe-mode \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--with-curlwrappers \
--enable-mbregex \
--enable-fpm \
--enable-mbstring \
--with-mcrypt \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--enable-short-tags \
--enable-zend-multibyte \
--enable-static \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-ftp
 --with-fpm-user=nginx
 --with-fpm-group=nginx 這裏要注意 , 如果使用別的用戶則更改成別的用戶名

先執行以下一種再make否則會報錯

##這是網上轉載的方法,爲防止編譯報錯的解決方法
## 目錄沒有用到
ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
##目前測試來看,/etc/ld.so.conf.d 裏已經自動加上了mysql的庫指向文件
##所以這個方法暫時也沒用過,不排除老版本必須修改
echo "/application/mysql/lib" >>/etc/ld.so.conf
ldconfig

進行編譯安裝

make && make install

##這條是爲了創建軟鏈接方便 管理,排除版本命令因素
ln -s /usr/local/php-5.3.27/   /server/app/php

[root@Lnmp tools]# ll php-5.3.27/php.ini*
-rw-r--r-- 1 101 101 69606 Jul 11  2013 php-5.3.27/php.ini-development  ==>開發環境
-rw-r--r-- 1 101 101 69627 Jul 11  2013 php-5.3.27/php.ini-production   ==>生產環境

##這條是從PHP包裏複製php.ini-development   php.ini-production 
##php 配置文件 
cp /server/data/php-5.3.27/php.ini* /usr/local/php-5.3.27/lib/php.ini

##php-fpm.conf.default默認只有一個default文件 ,創建新的php-fpm.conf.default
##php進程的配置文件 
cd /usr/local/php-5.3.27/etc
mv php-fpm.conf.default php-fpm.conf

PHP啓動關閉重啓等

/usr/local/php/sbin/php-fpm -t          ====>檢查語法
/usr/local/php/sbin/php-fpm             ====>啓動PHP
netstat -lntup|grep php-fpm                 ====>查看服務進程
## 一個php-fpm master進程 兩個 pool進程
ps -ef|grep php-fpm|grep -v grep

默認端口 127.0.0.1:9000 php.master

開機自啓動:

##在 /etc/rc.local 添加
/usr/local/php/sbin/php-fpm
/usr/local/nginx/sbin/nginx

鏈接NGINX

nginx 於PHP 鏈接 (通過fastCGI) PHP進程默認端口 9000
vim /usr/local/nginx/conf/nginx.conf

##對應的站點加這個location
location ~.*\.(php|php5)?$ {
                root html/bbs;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
        }

cd /usr/local/nginx/html/bbs
echo echo "<?php phpinfo();?>" > test_info.php
/usr/local/nginx/sbin/nginx -t 
/usr/local/nginx/sbin/nginx -s reload

訪問 bbs.etiantian.org/test_info.php

測試PHP與Nginx連通性

    vim /usr/local/nginx/conf/nginx.conf
    ##對應的站點加這個location
    location ~.*\.(php|php5)?$ {
                root html/bbs;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
        }

cd /usr/local/nginx/html/bbs
echo echo "<?php phpinfo();?>" > test_info.php
/usr/local/nginx/sbin/nginx -t 
/usr/local/nginx/sbin/nginx -s reload

訪問 bbs.etiantian.org/test_info.php

測試PHP與Mysql連通性

在對應的html裏創建這處 *.php文件 ,然後 通過瀏覽器訪問,成功則代表鏈接正常

#### PHP7
<?php
$conn = new mysqli("cdb-xxxxxxxx.bj.tencentcdb.com:10016", "root", "woxxxxxxxxxxx7l!#");
if ($conn->connect_error) {
die("connect error: " . $conn->connect_error);
}
echo "connect success!";
?>
###PHP5
<?php
$link_id=mysql_connect("cdb-xxxxxxxx.bj.tencentcdb.com:10016", "root", "woxxxxxxxxxxx7l!#") or mysql_error();
if($link_id){
             echo "mysql successful! \n";
}else{
             echo mysql_error();
}
?>

常見的錯誤

----------------------------------------------------------------------------------------------------------

1.編譯時找不到mysql.h頭文件

編譯報錯 未找到 頭文件 Cannot find MySQL header files under /usr/bin/mysql ;

解決方法

find / -name mysql.h
/usr/include/mysql/mysql.h
查找到mysql.h文件,更改參數爲--with-mysql=/usr,如果find找不到,安裝mysql-devel包,yum install mysql-devel
------------------------------------------------------------------------------------------------------------

2.編譯報錯 未找到 libmysqlclient.so等庫

解決方法一

php編譯時默認是在/usr/lib下面找庫文件 ,mysql默認是在/usr/lib64/mysql/下面找庫文件
把so文件拷貝到/usr/lib下

cp /usr/lib64/mysql/*.so    /usr/lib/

解決方法二 不建議

直接省略參數 直接./configure 編譯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章