LNMP环境搭建(CentOS7+Nginx1.10.1+MySQL5.6.31+PHP5.6.22)

Posted iswill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP环境搭建(CentOS7+Nginx1.10.1+MySQL5.6.31+PHP5.6.22)相关的知识,希望对你有一定的参考价值。

零、准备工作

安装wget:yum install wget -y

安装gcc及g++:yum install gcc gcc-c++ -y

后续所有源代码都下载到/usr/local/src目录

防火墙更改配置及关闭selinux见另一篇文章《LAMP环境搭建》

一、安装nginx

Nginx依赖pcre(重写rewrite)、zlib(网页gzip压缩)及openssl(加密传输)。

1、安装pcre

[root]wget http://pilotfiber.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz

[root]tar -xvzf pcre-8.38.tar.gz

[root]cd pcre-8.38

[root] ./configure --prefix=/usr/local/pcre

[root]make && make install

2、安装zlib

[root]wget http://zlib.net/zlib-1.2.8.tar.gz

[root]tar -xvzf zlib-1.2.8.tar.gz

[root]cd zlib-1.2.8

[root] ./configure --prefix=/usr/local/zlib

[root]make && make install

3、安装openssl

[root]wget http://www.openssl.org/source/openssl-1.0.2h.tar.gz

[root]tar -xvzf openssl-1.0.2h.tar.gz

[root]cd openssl-1.0.2h

[root] ./config --prefix=/usr/local/openssl

[root]make && make install

4、安装Nginx

为了安全起见,创建一个nginx账号专门用于运行nginx,当然为了简便直接用root账号运行的话(不推荐),就不需要创建nginx账号及将nginx相关文件开放权限给nginx账号。

[root]groupadd nginx

[root]useradd -g nginx nginx -s /bin/false#该账号只用于运行nginx及相关软件,不能登录

[root]wget http://nginx.org/download/nginx-1.10.1.tar.gz?

[root]tar -xvzf nginx-1.10.1.tar.gz?

[root]cd nginx-1.10.1

[root] ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.38 --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.2h

[root]make && make install

提示:./configure --help可以查看编译选项

注意这里

http_image_filter_module是nginx提供的集成图片处理模块,需要gd-devel的支持,错误信息如下:

./configure: error: the HTTP image filter module requires the GD library.
You can either do not enable the module or install the libraries.
  • 1
  • 2

解决方法:

yum -y install gd-devel

5、配置Nginx

1)修改配置文件

[root]vi /usr/local/nginx/conf/nginx.conf

若需要,则将http -> server -> server_name改为服务器的外网ip地址,或你的网站域名?

2)配置开机自启动

方法一:在/etc/rc.d/rc.local文件最后增加一行脚本

[root]/usr/local/nginx/sbin/nginx

方法二:将Nginx加入服务,新增/etc/init.d/nginx脚本,内容请见nginx脚本,然后设置开机自启动:

[root]chmod +x /etc/init.d/nginx

[root]chkconfig nginx on #设置开启自启动后会自动将其加入服务

3)启动Nginx

若Nginx已加入服务,则用service命令启动服务

[root]service nginx start

否则运行Nginx程序

[root]/usr/local/nginx/sbin/nginx

二、安装mysql

1、安装ncurses-devel

[root]yum install ncurses-devel -y

 

2、安装cmake

[root]wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz

 

[root]tar -xvzf cmake-3.5.2.tar.gz

[root]cd cmake-3.5.2

[root] ./configure --prefix=/usr/local/cmake

[root]make && make install

[root]export PATH=$PATH:/usr/local/cmake/bin#临时加入PATH环境变量

3、安装mysql

同nginx一样,创建一个mysql账号专门用于运行mysql

[root]groupadd mysql

[root]useradd -g mysql mysql -s /sbin/false

[root]wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.31.tar.gz

[root]tar -xvzf mysql-5.6.31.tar.gz

[root]cd mysql-5.6.31

[root]cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \#mysql安装到的路径

-DSYSCONFDIR=/etc \  #mysql配置文件(my.cnf)路径

-DMYSQL_DATADIR=/usr/local/mysql/data \ #data目录路径

-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \  #sock存放路径

-DDEFAULT_CHARSET=utf8 \  #默认字符集

-DDEFAULT_COLLATION=utf8_general_ci#默认字符集校验

[root]make && make install

4、配置mysql

以下所有操作都在/usr/local/mysql路径下执行。

1)初始化数据库

[root]scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

2)拷贝配置文件

[root]cp support-files/my-default.cnf /etc/my.cnf

3)启动mysql

[root]cp support-files/mysql.server /etc/init.d/mysqld#服务名也可以取做mysql,随你

[root]chkconfig mysqld on

[root]service mysqld start

4)修改mysql的root账号密码

[root]bin/mysql_secure_installation

然后设置密码,并进行一些配置

5)登录mysql

[root]mysql -uroot -p

然后输入密码登录。若运气不好的话(比如我),输入密码登录,里面关闭,并输出segment fault提示,那么就需要修改源代码并重新编译安装了。打开/usr/local/src/php.5.6.31/cmd-line-utils/libedit/terminal.c,在terminal_set函数中:

a、注释char buf[TC_BUFSIZE];一行

b、将area = buf改成area = NULL

然后重新编译安装。

三、安装php

本文最小安装php。

1、安装php

[root]wget http://cn2.php.net/distributions/php-5.6.22.tar.bz2

[root]tar -xvjf php-5.6.22.tar.bz2

[root]cd php-5.6.22

[root] ./configure --prefix=/usr/local/php \ #php安装路径

--with-libdir=lib64 \ #64位操作系统需要

--enable-mysqlnd \ 

--with-mysqli=mysqlnd \ 

--with-pdo-mysql=mysqlnd \ 

--with-mysql_sock=/var/lib/mysql/mysql.sock \

--enable-fpm \ 

--enable-opcache \ 

--with-mhash  \ 

--with-ldap#本人的项目用到,需yum install openldap-devel

[root]make && make install

2、配置php

以下命令都是在/usr/local/php路径下执行。

1)查看php.ini文件存放路径

[root]bin/php --ini

Configuration File (php.ini) Path: /usr/local/php/lib

[root]cp /usr/local/src/php-5.6.22/php.ini-production lib/php.ini

2)配置php.ini

 

a.关闭在http头中显示php版本信息?

?     expose_php = Off

b. 设置时区

     date.timezone = PRC?

3、配置php-fpm

以下命令都是在/usr/local/php路径下执行。

[root]cp etc/php-fpm.conf.default etc/php-fpm.conf

1)去掉25行 ;pid = run/php-fpm.pid  前面的分号,使之生效

2)第148行改为 user = nginx 设置php-fpm运行账号为nginx

3)第149行改为 group = nginx #设置php-fpm运行组为nginx

4)可选。php-fpm默认采用tcp通信,若需要采用unix socket通讯,则配置如下

 

listen = /dev/shm/php-fpm.sock?

listen.owner = nginx?

listen.group = nginx

4、启动php-fpm

[root]cp /usr/local/src/php-5.6.22/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

[root]chmod +x /etc/init.d/php-fpm

[root]chkconfig php-fpm on

[root]service php-fpm start

5、配置nginx支持php

[root]vi /usr/local/nginx/conf/nginx.conf

1)顶部行改成 user nginx nginx;

2)将

 

location ?/ {

      root    html;

      index index.html index.htm

}?

改为:

?location ?/ {

      root    /www;

      index index.php index.html index.htm

}??

注:需要将web根目录/www开放权限给nginx账号:chown nginx:nginx /www

3)取消location ~ \.php$ { 一段的注释,如下:

  location ~ \.php$ {
            root           /www;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

这是php-fpm采用tcp通信时的配置,若其采用unix socket通信,则fastcgi_pass一行需该为:

fastcgi_pass   unix:/dev/shm/php-fpm.sock;

6、配置php支持mysql

其实到这一步,php已经支持mysqli及pdo_mysql了(由于mysql_connect等函数已经废弃,所以在编译php时没有--with-mysql)。但是用mysqli_connect连接本机时,只能使用‘127.0.0.1‘,而不能使用‘localhost‘来连接,原因是:mysql通过tcp连接到127.0.0.1,通过unix socket连接到localhost。只要在php.ini设置mysqli及pdo_mysql的default_socket为/var/lib/mysql/mysql.sock即可。貌似在编译php时带上--with-mysql-sock=/var/lib/mysql/mysql.sock选项就不用配置php.ini中的default_socket了。

7、重启php-fpm及nginx

[root]service php-fpm restart

[root]service nginx restart

8、测试nginx对php的支持

新建/www/info.php文件,内容如下:

<?php phpinfo(); ?>

在浏览器中查看:localhost/info.php

9、测试对mysqli及pdo_mysql的支持

新建/www/mysql.php文件,测试mysqli时内容为:

<?php var_dump(mysqli_connect(‘localhost‘, ‘root‘, ‘111111‘)); ?>

测试pdo_mysql时内容为:

<?php var_dump(new PDO(‘mysql:host=localhost;db=mysql‘, ‘root‘, ‘111111‘)); ?>

上面的root和111111为mysql账号和密码。

分别在浏览器中查看:localhost/mysql.php,正常时,显示内容分别含”object(mysqli)“和”object(PDO)“。







以上是关于LNMP环境搭建(CentOS7+Nginx1.10.1+MySQL5.6.31+PHP5.6.22)的主要内容,如果未能解决你的问题,请参考以下文章

centos怎么搭建lnmp环境

CentOS7——搭建LNMP环境(WordPress案例)

centOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装

Docker Compose一键搭建lnmp开发环境

centos7搭建LNMP环境

centos7 简单搭建lnmp环境