接着上一篇lnmp环境搭建之mysql篇,接下来介绍lnmp环境搭建的Nginx和PHP的安装和配置。
先介绍安装前的准备,因为是最小化安装,所以就连gcc等最基础命令都没有,而使用源码安装时一些基本的命令是必须的。因此这里建议使用yum安装开发工具组:
yum grouplist # 查看有没有安装Development Tools组
yum -y groupinstall "Development Tools" # 没有的话就可以运行此命令安装了
接下来可以先介绍Nginx的安装,
Nginx官网:http://nginx.org/
在官网随便找个最新版本的下载下来就行:
cd /usr/local/src/ # 习惯性地把源码包放在src目录下
wget -c http://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官网:http://www.php.net/
这里安装的是PHP5.6
cd /usr/local/src/ # 再次习惯性地把源码包放在src目录下
wget -c http://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 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
到此所有工作都完成了。