LNMP环境部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP环境部署相关的知识,希望对你有一定的参考价值。

环境:CentOS 6.7 32位 mysql 5.1  php 5.4.37 nginx 1.6.2

下载地址:

CentOS http://mirrors.163.com/centos/6.7/isos/i386/CentOS-6.7-i386-minimal.iso

MySQL http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-i686-glibc23.tar.gz

PHP   http://mirrors.sohu.com/php/php-5.4.37.tar.gz

NGINX  http://mirrors.sohu.com/nginx/nginx-1.6.2.tar.gz

一MySQL安装

我们平时安装MySQL都是源码包安装的,但是由于它的编译需要很长的时间,所以建议安装二进制免编译包。

  1. 下载MySQL 到/usr/local/src/

cd /usr/local/src/
[[email protected]  src]# wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-i686-glibc23.tar.gz

2.解压

tar zxvf mysql-5.6.27-linux-glibc2.5-i686.tar.gz

3.把解压完的数据移动到/usr/local/mysql

mv mysql-5.6.27-linux-glibc2.5-i686 /usr/local/mysql

4.建立MySQL用户

useradd -s /sbin/nologin mysql

5.初始化数据库

1、cd /usr/local/mysql
2、mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql
3、./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

--user 定义数据库的所属主, --datadir 定义数据库安装到哪里,建议放到大空间的分区上,这个目录需要自行创建。这一步骤很关键,如果你看到两个 “OK” 说明执行正确,否则请仔细查看错误信息。

6.拷贝配置文件

cp support-files/my-large.cnf /etc/my.cnf

7.拷贝启动脚本文件并修改其属性

[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld 
[[email protected] mysql]# chmod 755 /etc/init.d/mysqld

8.修改启动脚本

[[email protected] mysql]# vim /etc/init.d/mysqld

需要修改的地方有 “datadir=/data/mysql” (前面初始化数据库时定义的目录)

9.把启动脚本加入系统服务项,并设定开机启动,启动MySQL

[[email protected] mysql]# chkconfig --add mysqld 
[[email protected] mysql]# chkconfig mysqld on 
[[email protected] mysql]# service mysqld start

如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err. 检查mysql是否启动的命令为:

[[email protected] mysql]# ps aux |grep mysqld

二:安装PHP

这里要先声明一下,针对Nginx的php安装和针对apache的php安装是有区别的,因为Nginx中的php是以fastcgi的方式结合nginx的,可以理解为nginx代理了php的fastcgi,而apache是把php作为自己的模块来调用的。php官方下载地址: http://www.php.net/downloads.php

  1. 下载php

[[email protected] src]# wget http://mirrors.sohu.com/php/php-5.4.37.tar.gz

2.解压php

tar zxf php-5.4.37.tar.gz

3.创建相关账户

useradd -s /sbin/nologin php-fpm

4.配置PHP编译参数

centos 6+系列环境      

安装php前.先安装些软件和库文件

yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

如出现以下错误

错误:
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
解决办法:

rpm -ivh "http://www.aminglinux.com/bbs/data/attachment/forum/month_1211/epel-release-6-7.noarch.rpm"
yum install -y  libmcrypt-devel

编译参数

[[email protected] src]# cd php-5.4.37
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc  --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-curl

该过程中,如果出现如下错误

错误信息:

configure: error: Please reinstall the libcurl distribution -
    easy.h should be in <curl-dir>/include/curl/

解决办法:

yum install -y libcurl-devel

5.编译PHP

[[email protected] php-5.4.37]# make (这个过程较长,需要好几分钟)

在这一步,你通常会遇到一些错误,没有关系,遇到错误是好事,这样可以增加你处理问题的经验

/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] 错误 1

解决办法

yum install -y libtool-ltdl-devel

6.安装php

make install

以上每一个步骤,如果没有完全执行正确,那么下一步是无法进行的,是否还记得判断执行是否正确的方法? 使用 echo $? 看结果是否为 “0” , 如果不是,就是没有执行正确。

7.修改配置文件

cp php.ini-production /usr/local/php/etc/php.ini

拷贝启动脚本

[[email protected] php-5.4.37]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[[email protected] php-5.4.37]# chmod 755 /etc/init.d/php-fpm                 给执行权限
[[email protected] php-5.4.37]# chkconfig --add php-fpm                 添加启动文件到服务列表里
[[email protected] php-5.4.37]# chkconfig php-fpm on             设置成开机自动启动(level 3中)
[[email protected] php-5.4.37]# service php-fpm start
Starting php-fpm [29-Jan-2016 22:09:59] ERROR: failed to open configuration file ‘/usr/local/php/etc/php-fpm.conf‘
: No such file or directory (2)
[29-Jan-2016 22:09:59] ERROR: failed to load configuration file ‘/usr/local/php/etc/php-fpm.conf‘
[29-Jan-2016 22:09:59] ERROR: FPM initialization failed  failed          此时启动会报错,应为配置文件还是空的
[[email protected] php-5.4.37]# cd /usr/local/php/etc/
[[email protected] etc]# ls
pear.conf  php-fpm.conf.default  php.ini        目录中php-fpm.conf.default 文件是一个配置文件的样本文件
[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf
[[email protected] etc]# ls
pear.conf  php-fpm.conf  php-fpm.conf.default  php.ini      复制或者重命名成配置文件
[[email protected] etc]# /usr/local/php/sbin/php-fpm -t         启动前用此命令检查配置文件是否有错误
[29-Jan-2016 22:15:51] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful
[[email protected] etc]# service php-fpm start     检测没错就可以启动了
Starting php-fpm  done           启动成功
[[email protected] etc]# ps aux |grep php-fpm
[[email protected] etc]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      5132/php-fpm

安装完毕

三.NGINX安装

1、下载文件 1.6.2版本

[[email protected] src]# wget http://mirrors.sohu.com/nginx/nginx-1.6.2.tar.gz

解压

[[email protected] src]# tar zxvf nginx-1.6.2.tar.gz
[[email protected] src]# cd nginx-1.6.2

2、编译参数

[[email protected] nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --with-pcre    指定安装目录,pcre 正则相关

如果报错提示 pcre 不存在  yum install -y pcre-devel  然后再重新编译参数

3、安装

[[email protected] nginx-1.6.2]# make
[[email protected] nginx-1.6.2]# make install
[[email protected] nginx-1.6.2]# cd /usr/local/nginx
[[email protected] nginx]# ls
conf  html  logs  sbin
[[email protected] nginx]# ls sbin/nginx    安装完成后生成以上4个目录,启动文件为 sbin/nginx
sbin/nginx

4、启动nginx 

[[email protected] nginx]# /usr/local/nginx/sbin/nginx     启动文件直接回车即可
[[email protected] nginx]# netstat -lnp |grep nginx     监听80端口
tcp        0      0 0.0.0.0:80            0.0.0.0:*              LISTEN      7391/nginx
[[email protected] nginx]# curl -i localhost
HTTP/1.1 200 OK                                                  可以访问了
Server: nginx/1.6.2
Date: Fri, 29 Jan 2016 14:37:27 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 29 Jan 2016 14:31:51 GMT
Connection: keep-alive
ETag: "56ab77d7-264"
Accept-Ranges: bytes

apache 是通过调用libphp5.iso 的模块来解析PHP  ,调用后在httpd.conf 文件中还是需要进行一些配置

nginx 则是将php文件交由 php-fpm 服务来解析PHP文件。

测试PHP解析

1、编辑nginx 的配置文件,将php相关的设置打开

[[email protected] nginx]# vim /usr/local/nginx/conf/nginx.conf

技术分享改成

技术分享

    

修改配置文件后可以用

 /usr/local/nginx/sbin/nginx -t  测试配置文件

/usr/local/nginx/sbin/nginx -s reload  重新加载配置文件

在网站目录文件 /usr/local/nginx/html  中写一个php文件 进行测试

[[email protected] nginx]# cd /usr/local/nginx/html
[[email protected] html]# ls
50x.html  index.html

如果还是出现502错误,那可能是/usr/local/nginx/conf/nginx.conf 配置中的 fastcgi_pass 和 /usr/local/php/etc/php-fpm.conf 中的 "listen "配置不一样导致的

该配置是用于nginx 与php 进行通信的。 要么都为 127.0.0.1:9000  要么为 /tmp/php-fcgi.sock

技术分享

技术分享


5、编写NGINX启动脚本,并加入系统服务

nginx 启动、重启比较麻烦,可以编写一个启动脚本,放在 /etc/init.d/ 下

#!/bin/bash

# chkconfig: - 30 21
# description: http service.
# Source Function Library
. /etc/init.d/functions
# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"
NGINX_CONF="/usr/local/nginx/conf/nginx.conf"
NGINX_PID="/usr/local/nginx/logs/nginx.pid"
RETVAL=0
prog="Nginx"

start() {
        echo -n $"Starting $prog: "
        mkdir -p /dev/shm/nginx_temp
        daemon $NGINX_SBIN -c $NGINX_CONF
        RETVAL=$?
        echo
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -TERM
        rm -rf /dev/shm/nginx_temp
        RETVAL=$?
        echo
        return $RETVAL
}

reload(){
        echo -n $"Reloading $prog: "
        killproc -p $NGINX_PID $NGINX_SBIN -HUP
        RETVAL=$?
        echo
        return $RETVAL
}

restart(){
        stop
        start
}

configtest(){
    $NGINX_SBIN -c $NGINX_CONF -t
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload)
        reload
        ;;
  restart)
        restart
        ;;
  configtest)
        configtest
        ;;
  *)
        echo $"Usage: $0 {start|stop|reload|restart|configtest}"
        RETVAL=1
esac

exit $RETVAL

保存后,更改权限:

chmod 755 /etc/init.d/nginx
chkconfig --add nginx

如果想开机启动,请执行:

chkconfig nginx on


本文出自 “mylinux” 博客,转载请与作者联系!

以上是关于LNMP环境部署的主要内容,如果未能解决你的问题,请参考以下文章

20200720记录:部署LNMP环境,构建LNMP平台,地址重写

LNMP部署及应用理论及实操

部署LNMP环境

部署LNMP环境

Lnmp架构部署动态网络环境

Lnmp架构部署动态网络环境