Lnmp搭建详解

                         作者: 浩浩哥来了

介绍linux系统下yum安装Nginx+PHP+MySQL的方法。

如需要查看图解http://down.51cto.com/data/1966865 点击查看


首先创建本地源

Cd /media/RHEL_后面是挂载镜像的版本号

Ls 会查看到Packages repodata 两个文件夹

Mkdir  /home/repo   创建一个你喜欢存放东西的路径下创建一个repo的文件夹

Cp –R –f Packages  /home/repo

Cp –R –f repodata  /home/repo  将两个文件夹的内容复制到这个文件夹中(过程可能很慢,但是正常现象毕竟这个rpm包有3G多)

Cd /etc/yum.repo/  这是默认的源存放路径

Ls 初始的默认的redhat.repo rhel-source.repo 这两个源 初写可以根据rhel-source.repo中文件信息进行修改

Cat rhel-source.repo >> haohaoge.repo将文件内容追加到我的浩浩哥这个源文件

Vim haohaoge.repo    以下是本地源文件的内容信息

[haohaoge.repo]

Name=haohao.repo

Basecurl=file:///home/repo

Enabled=1

Gpgcheck=0  

 

创建 nginx

nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息。

 

yum install gcc gcc-c++ -y

下面正式开始

--------------------------------------------------------------------------------------------

一般我们都需要先装pcre,zlib,前者为了重写rewrite,后者为了gzip压缩。

1.选定源码目录

可以是任何目录,本文选定的是cd/var/ftp/pub/ 我这是把所有源码文件放在了ftp默认的路径。

首先安装三个源码文件,pcre是提供正则表达,zlib是进行图片压缩,ssl是进行加密

 

cd /var/ftp/pub/

 

2.安装PCRE

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:

cd /var/ftp/pub/

wgetftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz

tar -zxvf pcre-8.34.tar.gz

cd pcre-8.34

./configure

Make && make install

 

3.安装zlib

http://zlib.net/zlib-1.2.8.tar.gz 下载最新的 zlib 源码包,使用下面命令下载编译和安装 zlib包:

cd /var/ftp/pub/

wget http://zlib.net/zlib-1.2.8.tar.gz

tar -zxvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure

Make && make install

 

4.安装ssl(某些vps默认没装ssl)

cd /var/ftp/pub/

wgethttp://www.openssl.org/source/openssl-1.0.1c.tar.gz

tar -zxvf openssl-1.0.1c.tar.gz

cd openssl-1.0.1c

./configure

Make && make install

-----------------------------------------------------------------------------------------------

以下可以尝试本地源进行安装

1. yum install –y pcre pcre-devel

2. yum install –y zlib zlib-devel

3. yum install –y ssl ssl-devel

---------------------------------------------------------------------------------------------

5.安装nginx

Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,下面是把 Nginx 安装到 /var/ftp/pub/ 目录下的详细步骤:

 

cd /var/ftp/pub/

wget http://nginx.org/download/nginx-1.6.2.tar.gz

tar -zxvf nginx-1.6.2.tar.gz

cd nginx-1.6.2

 

./configure--sbin-path=/usr/local/nginx/nginx \

--conf-path=/usr/local/nginx/nginx.conf \

--pid-path=/usr/local/nginx/nginx.pid \

--with-http_ssl_module \

--with-pcre=/usr/local/src/pcre-8.34 \

--with-zlib=/usr/local/src/zlib-1.2.8 \

--with-openssl=/usr/local/src/openssl-1.0.1c

 

Make && make install

-------------------------------------------------------------------------------------------

--with-pcre=/usr/src/pcre-8.34 指的是pcre-8.34 的源码路径。

--with-zlib=/usr/src/zlib-1.2.7 指的是zlib-1.2.7 的源码路径。

 

安装成功后/usr/local/nginx/目录下如下

fastcgi.conf            koi-win             nginx.conf.default

fastcgi.conf.default    logs                scgi_params

fastcgi_params          mime.types          scgi_params.default

fastcgi_params.default  mime.types.default  uwsgi_params

html                    nginx               uwsgi_params.default

koi-utf                 nginx.conf          win-utf

 

6.启动

确保系统的 80 端口没被其他程序占用,运行/usr/local/nginx/nginx 命令来启动 Nginx

netstat –anp|grep 80

在没有启动web服务器的情况下查看80端口是否启动并被其他服务占用端口

使用/usr/local/nginx/nginx启动nginx服务以后在进行查询会看到nginx 80端口已经开启

在浏览器中输入http://ip/ 出现下图,说明你这已经安装成功,打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

创建php

nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。

nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回被nginx

本文以php-fpm为例介绍如何使nginx支持PHP

 

一、编译安装php-fpm

什么是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的,具体选项含义可以

http://php.net/manual/en/configure.about.php

 

安装前准备

yum -y install libmcrypt-devel mhash-devellibxslt-devel \

libjpeg libjpeg-devel libpng libpng-develfreetype freetype-devel libxml2 libxml2-devel \

zlib zlib-devel glibc glibc-devel glib2glib2-devel bzip2 bzip2-devel \

ncurses ncurses-devel curl curl-devele2fsprogs e2fsprogs-devel \

krb5 krb5-devel libidn libidn-devel opensslopenssl-devel

 

php-fpm安装

wget http://cn2.php.net/distributions/php-5.4.7.tar.gz

tar zvxf php-5.4.7.tar.gz

cd php-5.4.7

./configure --prefix=/usr/local/php  --enable-fpm --with-mcrypt \

--enable-mbstring --disable-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

 

make && make install

 

安装后内容放在/usr/local/php目录下

以上就完成了php-fpm的安装。

下面是对php-fpm运行用户进行设置

cd /usr/local/php

cp etc/php-fpm.conf.defaultetc/php-fpm.conf

vi etc/php-fpm.conf

修改
user = www-data
group = www-data

如果www-data用户不存在,那么先添加www-data用户
groupadd www-data
useradd -g www-data www-data

 

修改nginx配置文件以支持php-fpm

nginx安装完成后,修改nginx配置文件为,nginx.conf

其中server段增加如下配置,注意标红内容配置,否则会出现No input filespecified.错误

# pass the PHP scripts to FastCGI serverlistening on 127.0.0.1:9000
#
location ~ \.php$ {
root /web/index.html;   在此处指出你的nginxphp页面的存放路径
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

 

创建测试php文件

创建php文件

/usr/local/nginx/html下创建index.php文件,输入如下内容

   echo phpinfo();

?>

 

启动服务

启动php-fpmnginx

/usr/local/php/sbin/php-fpm

#手动打补丁的启动方式/usr/local/php/sbin/php-fpm start

/usr/local/nginx/nginx

php-fpm 如何关闭 重启?

php-fpm 关闭:

killall 杀死php-fpm相关的所有进程

php-fpm 重启:

/usr/local/php/sbin/php-fpm

通过netstat查看端口ps -ef查看php-fpm进程数:

浏览器访问

访问http://你的服务器ip/index.php,皆可以见到php信息了。

 

 

http://192.168.18.112/index.php

出现一下页面,证明上述操作成功

 

 

安装php-fpm时可能遇到的错误,如果没出现跳过进行下一步:

1. php configure时出错

configure: error: XML configuration couldnot be found

apt-get install libxml2 libxml2-dev (ubuntu)

yum -y install libxml2 libxml2-develcentos)

 

2. Please reinstall the BZip2distribution

wgethttp://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz

tar -zxvf bzip2-1.0.5.tar.gz

cd bzip2-1.0.5

make

make install

 

3. php的配置文件中有一行--with-mysql=/usr
安装的时候提示:
configure: error: Cannot find MySQL header files under yes.
Note that the MySQL client library is not bundled anymore.

这是由于安装mysql时没有安装mysql头文件,或者是路径指定不正确,php找不到mysql的头文件引起的错误提示。
解决方法。
(1.) 查看你的系统有没有安装mysqlheader
find / -name mysql.h
如果有。请指定--with-mysql=/跟你的正常路径。
如果没有。请看下一步。
(2.)redhat安装
rpm -ivh MySQL-devel-4.1.12-1.i386.rpm
(3.)ubuntu安装
apt-get install libmysqlclient15-dev
(4.)最后一步php的配置选项添加--with-mysql=/usr即可!

 

4.No input file specified.

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

 

5. mcrypt.h not found. Please reinstalllibmcrypt

apt-get install libmcrypt-dev

或者

cd /usr/local/src
wgethttp://softlayer.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz
tar -zxvf libmcrypt-2.5.8.tar.gz
cd /usr/local/src/libmcrypt-2.5.8
./configure --prefix=/usr/local
make
make install

 

6. 

 

7.命令行下执行php,提示找不到命令

-bash: /usr/bin/php: No such file ordirectory

vi /etc/profile

在文件底部增加一行配置
export PATH=/usr/local/php/bin:$PATH

保存退出

source /etc/profile

 

8.Don't know how to define struct flockon this system, set --enable-opcache=no

这是安装php 5.5时的错误。
编辑/etc/ld.so.conf 加入/usr/local/lib
再执行 ldconfig即可

 

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

重新安装libxml2libxml2-devel

yum install libxml2

yum install libxml2-devel –y

 

10. error: Don't know how to definestruct flock on this system, set --enable-opcache=no

这是安装php 5.5时的错误。
解决办法如下:
编辑/etc/ld.so.conf 加入/usr/local/lib
再执行 ldconfig即可

 

11.mcrypt.h not found. Please reinstalllibmcrypt”的解决方法

使用php mcrypt 前必须先安装Libmcrypt

libmcrypt源码安装方法:

cd /usr/local/src

wgethttp://softlayer.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz

tar -zxvf libmcrypt-2.5.8.tar.gz

cd /usr/local/src/libmcrypt-2.5.8

./configure --prefix=/usr/local

make

make install

 

 

域名转换,进行如下操作

 

Vim /etc/hosts 修改主机名

127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4

::1        localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.18.112 haohaoge.com haohaoge   在这一行写入下面信息前面是你当前主机的ip 后面是是你的主机名

Vim /etc/resolv.conf

nameserver 192.168.18.112 在其中手动添加(这种只是临时的修改如果重启主机和重启网络都有可能消失)

vim/etc/sysconfig/network-scripts/ifcfg-eth0 永久添加

DNS1=192.168.18.112 DNS服务器的ip地址进行指向

Vim /etc/named.conf

options {

       listen-on port 53 { 192.168.18.112; }; 这个必须指明那个ip53端口打开

       listen-on-v6 port 53 { ::1; };

       directory      "/var/named";

       dump-file      "/var/named/data/cache_dump.db";

       statistics-file "/var/named/data/named_stats.txt";

       memstatistics-file "/var/named/data/named_mem_stats.txt";

       allow-query     { any; }; 此处也换成any

       recursion yes;

vim /etc/named.rfc1912.zones 分别在最后一行进行添加正向和反向进行解析

zone "haohaoge.com" IN {      此处为正想解析

       type master;          文件的类型是主用master标明

       file "haohaoge.com.zone";  此处为正向解析标明正向文件名称

};

zone "18.168.192.in-addr.arpa" IN{  此处为反向解析

       type master;              此处标明类型是主用master标明

       file "haohaoge.com";     反向解析的文件名称

};

cp /var/named/named.localhost/var/named/haohaoge.com.zone  复制文件并将其换成正向解析的名称

cp /var/named/named.loopback/var/named/haohaoge.com 复制文件并将其换成反向解析的文件

vim /var/named/haohaoge.com.zone

$TTL 1D

@      IN SOA  @ rname.invalid. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H)    ; minimum

       NS      @

       A       127.0.0.1

www     A      192.168.18.112    插入此行

       AAAA    ::1

vim /var/named/ haohaoge.com

$TTL 1D

@      IN SOA  @ rname.invalid. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H)    ; minimum

       NS      @

       A       127.0.0.1

       AAAA    ::1

       PTR     localhost.

112     PTR    www. haohaoge.com.         插入此行

chown root:named/var/named/haohaoge.com.zone 将新创建的文件相应的权限

chown root:named /var/named/haohaoge.com

/etc/init.d/iptables stop 将防火墙进行关闭

[root@luowenhao named]# nslookup www.haohaoge.com 现在开始自检如果自检出现问题可以对比下我下面出现的一些常见问题

Server:         192.168.18.112

Address:        192.168.18.112#53

 

Name:  www.haohaoge.com

Address: 192.168.18.112

[root@luowenhao named]# nslookup192.168.18.112 进行反向自检,如果出现报错对比我下面的问题解答

Server:         192.168.18.112

Address:        192.168.18.112#53

 

112.18.168.192.in-addr.arpa     name = www.haohaoge.com.

 

测试

如果是window设备这样添加你的DNS服务器IP

刷新下window下缓存的DNS

Linux设备进行下面操作

vim/etc/sysconfig/network-scripts/ifcfg-eth0

在其中加入DNS服务器IP

http://www.haohaoge.com/index.php

http://www.haohaoge.com/index.html