lnmp环境搭建

接着上一篇lnmp环境搭建之mysql篇,接下来介绍lnmp环境搭建的Nginx和PHP的安装和配置。

先介绍安装前的准备,因为是最小化安装,所以就连gcc等最基础命令都没有,而使用源码安装时一些基本的命令是必须的。因此这里建议使用yum安装开发工具组:


yum grouplist # 查看有没有安装Development Tools组


lnmp环境搭建


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装一下就行了:

lnmp环境搭建

表示缺少pcre开发包,执行:yum -y install pcre-devel,安装完成后再配置:./configure

lnmp环境搭建

表示缺少zlib开发包,执行:yum -y install zlib-devel,安装完成后再配置:./configure

没有错误,配置完成后执行编译命令:make

编译安装命令:make install

然后就安装完成了。

/usr/local/nginx/sbin/nginx # 尝试性地启动

ps aux|grep nginx # 查看有没有启动成功,下图表示启动成功了

lnmp环境搭建

curl 127.0.0.1 # curl本机地址,下图表示成功地安装了Nginx:

lnmp环境搭建

 

以下是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%';

lnmp环境搭建

如果之前没有安装mysql的话可以把—with-pdo-mysql这项去掉,以后还可以编译安装,这在后面提到。

如果确定没问题就可以开始配置工作了,当然配置的时候难免会有没安装的包:

lnmp环境搭建

configure: error: xml2-config not found. Please check your libxml2 installation.

yum -y install libxml2-devel

 

lnmp环境搭建

configure: error: Please reinstall the BZip2 distribution

yum -y install bzip2-devel

 

lnmp环境搭建

configure: error: Please reinstall the libcurl distribution

yum -y install libcurl-devel

 

lnmp环境搭建

configure: error: jpeglib.h not found.

yum -y install libjpeg-turbo-devel

 

lnmp环境搭建

configure: error: png.h not found.

yum -y install libpng-devel

 

lnmp环境搭建

configure: error: freetype-config not found.

yum -y install freetype-devel

 

lnmp环境搭建

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 # 编译安装

 

lnmp环境搭建

configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no

配置时加上--enable-opcache=no

 

lnmp环境搭建

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扩展。

 

lnmp环境搭建

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 # 出现版本信息就代表成功安装了

lnmp环境搭建

 

/usr/local/php/sbin/php-fpm # 尝试性地启动php-fpm进程

ps aux|grep php-fpm # ps一下,查看有没有php-fpm进程,如下表示启动成功,第一条为php-fpm的主进程:

lnmp环境搭建

 

以下是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用户组,并去掉#号:

lnmp环境搭建

新增配置如下,框框内的为新增内容,并把原来的80端口改成81或改成其他端口,以免冲突,:

lnmp环境搭建

/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配置文件

框框内表示要修改或增加的信息:

lnmp环境搭建

修改完保存退出,并重启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是否变了,不过这步一般都是多余的

详细操作及效果如下图:

lnmp环境搭建

 

如果都修改并启动成功就可以测试了:

vi /home/www/test.php # 随便echo一些信息

lnmp环境搭建

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的路径,下条复制到这个目录:

lnmp环境搭建

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"

lnmp环境搭建

lnmp环境搭建

保存退出重启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; // 关闭连接

lnmp环境搭建

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

 

到此所有工作都完成了。

上一篇:最IN的云原生架构,阿里云 Serverless 事件总线 EventBridge 重磅发布


下一篇:Type.js – 帮助你更好的控制网页字体排版