LNMP架设 (备忘录)

自学了一段时间linux,在基础命令了解的前提下。搭建了一下网站平台,也总结了一些小经验,为了以后不能忘记,现在自己做个备忘。希望以后能用到。

基本步骤:

一,安装软件前系统准备:

1,打开需要使用的端口。

2,关闭SELinux。

二,安装nginx:

三,安装mysql:

四,安装php:

五,nginx+php-fastcgi配置

 

一、安装软件前系统准备:

操作系统:centos5.6 

1、打开需要使用的80、3306端口:

大家都知道,80端口是我们网站web访问,也就是nginx的默认端口。3306端口是mysql数据库默认端口。在软件安装完并启动的时候30和3306端口默认是会启动的,下面的操作只是作为一个例子,主要是想更清楚的呈现出其中的原理。

[root@localhost~]#vi /etc/sysconfig/iptables    #我们可以看见,系统端口都有哪些是打开的。

QQ截图20120802140435

可以看见,目前80和3306端口是没有打开的,我们来添加进去。记得,一定要在22端口下写入 80 和3306端口,因为如果在字面的最后开始写,等保存后重新启动防火墙时会报错哦。那这个22端口是什么呢?其实它就是ssh的默认端口。

添加条目:-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

              -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

我喜欢按照规范填写,当然上边的这2条也可以。

QQ截图20120802142322

重启防火墙:/etc/init.d/iptables restart      或者  service iptables restart   都可以。

[root@localhost ~]# service iptables restart
清除防火墙规则:                                                       [确定]
把 chains 设置为 ACCEPT 策略:filter                       [确定]
正在卸载 Iiptables 模块:                                          [确定]
应用 iptables 防火墙规则:                                        [确定]
载入额外 iptables 模块:ip_conntrack_netbios_ns     [确定]
[root@localhost ~]#

2、关闭SELinux:

打开selinux配置文件

[root@localhost ~]# vi  /etc/selinux/config  (由于版面问题,我尽量不截图了。)

 #SELINUX=enforcing          #注释掉

#SELINUXTYPE=targeted     #注释掉
   SELINUX=disabled             #增加(关闭selinux)
   :wq  保存,关闭
   shutdown –r  now #重启系统

当然,如果你在装系统时关闭了selinux,这里也不用设置。

到这里,系统准备完毕。下面我们来安装nginx+mysql+php;

二、安装nginx。

在安装nginx前,需要确保安装了 gcc ;c++;openssl-devle;pcre-devel和zlib-devel函数库,我们来使用yum 进行安装。

[root@localhost ~]# yum install gcc-c++ openssl-devel pcre-devel zlib-devel

提示选择“Y”,进行安装。将这些函数库安装好后,我们来下载nginx 官网地址是:http://sysoev.ru/ningx/  Nginx 有三个版本,稳定版、开发版和历史稳定版。通常建议使用稳定版。这里我使用nginx-0.8.55.

下载完成后,我们来进行解压安装,一般情况下,我喜欢将文件在/usr/local/src/目录下解压,并安装在/usr/local/*这个目录下。当然这是为了以后好管理才规范的,就像FHS。

[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# tar -zxvf /root/nginx-0.8.55.tar.gz

#解压后进入目录内进行编译安装。

[root@localhost nginx-0.8.55]#./confiure  --with-http_stub_status_module --prefix=/usr/local/nginx    (如果记不清相应的模块,也可以默认编译如:#./configure 一般默认的安装路径同样是#/usr/local/nginx)

[root@localhost nginx-0.8.55]#make ;make install

make完成后,我们来进入nginx的安装目录下看一看。

[root@localhost local]# cd nginx/
[root@localhost nginx]# ll
总计 16
drwxr-xr-x 2 root root 4096 08-01 19:47 conf
drwxr-xr-x 2 root root 4096 08-01 19:47 html
drwxr-xr-x 2 root root 4096 08-01 19:47 logs
drwxr-xr-x 2 root root 4096 08-01 19:47 sbin
#conf目录为nginx的配置文件目录,nginx的配置文件就在这个目录下。

#html默认网页目录,里面会有一个index.html文件。

#logs 为nginx错误日志文件目录。

#sbin 启动目录。

安装完成后,我们要对nginx进行启动,(关闭和平滑重启)

#/usr/local/nginx/sbin/nginx     (启动)

#/usr/local/nginx/sbin/nginx –s reload (重新启动)

#ps –ef |grep nginx #这个命令是查询nginx的进程命令,调出进程后,将它KILL ,就关闭了nginx 。

[root@localhost ~]# ps -ef |grep nginx
root     16136     1  0 20:01 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody  16137 16136  0 20:01 ?        00:00:00 nginx: worker process      root        16140  3554  0 20:01 pts/1    00:00:00 grep nginx

#我们能够看到PID 也就是16136和16137这2个进程ID ,其中16136的使用者是root  而16137才是nginx的工作进程。

[root@localhost ~]# kill 16137(或者16136)
[root@localhost ~]# ps -ef |grep nginx
root     16147  3554  0 20:04 pts/1    00:00:00 grep nginx

#看见了吧。这样nginx就关闭了。

 

[root@localhost ~]# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

#上面这条命令时进行nginx的平滑重启,HUP参数是表示重新加载配置,也就是关闭原有进程,并开启新的工作进程,而且不会中断用户的访问请求。如下所示:

[root@localhost ~]# /usr/local/nginx/sbin/nginx
[root@localhost ~]# ps -ef|grep nginx
root     16198     1  0 20:10 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   16199 16198  0 20:10 ?        00:00:00 nginx: worker process      root     16201  3554  0 20:10 pts/1    00:00:00 grep nginx
[root@localhost ~]# kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
[root@localhost ~]# ps -ef |grep nginx
root     16198     1  0 20:10 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody  16203 16198  0 20:11 ?        00:00:00 nginx: worker process      root     16206  3554  0 20:11 pts/1    00:00:00 grep nginx

#标有下滑线部分,进程号是不是不一样了… 。

好了,当我们启动nginx后,打开浏览器测试一下,输入地址 http://192.168.209.133   回车 其中(IP地址部分为server 网络地址)

QQ截图20120802154705

安装完成后,最好重启一下。

三、mysql安装:

#创建mysql用户和用户组。

[root@localhost ~]# groupadd mysql

[root@localhost ~]# useradd –g mysql mysql

#mysql 我选择使用yum安装。

[root@localhost ~]# yum install mysql mysql-server

#安装完成后,启动mysql。(yum安装的,所以默认路径固定。)

[root@localhost ~]# /etc/init.d/mysqld start   #启动MySQL

[root@localhost ~]# cp /usr/share/mysql/my-medium.cnf   /etc/my.cnf  #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可,

#在/usr/share/mysql目录中,配制文件有几个,比如my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的流量的网站和不同配制的服务器环境,当然需要有不同的配制文件了。
一般的情况下,my-medium.cnf这个配制文件就能满足我们的大多需要;

#MySQL数据库目录是:/var/lib/mysql

[root@localhost ~]#chkconfig php-fpm on #设置开机启动。

#mysql安装完成。

四、php安装:

我们使用源码包,安装php。

安装前确认安装了 gcc;gcc-c++;libxml2;libxml2-devel;autoconf;libjpeg;libjpeg-devel;libpng;libpng-devel;freetype;freetype-devel;zlib;zlib-devel;glibc;glibc-devel;glib2;glib2-devel 函数库,当然也可以在安装php过程中,根据错误提示信息安装对应的函数库。

下载php:http://www.php.net  这里下载的是php-5.4.0版本,这个版本已经集成了php-fpm包,而php-5.2版本的没有集成,所以还要下载php-fpm源码包,整合后进行编译安装。至于php-fpm它是一个第三方的fastcgi进程管理器,因为nginx只能响应静态请求,无法响应动态请求,只能借助第三方fastcgi进程管理器来响应动态的请求。

[root@localhost src]#tar –zxvf /root/php-5.4.0.tar.gz  #解压

[root@localhost php-5.4.0]#./configure --prefix=/usr/local/php5.4 --enable-fastcgi --enable-fpm # --enable-fastcgi 是启用对php的fastcgi支持;--enable-fpm 是激活对fastcgi模式的fpm支持。当然也可以使用#./configure --prefix=/usr/local/php5.4  。

[root@localhost php-5.4.0]#make;make isntall

[root@localhost php-5.4.0]# cp php.ini-development 

/usr/local/php5.4/etc/php.ini

#php.ini是PHP的全局配置文件,可以根据需求的不同对php.ini进行配置。

#安装完成后我们进入到安装目录下,对php-fpm进行配置。

[root@localhost php5.4]# cd etc
[root@localhost etc]# ll
总计 100
-rw-r--r-- 1 root root  1182 08-01 21:24 pear.conf
-rw-r--r-- 1 root root 20854 08-01 21:23 php-fpm.conf.default
-rw-r--r-- 1 root root 66849 08-01 21:24 php.ini

#php-fpm.conf.default就是php-fpm的配置文件,我们先来备份一下,如果更改错了,还可以还原。

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

 

我们用vi打开这个文件。

[root@localhost etc]# vi php-fpm.conf.default

#大概是132-133行,我们要将usr  group  默认的用户和组前面的注释去掉。像这样。

; Unix user/group of processes

; Note: The user is mandatory. If the group is not set, the default user's group

;       will be used.

user = nobody

group = nobody

#现在我们来启动php5.4.0

[root@localhost ~]# /usr/local/php5.4/sbin/php-fpm --fpm-config /usr/local/php5.4/etc/php-fpm.conf.default  #启动php,无报错的话,恭喜你,php-fpm已经启动了。这个启动命令有点长,哎,可惜我现在还没有找到短的,呵呵。以后会有好的方法启动的。

~~简单写一下php-5.2.*版本的安装和配置,其实大同小异,响应步骤如下:

下载php-fpm源码包后,

[root@localhost ~]# gzip –cd php-5.2.13-fpm-0.5.13.diff.gz |path –d php-5.2.13 -p1#后面为数字1,该命令需要在解压php-5.2.13.tar.gz后输入执行。其操作就是个打补丁的过程。

[root@localhost php-5.2.13]#make;make install

[root@localhost php-5.2.13]# cp php.ini-dist /usr/local/php/lib/php.ini #同理,拷贝配置文件。

[root@localhost ~]#/usr/local/php/bin/php-cgi  --fpm

[root@localhost ~]#/usr/local/php/sbin/php-fpm start #这2条同为启动命令,如下:

#stop 强制终止php的fastcgi进程。

#start 启动php的fastcgi进程。

#quit 平滑终止php的fastcgi进程。

#restart 重启php的fastcgi进程。

#reload 重新加载php的php.ini。

#logrotate 重启log文件。

其余其他步骤与5.4版本操作相同。

 

五,nginx+php-fastcgi配置

这是最后一个步骤,也是重点步骤。是php-fpm对nginx动态请求的一个解析。也是本次试验成功与否的关键。

进入nginx配置目录,编写配置文本。

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf

进入配置文本中,需要去掉响应的选项注释。由于文档比较长,所以我将不需要的注释去掉,相应的配置会有文字说明。

[root@localhost conf]# cat nginx.conf |grep -v "#"

user  nobody; #该用户名记得一定要和php-fpm中的用户名一样。
worker_processes  1;  #工作进程,一般你的电脑cpu是几核就填几。

error_log  logs/error.log; #错误日志目录。

pid        logs/nginx.pid;  #pid进程号码显示的文件。

events {       #设定nginx的工作模式及连接数上限。
    worker_connections  1024;

}

http {
    include       mime.types;
    default_type  application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.php index.htm; #重点,记得写上index.php。
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

location ~ \.php$ { #这几列一定要记住去掉注释,并将fastcgi_param 项 该为变量$document_root 后接$fastcgi......中间无空格。
   root           html;#这里也可以使用绝对路径。
   fastcgi_pass   127.0.0.1:9000;#9000端口,本地IP。
   fastcgi_index  index.php;
   fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   include        fastcgi_params;
        }

    }

}

#退出,保存,然后重启nginx          #/usr/local/nginx/sbin/nginx –s reload     重启。

#完成这些后基本上可以说,完成了NINGX和PHP-fpm的配置了。 现在我们来测试一下吧。

优化

#在配置完成nginx+fastcgi之后,为了保证nginx下的php高速运行,需要添加一些fastcgi的优化指令。将下面的代码添加到nginx主配置文件的HTTP层级:(nginx.conf 下 http层下)

fastcgi_cache_path  /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m  inactive=5m;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

fastcgi_cache TEST;

fastcgi_cache_valid 200 302 1h;

fastcgi_cache_valid 301 1d;

fastcgi_cache_valid any 1m;

测试

测试其实很简单,书上、文档上也都是相同的办法…  就是编写一个phpinfo.php来测试php-fpm是否已经支持。

编辑phpinfo.php  

[root@localhost ~]# cd /usr/local/nginx/html/  #切换到默认网页放置目录。

[root@localhost html]# vi phpinfo.php#用VI编辑。

#进入到vi编辑模式中,键入如下代码:

<?php;
phpinfo();#注意:之间无空格。
?>

#注意,这里只是测试环境,如果是生产环境,测试完后将它删除,不要忘记哦。

#编写完成后,将nginx、php-fpm开启。

#打开本地浏览器,在地址栏内输入服务器IP地址 如:http://192.168.209.133/phpinfo.php    

 

QQ截图20120803145744

#出现上图画面,证明Nginx+php-fpm配置成功。

#通过上面一系列步骤我们完成了,LNMP的搭建,其中很多命令很重要,一定要记牢。

#ab –c 500 –n 5000 –t 20 http:// IP地址/index.html  #网站压力测试命令。

#yum –y renmove 软件包名    #这是yum的卸载命令, 参数 “-y” 是同时卸载软件的依赖包。

#/etc/init.d/httpd start  (stop restart) #阿帕奇的开启,停止,重启。

其实nginx的使用很多,这只是其中的一小部分。比如说负载均衡,虚拟主机,防盗链配置,日志分割。等等,很多用途。

软件版本查看命令

[root@localhost ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/0.8.55
[root@localhost ~]# /usr/local/php5.4/sbin/php-fpm -v
PHP 5.4.0 (fpm-fcgi) (built: Aug  1 2012 21:23:14)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

博文完成,里面还有很多不足,请高手们指教,小弟不胜感激。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章