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 編譯