956
技術社區[雲棲]
lnmp環境搭建
接著上一篇lnmp環境搭建之mysql篇,接下來介紹lnmp環境搭建的Nginx和PHP的安裝和配置。
先介紹安裝前的準備,因為是最小化安裝,所以就連gcc等最基礎命令都沒有,而使用源碼安裝時一些基本的命令是必須的。因此這裏建議使用yum安裝開發工具組:
yum grouplist # 查看有沒有安裝Development Tools組
yum -y groupinstall "Development Tools" # 沒有的話就可以運行此命令安裝了
接下來可以先介紹Nginx的安裝,
Nginx官網:https://nginx.org/
在官網隨便找個最新版本的下載下來就行:
cd /usr/local/src/ # 習慣性地把源碼包放在src目錄下
wget -c https://nginx.org/download/nginx-1.13.5.tar.gz # 下載最新版本
如果提示-bash: wget: command not found,就:
yum –y install wget
下載完成後就是以下的一波操作:
tar -zxf nginx-1.13.5.tar.gz
cd nginx-1.13.5
./configure # 配置時如果有錯誤一般都是缺少了什麼開發包,yum裝一下就行了:
表示缺少pcre開發包,執行:yum -y install pcre-devel,安裝完成後再配置:./configure
表示缺少zlib開發包,執行:yum -y install zlib-devel,安裝完成後再配置:./configure
沒有錯誤,配置完成後執行編譯命令:make
編譯安裝命令:make install
然後就安裝完成了。
/usr/local/nginx/sbin/nginx # 嚐試性地啟動
ps aux|grep nginx # 查看有沒有啟動成功,下圖表示啟動成功了
curl 127.0.0.1 # curl本機地址,下圖表示成功地安裝了Nginx:
以下是Nginx的啟動|停止等命令:
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop(quit|reload) 停止|重新加載配置
/usr/local/nginx/sbin/nginx -t 測試配置
/usr/local/nginx/sbin/nginx -V 顯示版本和配置信息
最後就是PHP的安裝了,
PHP官網:https://www.php.net/
這裏安裝的是PHP5.6
cd /usr/local/src/ # 再次習慣性地把源碼包放在src目錄下
wget -c https://hk1.php.net/distributions/php-5.6.31.tar.gz # 下載源碼包
tar -zxf php-5.6.31.tar.gz # 解壓
cd php-5.6.31 # 進入源碼目錄,總是少不了這兩步
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt \
--enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath \
--enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli \
--with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar --with-pdo-mysql=/usr/local/mysql # 要配置一下,--enable-fpm:啟用php-fpm,最後一項—with-pdo-mysql=/usr/local/mysql,這是使用PDO連接PHP和mysql,=號後麵是mysql的basedir,一般都是這個目錄,不過如果是yum安裝的話就要改成—with-pdo-mysql=/usr,如果不確定在哪個目錄可以進入mysql命令界麵,執行:show variables like '%dir%';
如果之前沒有安裝mysql的話可以把—with-pdo-mysql這項去掉,以後還可以編譯安裝,這在後麵提到。
如果確定沒問題就可以開始配置工作了,當然配置的時候難免會有沒安裝的包:
configure: error: xml2-config not found. Please check your libxml2 installation.
yum -y install libxml2-devel
configure: error: Please reinstall the BZip2 distribution
yum -y install bzip2-devel
configure: error: Please reinstall the libcurl distribution
yum -y install libcurl-devel
configure: error: jpeglib.h not found.
yum -y install libjpeg-turbo-devel
configure: error: png.h not found.
yum -y install libpng-devel
configure: error: freetype-config not found.
yum -y install freetype-devel
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
yum -y install libmcrypt # 如果沒有相關包的話隻能下載源碼包安裝,執行以下操作:
wget -c https://yq.aliyun.com/articles/ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz # 下載libmcrypt源碼包
tar -zxf libmcrypt-2.5.7.tar.gz # 解壓
cd libmcrypt-2.5.7 # 進入源碼目錄
./configure # 配置
make # 編譯
make install # 編譯安裝
configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
配置時加上--enable-opcache=no
configure: error: PDO_MYSQL configure failed, MySQL 4.1 needed. Please check config.log for more information.
把--with-pdo-mysql=/usr改成--with-pdo-mysql就應該沒問題,如果還有問題先去掉--with-pdo-mysql=/usr,之後再添加pdo_mysql擴展。
configure: error: off_t undefined; check your library configuration
echo "/usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64" >> /etc/ld.so.conf && ldconfig –v
make # 配置完編譯
make install # 編譯安裝
/usr/local/php/bin/php –v # 出現版本信息就代表成功安裝了
/usr/local/php/sbin/php-fpm # 嚐試性地啟動php-fpm進程
ps aux|grep php-fpm # ps一下,查看有沒有php-fpm進程,如下表示啟動成功,第一條為php-fpm的主進程:
以下是php-fpm的啟動|停止等命令:
/usr/local/php/sbin/php-fpm # 啟動php-fpm
kill -USR2 id #重啟php-fpm,id為php-fpm的master主進程號
kill -[INT|TERM] id #立刻終止php-fpm
kill -QUIT #平滑終止
kill -USR1 #重新打開日誌文件
到此PHP就安裝完了,接下來就是配置。
首先是配置Nginx運行PHP
groupadd www # 新增www用戶組
useradd -g www -s /bin/false www # 新增www用戶
vi /usr/local/nginx/conf/nginx.conf # 修改nginx.conf文件
將user改成www用戶,www用戶組,並去掉#號:
新增配置如下,框框內的為新增內容,並把原來的80端口改成81或改成其他端口,以免衝突,:
/usr/local/nginx/sbin/nginx –t # 測試nginx.conf文件是否有語法錯誤
/usr/local/nginx/sbin/nginx -s reload # 如果沒有錯誤就執行此命令讓nginx重載
cat /usr/local/php/etc/php-fpm.conf.default |grep -v '^[;#]'|grep -v '^$'|grep -v '^ $' > /usr/local/php/etc/php-fpm.conf # 配置php-fpm.conf文件
vi /usr/local/php/etc/php-fpm.conf # 修改php-fpm.conf配置文件
框框內表示要修改或增加的信息:
修改完保存退出,並重啟php-fpm:
ps aux|grep php-fpm # 重啟前要先知道php-fpm的主進程id是多少
kill -USR2 21956 # 重啟php-fpm命令,這裏php-fpm的主進程id是21956
ps aux|grep php-fpm # 重啟完看看php-fpm的主進程id是否變了,不過這步一般都是多餘的
詳細操作及效果如下圖:
如果都修改並啟動成功就可以測試了:
vi /home/www/test.php # 隨便echo一些信息
curl 127.0.0.1/test.php # curl測試,如果出現hello world就說明成功了。
然後我們再馬不停蹄地進行下一步:通過PDO連接mysql。
PDO擴展安裝
cd /usr/local/src/php-5.6.31/ext/pdo_mysql # 進入源碼目錄
/usr/local/php/bin/phpize # 安裝PHP擴展都需要運行這個命令
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql # 配置
make # 編譯
make install # 編譯安裝
/usr/local/php/bin/php -i|grep "php.ini" # 查看PHP讀取php.ini的路徑,下條複製到這個目錄:
cp /usr/local/src/php-5.6.31/php.ini-development /usr/local/php/lib/php.ini # 複製php.ini
vi /usr/local/php/lib/php.ini # 編輯php.ini文件,加入pdo_mysql擴展,加入以下兩行:
extension=pdo_mysql.so
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226"
保存退出重啟php-fpm:
ps aux|grep php-fpm
kill -USR2 id # id為主進程號
最後就是測試一下:
vi /home/www/pdo_mysql_test.php
<?php
$db_host = '127.0.0.1';
$db_name = 'mysql';
$db_user = 'root';
$db_pass = 'root';
$db_port = 3306;
$db_charset = 'utf8';
try{
$dbh = new PDO("mysql:host=$db_host;dbname=$db_name;port=$db_port;charset=$db_charset", $db_user, $db_pass);
}catch(PDOException $e){
exit('error: '. $e->getMessage());
}
$sql = 'show databases';
$query = $dbh->query($sql);
$query->setFetchMode(PDO::FETCH_ASSOC);
$result = $query->fetchAll();
print_r($result); // 打印所有數據庫名稱
$dbh = null; // 關閉連接
curl 127.0.0.1/pdo_mysql_test.php # 保存退出,運行此命令,如果出現數據庫信息就說明沒問題
phpMyAdmin
cd /home/www/ # 進入www目錄
wget -c https://files.phpmyadmin.net/phpMyAdmin/4.7.4/phpMyAdmin-4.7.4-all-languages.tar.gz # 下載phpMyAdmin到當前目錄
tar -zxf phpMyAdmin-4.7.4-all-languages.tar.gz # 解壓
mv phpMyAdmin-4.7.4-all-languages phpmyadmin # 重命名
systemctl stop firewalld # 關閉防火牆
用局域網內的機器訪問:
ip/phpmyadmin
到此所有工作都完成了。
最後更新:2017-10-11 18:03:22