LNMP(linux+nginx+mysql+php)是常用的网站架构组合,对于网站开发以及运维人员来说,这一套环境的配置都必须要掌握,本文是站在一个运维人员的角度通过源码编译的方式来搭建这样一套环境,所针对平台为rhel6.5,软件版本分别为mysql-boost-5.7.11、php-5.6.31、nginx-1.12.1,其他平台和软件版本在配置过程可能会有细节差异,请自寻差异。
1. Nginx源码编译安装
请参考我之前的博客 Nginx安装配置
2. mysql源码编译安装
请直接参考我的上一篇博客 mysql编译安装(rhel6.5.x86_64)以及配置 ,有问题可以留言讨论。
2. php的源码编译安装
在安装php之前我们需要对php-fpm有所了解:
PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的,可以在 http://php-fpm.org/download下载得到.
PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中。必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。
新版PHP已经集成php-fpm了,不再是第三方的包了,推荐使用。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点,所以被PHP官方收录了。在./configure的时候带 –enable-fpm参数即可开启PHP-FPM
本文所编译的PHP版本中已经包含了PHP-FPM,所以就直接在配置参数中指定了
php源码包下载http://br2.php.net/get/php-5.6.31.tar.gz/from/this/mirror
然后依次执行:
[root@rhel6-vm ~]# tar -zxvf php-5.6.31.tar.gz
[root@rhel6-vm ~]# cd php-5.6.31
[root@rhel6-vm ~]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-fpm
[root@rhel6-vm ~]# make
[root@rhel6-vm ~]# make install
configure成功截图
make成功截图
make install成功截图
本人安装过程中遇到的问题:
1.configure: error: xml2-config not found. Please check your libxml2 installation.
解决方法:yum install libxml2-devel -y
2.configure: error: mcrypt.h not found. Please reinstall libmcrypt
其实也就是缺少依赖模块,但是这个模块一般的路子不好安装,需要下载源码进行编译安装
解决方法步骤:
wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz
tar -zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7/
./configure --prefix=/usr/local/libmcrypt
make && make install
关于php-fpm还需要稍微配置一下,其实也就是拷贝个配置文件而已:
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
分离的LNMP环境至此就完成安装了,接下来就是进行整合了
1. Nginx支持PHP配置
vim /usr/local/nginx/conf/nginx.conf
找到如下配置条目,做对应修改
location ~ \.php$ {##重要的配置
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html/$fastcgi_script_name;
#设置php脚本解析路径
include fastcgi_params;
}
如果想要设置index.php为默认页,可以在server配置项中修改如下内容:
location / {
root /html;
index index.php index.html index.htm;#添加php默认页
}
添加测试页面:
[root@rhel6-vm etc]# cat /usr/local/nginx/html/index.php
<h1 style="text-align:center;color:olive"> This is a test page for nginx-php !</h1>
<?php
echo phpInfo();
?>
启动或者重启相关服务使配置生效并进行测试:
/usr/local/php/sbin/php-fpm
nginx -s reload
2. PHP操作mysql
测试数据库连接并创建数据库:
<h1 style="text-align:center;font-size:1.5em;color:olive"> Test for MySQL database!</h1>
<?php
$servername = "localhost";
$username = "root";
$password = "halo";
// 创建连接
$conn = new mysqli($servername, $username, $password);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 创建数据库
$sql = "CREATE DATABASE lockeyDB";
if ($conn->query($sql) === TRUE) {
echo "数据库创建成功";
$sql1 = "SHOW DATABASES;";
$result = $conn->query($sql1);
if ($result) {
// 输出数据
var_dump($result);
} else {
echo "0 结果";
}
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
?>
基本的环境搭建到这就ok了!