您的位置:首页 > 运维架构 > Nginx

用源码轻松搭建LNMP !

2012-09-03 16:23 239 查看
LNMP=Liunx+nginx+mysql+php

1. 上传所需软件包





2.安装并配置libevent

2.1挂载光盘

[root@gjp99 ~]# mkdir /mnt/cdrom

[root@gjp99 ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

2.2 配本地yum

[root@gjp99 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

[root@gjp99 ~]# cat /etc/yum.repos.d/rhel-debuginfo.repo

[rhel-server]

name=Red Hat Enterprise Liunx server

baseurl=file:///mnt/cdrom/Server

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

2.3 查看开发环境:

[root@gjp99 ~]# yum grouplist |less

所需开发包:

Development Libraries

Development Tools

Legacy Network Server

X Software Development

2.4 安装prce-devel

[root@gjp99 ~]# yum list all |grep pcre

This system is not registered with RHN.

RHN support will be disabled.

pcre.i386 6.6-2.el5_1.7 installed

pcre-devel.i386 6.6-2.el5_1.7 rhel-server

[root@gjp99 ~]# yum install pcre-devel -y 默认输入y ,一直安装

2.5 加载的库文件并查看版本

[root@gjp99 ~]# ldconfig –v 可以看到从哪里调用的库文件 /lib /usr/lib/

[root@gjp99 ~]# ldconfig -pv |grep libev

libevent-1.1a.so.1 (libc6) => /usr/lib/libevent-1.1a.so.1 //老版本信息

2.6解压缩文件

[root@gjp99 ~]# tar -zxvf libevent-2.0.16-stable.tar.gz -C /usr/local/src/

[root@gjp99 ~]# cd /usr/local/src/

[root@gjp99 src]# ll

total 4

drwxr-xr-x 8 500 500 4096 Nov 19 2011 libevent-2.0.16-stable

[root@gjp99 src]# cd libevent-2.0.16-stable/

[root@gjp99 libevent-2.0.16-stable]# ls

2.7查看预安装目录:

[root@gjp99 libevent-2.0.16-stable]# ./configure --help |less

Installation directories:

--prefix=PREFIX install architecture-independent files in PREFIX [/usr/local]

2.8 开始安装----编译----整理

[root@gjp99 libevent-2.0.16-stable]# ./configure

[root@gjp99 libevent-2.0.16-stable]# make

[root@gjp99 libevent-2.0.16-stable]# make install

2.9 安装后的路径为非标准路径,系统不能自动进行加载

[root@gjp99 libevent-2.0.16-stable]# cd /usr/local/

[root@gjp99 local]# ll

total 72

drwxr-xr-x 2 root root 4096 Aug 8 2008 bin

drwxr-xr-x 2 root root 4096 Aug 8 2008 etc

drwxr-xr-x 2 root root 4096 Aug 8 2008 games

drwxr-xr-x 2 root root 4096 Aug 8 2008 include

drwxr-xr-x 2 root root 4096 Aug 8 2008 lib

drwxr-xr-x 2 root root 4096 Aug 8 2008 libexec

drwxr-xr-x 2 root root 4096 Aug 8 2008 sbin

drwxr-xr-x 4 root root 4096 Aug 2 21:19 share

drwxr-xr-x 3 root root 4096 Aug 3 14:09 src

[root@gjp99 local]# cd lib

[root@gjp99 lib]# pwd

/usr/local/lib //非标准路径

2.10 编辑配置文件,让系统能够顺利加载

[root@gjp99 lib]# vim /etc/ld.so.conf

[root@gjp99 lib]# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf //编辑配置文件,放到/etc/ld.so.conf.d目录下

[root@gjp99 lib]# vim /etc/ld.so.conf.d/libevent.conf //新创建的.conf文件

[root@gjp99 lib]# cat /etc/ld.so.conf.d/libevent.conf

/usr/local/lib/

3.安装并配置nginx

3.1 解压缩到指定文件夹

[root@gjp99 ~]# tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src/





3.2 安装---编译----整理

[root@gjp99 nginx-1.0.11]# ./configure --help |less //查看要配置文件

[root@gjp99 nginx-1.0.11]# groupadd -r nginx //添加组

[root@gjp99 nginx-1.0.11]# useradd -r -g nginx -s /bin/false -M nginx //建账户并添加组

[root@gjp99 nginx-1.0.11]# ./configure \ //配置文件,带\表示换行

> --prefix=/usr \

> --sbin-path=/usr/sbin/nginx \

> --conf-path=/etc/nginx/nginx.conf \

> --error-log-path=/var/log/nginx/error.log \

> --http-log-path=/var/log/nginx/access.log \

> --pid-path=/var/run/nginx/nginx.pid \

> --lock-path=/var/lock/nginx.lock \

> --user=nginx \

> --group=nginx \

> --with-http_ssl_module \

> --with-http_flv_module \

> --with-http_stub_status_module \

> --with-http_gzip_static_module \

> --http-proxy-temp-path=/var/tmp/nginx/proxy/ \

> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

> --with-pcre //最后一个没带\,自动执行

checking for OS //检测操作系统

+ Linux 2.6.18-164.el5 i686

checking for C compiler ... found //检测编译器

+ using GNU C compiler

+ gcc version: 4.1.2 20080704 (Red Hat 4.1.2-46)

checking for gcc -pipe switch ... found

[root@gjp99 nginx-1.0.11]# make //编译

[root@gjp99 nginx-1.0.11]# make insatll //整理文档

3.3 查看nginx是否安装成功

[root@gjp99 sbin]# ll |grep nginx

-rwxr-xr-x 1 root root 3910130 Aug 3 15:08 nginx

[root@gjp99 sbin]# nginx //启动服务

nginx: [emerg] mkdir() "/var/tmp/nginx/proxy/" failed (2: No such file or directory)

[root@gjp99 sbin]# mkdir -pv /var/tmp/nginx //创建相应目录

mkdir: created directory `/var/tmp/nginx'

[root@gjp99 sbin]# nginx //启动服务

[root@gjp99 sbin]# netstat -tupln |grep 80 //搜索相应端口

tcp 0 0 0.0.0.0:870 0.0.0.0:* LISTEN 2808/rpc.statd

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 27630/nginx: master

udp 0 0 0.0.0.0:864 0.0.0.0:* 2808/rpc.statd

udp 0 0 0.0.0.0:867 0.0.0.0:* 2808/rpc.statd





3.4 查看默认网页文件所放之处

[root@gjp99 usr]# ll -d html //路径:/usr/html

drwxr-xr-x 2 root root 4096 Aug 3 15:08 html

[root@gjp99 usr]# cd html

[root@gjp99 html]# ll

total 8

-rw-r--r-- 1 root root 383 Aug 3 15:08 50x.html

-rw-r--r-- 1 root root 151 Aug 3 15:08 index.html

[root@gjp99 html]# cat index.html

<html>

<head>

<title>Welcome to nginx!</title>

</head>

<body bgcolor="white" text="black">

<center><h1>Welcome to nginx!</h1></center>

</body>

</html>

[root@gjp99 html]# pwd

/usr/html

4 . 常规应用:

4.1 物理目录:

[root@gjp99 html]# mkdir gjp

[root@gjp99 html]# cd gjp

[root@gjp99 gjp]# echo "guo jiping " >>index.html

[root@gjp99 ~]# vim /etc/nginx/nginx.conf

43 location / { //如果是location=/的话,只能访问主目录下的网页

44 root html;

45 index index.html index.htm;

46 }





4.2 虚拟目录:

[root@gjp99 ~]# mkdir /guo

[root@gjp99 ~]# cd /guo

[root@gjp99 guo]# echo "guo jiping tec" >index.html

[root@gjp99 guo]# vim /etc/nginx/nginx.conf





[root@gjp99 guo]# pkill -1 nginx //无需打断用户的请求,重启





4.3 基于ip的虚拟主机:

nginx主机配置:

[root@gjp99 guo]# mkdir /mkt

[root@gjp99 guo]# cd /mkt

[root@gjp99 mkt]# echo "market center ">index.html

[root@gjp99 mkt]# ifconfig eth0:0 192.168.20.101

[root@gjp99 mkt]# vim /etc/nginx/nginx.conf

35 server {

36 listen 192.168.20.100:80;

37 server_name tec.gjp.com;

38 access_log /var/log/tec.access.log;

39 error_log /var/log/tec.error.log;

40 root /guo;

41 index index.html index.htm;

42 #charset koi8-r;

中间省略……

82 }

83 server {

84 listen 192.168.20.101:80;

85 server_name mkt.gjp.com;

86 access_log /var/log/mkt.access.log;

87 error_log /var/log/mkt.error.log;

88 root /mkt;

89 index index.html index.htm;

}

[root@gjp99 mkt]# pkill -1 nginx //重启服务

[root@gjp99 mkt]# pkill nginx

[root@gjp99 mkt]# ps aux |grep nginx

root 27799 0.0 0.0 3740 524 pts/1 S+ 16:19 0:00 tail -f /var/log/nginx/access.log

root 27806 0.0 0.0 3920 688 pts/0 R+ 16:22 0:00 grep nginx

[root@gjp99 mkt]# nginx

测试机配置:

C:\Windows\System32\drivers\etc













4.4 基于主机头的配置:

[root@gjp99 mkt]#

nginx主机配置:

vim /etc/nginx/nginx.conf

35 server {

36 listen 192.168.20.100:80;

37 server_name tec.gjp.com;

38 access_log /var/log/tec.access.log;

39 error_log /var/log/tec.error.log;

40 root /guo;

41 index index.html index.htm;

42 #charset koi8-r;

中间省略……

82 }

83 server {

84 listen 192.168.20.100:80;

85 server_name mkt.gjp.com;

86 access_log /var/log/mkt.access.log;

87 error_log /var/log/mkt.error.log;

88 root /mkt;

89 index index.html index.htm;

}

[root@gjp99 mkt]# pkill -1 nginx

测试机:hosts文件修改

192.168.20.100 tec.gjp.com

192.168.20.100 mkt.gjp.com

清除缓存:













5. mysql的安装

5.1 上传mysql 及php





5.2 解压mysql

由于mysql 为绿色软件,不是源代码,故拆解位置在/usr/local/下,若是源代码则应拆解在/usr/local/src下。

[root@gjp99 ~]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local

[root@gjp99 ~]# cd /usr/local

[root@gjp99 local]# cd mysql-5.5.15-linux2.6-i686/

[root@gjp99 mysql-5.5.15-linux2.6-i686]# ls

bin data include lib mysql-test scripts sql-bench

COPYING docs INSTALL-BINARY man README share support-files

5.3 查看安装文件并配置

vim INSTALL-BINARY

按照里面的安装步骤来详细配置mysql

groupadd mysql //创建组mysql

useradd -r -g mysql mysql // 创建系统帐号mysql,加入mysql组

cd /usr/local 进入/usr/local

ln -s mysql-5.5.15-linux2.6-i686 mysql //为该目录设置软连接,方便使用

cd mysql

chown -R mysql . //更改所有文件的所有者为mysql

chgrp -R mysql . // 更改所有文件的所属组为mysql

scripts/mysql_install_db --user=mysql //以mysql的身份执行scripts/mysql_install_db脚本

chown -R root . //再将所有文件的所有者改为root

chown -R mysql data //其中要将data目录及其子文件的所有者改为mysql

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

bin/mysqld_safe --user=mysql & //启动mysql 数据库,3306 端口

如果想使用service mysqld restart ,来启动数据库,则需要在/etc/init.d下要有名为mysqld 的脚本,执行下面指令,创建/etc/init.d/mysqld脚本

cp support-files/mysql.server /etc/init.d/mysqld

[root@gjp99 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@gjp99 mysql]# netstat -tupln |grep mysql

tcp 0 0 :::3306 :::* LISTEN 1922/mysqld

停止服务,再重启,测试:

[root@gjp99 mysql]# service mysqld stop

Shutting down MySQL. [ OK ]

[root@gjp99 mysql]# netstat -tupln |grep mysql

[root@gjp99 mysql]# service mysqld start

Starting MySQL.. [ OK ]

[root@gjp99 mysql]# netstat -tupln |grep mysql

tcp 0 0 :::3306 :::* LISTEN 2279/mysqld

5.4 设置mysqld开机自启动

[root@gjp99 mysql]# chkconfig --list |grep mysql //没有设置

查看/etc/init.d/mysqld文件,chkconfig: 2345 64 36 : 2345 表示可设置在2345 级别下开机启动或关闭;64 表示s64mysqld ,开机启动顺序,可在/etc/rc.d/rc3.d下查看;36 表示K36mysqld ,关机时关闭服务顺序





[root@gjp99 mysql]# chkconfig --add mysqld

[root@gjp99 mysql]# chkconfig --list |grep mysql

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@gjp99 mysql]# chkconfig mysqld on

[root@gjp99 mysql]# ll /etc/rc.d/rc3.d/ |grep mysql

lrwxrwxrwx 1 root root 16 Sep 3 18:12 S64mysqld -> ../init.d/mysqld

[root@gjp99 mysql]# ll /etc/rc.d/rc1.d/ |grep mysql

lrwxrwxrwx 1 root root 16 Sep 3 18:12 K36mysqld -> ../init.d/mysqld

5.5 调整库文件路径:

系统启动时,自动调用库文件,位置有/lib /usr/lib ,但是现在mysql的数据库文件位置在/usr/local/mysql/lib,编辑/etc/ld.so.conf文件,该文件指明包含ld.so.conf.d/下的所有.conf文件。在/etc/ld.so.conf.d/ 下新建mysql.conf文件,指明mysqld 的lib 文件的位置

[root@gjp99 mysql]# cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

[root@gjp99 mysql]# vim /etc/ld.so.conf.d/mysql.conf

[root@gjp99 mysql]# cat /etc/ld.so.conf.d/mysql.conf

/usr/local/mysql/lib

5.6 查看是否加载到mysql 的lib 库文件

[root@gjp99 mysql]# ldconfig –v

[root@gjp99 mysql]# ldconfig -pv |grep mysql

libtcmalloc_minimal.so.0 (libc6) => /usr/local/mysql/lib/libtcmalloc_minimal.so.0

libmysqlclient.so.18 (libc6) => /usr/local/mysql/lib/libmysqlclient.so.18

libmysqlclient.so (libc6) => /usr/local/mysql/lib/libmysqlclient.so

系统的头文件位置有:/usr/include/ /usr/local/include/ ,但是mysql的头文件位置在/usr/local/mysql/include,为非标准路径,系统无法调用,应该指明位置,使系统能够找到该位置。可在 /usr/include/ 或者 /usr/local/include/下 做符号连接

[root@gjp99 mysql]# cd /usr/include

[root@gjp99 include]# ln -s /usr/local/mysql/include/ mysql

[root@gjp99 include]# ll mysql/

total 492

-rw-r--r-- 1 root mysql 4209 Jul 14 2011 decimal.h

-rw-r--r-- 1 root mysql 4087 Jul 14 2011 errmsg.h

-rw-r--r-- 1 root mysql 7078 Jul 14 2011 keycache.h

-rw-r--r-- 1 root mysql 27155 Jul 14 2011 m_ctype.h

-rw-r--r-- 1 root mysql 9733 Jul 14 2011 m_string.h

-rw-r--r-- 1 root mysql 1924 Jul 14 2011 my_alloc.h

-rw-r--r-- 1 root mysql 2101 Jul 14 2011 my_attribute.h

-rw-r--r-- 1 root mysql 4236 Jul 14 2011 my_compiler.h

-rw-r--r-- 1 root mysql 15869 Jul 14 2011 my_config.h

-rw-r--r-- 1 root mysql 7950 Jul 14 2011 my_dbug.h

-rw-r--r-- 1 root mysql 3573 Jul 14 2011 my_dir.h

-rw-r--r-- 1 root mysql 5453 Jul 14 2011 my_getopt.h

-rw-r--r-- 1 root mysql 46803 Jul 14 2011 my_global.h

-rw-r--r-- 1 root mysql 1506 Jul 14 2011 my_list.h

-rw-r--r-- 1 root mysql 2002 Jul 14 2011 my_net.h

-rw-r--r-- 1 root mysql 31701 Jul 14 2011 my_pthread.h

drwxr-xr-x 3 root mysql 4096 Sep 3 17:50 mysql

6.php的源码安装

6.1 解压缩php文件

[root@gjp99 ~]# tar -jxvf php-5.3.7.tar.bz2 -C /usr/local/src

[root@gjp99 ~]# cd /usr/local/src/

[root@gjp99 src]# ll

total 12

drwxr-xr-x 10 500 500 4096 Aug 3 14:23 libevent-2.0.16-stable

drwxr-xr-x 9 1001 1001 4096 Aug 3 14:40 nginx-1.0.11

drwxr-xr-x 13 1000 1000 4096 Aug 17 2011 php-5.3.7

[root@gjp99 src]# cd php-5.3.7/

[root@gjp99 php-5.3.7]# ls

6.2 检测----编译----整理

6.2.1 检测预编译环境:

./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --enable-fpm --with-libevent-dir=/usr/local --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-iconv-dir=/usr/local





6.2.2 编译make ,产生四类文件:头文件、库文件、可执行文件、说明文件

directorytreeiterator.inc

directorygraphiterator.inc

invertedregexiterator.inc

pharcommand.inc

clicommand.inc

phar.inc

Build complete.

Don't forget to run 'make test'.

6.2.3 make install //把对应文件放到相应目录

[root@gjp99 php-5.3.7]# make install

Installing PHP SAPI module: fpm

Installing PHP CLI binary: /usr/local/php/bin/

Installing PHP CLI man page: /usr/local/php/man/man1/

Installing PHP FPM binary: /usr/local/php/sbin/

Installing PHP FPM config: /usr/local/php/etc/

6.3 拷贝配置文件.

[root@gjp99 php-5.3.7]# ll php*

-rw-r--r-- 1 root root 1489 Sep 3 18:28 php5.spec

-rw-r--r-- 1 1000 1000 1489 Sep 26 2007 php5.spec.in

-rw-r--r-- 1 1000 1000 2523 Mar 7 2006 php.gif

-rw-r--r-- 1 1000 1000 68898 Feb 9 2011 php.ini-development

-rw-r--r-- 1 1000 1000 69128 Feb 9 2011 php.ini-production

[root@gjp99 php-5.3.7]# cp php.ini-production /usr/local/php/etc/php.ini

[root@gjp99 php-5.3.7]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[root@gjp99 php-5.3.7]# vim /usr/local/php/etc/php-fpm.conf

30 error_log = log/php-fpm.log

161 pm.max_children = 50

166 pm.start_servers = 20

171 pm.min_spare_servers = 5

176 pm.max_spare_servers = 3

182 pm.max_requests = 500

[root@gjp99 php-5.3.7]# /usr/local/php/sbin/php-fpm &

[1] 30351

[root@gjp99 php-5.3.7]# echo "/usr/local/php/sbin/php-fpm &">> /etc/rc.local

[root@gjp99 php-5.3.7]# vim /etc/nginx/fastcgi.conf





[root@gjp99 php-5.3.7]# cd /etc/nginx/

[root@gjp99 nginx]# ls

fastcgi.conf fastcgi_params.default mime.types nginx.conf.default uwsgi_params

fastcgi.conf.default koi-utf mime.types.default scgi_params uwsgi_params.default

fastcgi_params koi-win nginx.conf scgi_params.default win-utf

[root@gjp99 nginx]# cat fastcgi.conf > fastcgi_params

6.4 修改nginx的主配置文件

[root@gjp99 nginx]# vim /etc/nginx/nginx.conf









[root@gjp99 nginx]# pkill nginx //杀掉nginx进程

[root@gjp99 nginx]# nginx //启动nginx服务

nginx: [emerg] mkdir() "/var/tmp/nginx/proxy/" failed (2: No such file or directory)

[root@gjp99 nginx]# mkdir /var/tmp/nginx

6.5 测试:

[root@gjp99 nginx]# cd /mkt

[root@gjp99 mkt]# ll

total 4

-rw-r--r-- 1 root root 21 Sep 3 16:55 index.php

[root@gjp99 mkt]# cat index.php

<?php

phpinfo();

?>

[root@gjp99 mkt]# nginx







nginx 掉用php成功!

[root@gjp99 mkt]# vim index.php









[root@gjp99 mkt]# service mysqld stop

Shutting down MySQL.. [ OK ]



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息