lnmp的安装与配置1

LNMP一键安装包是什么?javascript

LNMP一键安装包是一个用Linux Shell编写的能够为CentOS/RadHatDebian/Ubuntu VPS(VDS)或独立主机安装LNMP(NginxMySQLPHPphpMyAdmin)生产环境的Shell程序。同时提供一些实用的辅助脚本如:能够帮助完成NginxMySQL/MariaDBPHP的升级、经常使用缓存组件的安装、重置MySQL root密码、502自动重启、日志切割等许多实用脚本。php

咱们为何须要它?css

编译安装须要输入大量的命令,若是是配置生产环境须要耗费大量的时间。html

不会Linux的站长或Linux新手想使用Linux做为生产环境……java

它有什么优点?node

无需一个一个的输入命令,无需值守,编译安装优化编译参数,提升性能,解决没必要要的软件间依赖,特别针对VPS用户进行了优化。mysql

如何获取它?linux

你能够自由下载并使用它在VPS(VDS)或独立服务器上,作为真正的生产环境或测试环境。nginx

咱们为何采用LNMP这种架构?web

采用LinuxPHPMySQL的优势咱们没必要多说。

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前不少国内外的门户网站、行业网站也都在是使用Nginx,至关的稳定。

Nginx至关的稳定、功能丰富、安装配置简单、低系统资源……

 

Nginx与apache、lighttp性能综合对比,以下图:

 

 

注意:关闭rpm默认安装的apachemysql

              lamp环境的准备工做,nginx安装时,也须要完成

1.准备php函数的rpm

1)保证yum源正常

 

2)  全部lamp的准备都要完成

       rpm安装的httpd关闭,同时禁用自启动

       关闭selinux和iptables

 

2.准备lnmp其余的源代码包

http://lnmp.org/install.html

 

3.一键安装过程

系统需求:

CentOS/Debian/Ubuntu Linux系统

须要2GB以上硬盘剩余空间

128M以上内存

VPS或服务器必须已经联网!

Linux下区分大小写,输入命令时请注意!

1)一键安装过程

您能够选择使用下载版(推荐国外或者美国VPS使用)或者完整版(推荐国内VPS使用),二者没什么区别。

执行安装程序前须要您确认您的Linux发行版,能够执行:cat /etc/issue 查看是CentOS、Debian仍是Ubuntu,也能够经过VPS服务商提供的控制面板上查看。肯定好以后,选择下面对应系统的安装命令: 

CentOS系统下执行:wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./centos.sh

按上述命令执行后,会出现以下提示:
(
注:若是是Debian系统,会提示Where are your servers located? asia,america,europe,oceania or africa,这里是选择服务器/VPS在哪一个大洲,通常都是美国VPS,直接回车就行,若是是中国的,输入asia,回车。若是输入有错误,能够按住Ctrl再按Backspace键删除,如下都可采用此方法删除。)

这一步须要设置MySQL的root密码,输入后回车进入下一步,以下图所示:

这里须要确认是否启用MySQL InnoDB,若是不肯定是否启用能够输入 y ,这个能够单独在MySQL文件里关闭,输入 y 表示启用,输入 n 表示不启用。输入 y 或 n 后回车进入下一步,显示以下信息:

这一步是选择php版本,能够选择 PHP 5.3.17 或 PHP 5.2.17,安装PHP 5.3.17的话输入 y ,安装PHP 5.2.17 输入 n,输入 y 或 n 后回车,进入下一步MySQL版本的选择,以下图:

能够选择MySQL 版本 5.5.27 或 5.1.60,安装MySQL 5.5.27的话输入 y ,安装MySQL 5.1.60 输入n,输入 y 或 n 后回车,完成选择。

提示"Press any key to start...",按回车键确认开始安装。
LNMP
脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。

安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等缘由会形成影响。

 

2)、安装完成
若是显示以下界面:

说明已经安装成功。
接下来按添加虚拟主机教程,添加虚拟主机,经过sftpftp服务器上传网站,将域名解析到VPS或服务器的IP上,解析生效便可使用。

3)、安装失败

若是出现相似上图的提示,则代表安装失败,说明没有安装成功!!须要用winscp或其余相似工具,将/root目录下面的lnmp-install.log下载下来,到LNMP支持论坛发帖注明你的发行版名称版本号(可经过 cat /etc/issue得到)、32位仍是64位,并将lnmp-install.log压缩以附件形式上传到论坛,咱们会经过日志查找错误,并给予相应的解决方法。

 

4)、eAccelerator,xcache,memcached,imageMagick,ionCube的安装

本文主要介绍eAcceleratorxcachememcachedimageMagickionCube这几个PHP加速和php扩展的安装及使用,这些不必定对每一个人都有用,本身按须要安装,下面会对各个程序的做用、安装方法及相关注意事项。

a)、eAccelerator

eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提升了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎彻底消除。 它还有对脚本起优化做用,以加快其执行效率。

安装
进入lnmp解压后的目录,执行:./eaccelerator.sh 运行后有以下提示:

eaccelerator 0.9.5.3
支持PHP 5.2,如需此版本,输入 old 回车。
eaccelerator 0.9.6.1
支持PHP 5.2、5.3,如需此版本,输入 new 回车。
eaccelerator 1.0-dev
支持PHP 5.2、5.3、5.4,如需此版本输入 dev 回车。

提示“Press any key to start...or Press Ctrl+c to cancel后回车确认,脚本就会自动安装eaccelerator

b)、xcache

XCache 是一个国人开发的又快又稳定的 PHP opcode 缓存器. 通过良好的测试并在大流量/高负载的生产机器上稳定运行. 通过(在 linux 上)测试并支持全部现行 PHP 分支的最新发布版本。

安装
进入lnmp解压后的目录,执行:./xcache.sh 运行后有以下提示:

一个有两个版本能够选择,分别是XCache 2.0.0 和XCache 3.0.1 ,建议安装XCache 3.0.1 输入new 回车

出现“Press any key to start...or Press Ctrl+c to cancel“,再次回车确认便可开始安装。

c)、memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它经过在内存中缓存数据和对象来减小读取数据库的次数,从而提供动态、数据库驱动网站的速度。

安装
进入lnmp解压后的目录,执行:./memcached.sh
回车确认后就会自动安装memcache php扩展和memcached

d)、imageMagick

ImageMagick是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它能够读取、编辑超过100种图象格式。可用来替换GD库。

安装
进入lnmp解压后的目录,执行:./imageMagick.sh
回车确认后就会自动安装imageMagick

设置:好比在DiscuzX里设置时路径须要填写:/usr/local/imagemagick/bin/ 而且禁用函数里的exec要去掉才能够正常使用。

 

5)、LNMP相关软件目录及文件位置
除去所必须的依赖包,LNMP一键安装包会安装一下软件:
默认安装软件:

  • Nginx
  • MySQL
  • PHP
  • PHPMyAdmin
  • Zend Optimizer

可选软件:

注明可选的为可以使用安装脚本自行安装,未注明的为会自动安装。
不必定可选包都适合你,按需安装便可。

 

 

LNMP相关软件安装目录
Nginx
目录: /usr/local/nginx/
MySQL
目录 : /usr/local/mysql/
MySQL
数据库所在目录:/usr/local/mysql/var/
PHP
目录 : /usr/local/php/
PHPMyAdmin
目录 : 0.9版为/home/wwwroot/phpmyadmin/ 1.0/1.1版为 /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可本身从官网下载新版替换。
默认网站目录 : 0.9版为 /home/wwwroot/ 1.0版为 /home/wwwroot/default/
Nginx
日志目录:/home/wwwlogs/
/root/vhost.sh
添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd
目录:/usr/local/pureftpd/
PureFtpd web
管理目录: 0.9版为/home/wwwroot/default/ftp/ 1.0版为 /home/wwwroot/default/ftp/
Proftpd
目录:/usr/local/proftpd/

 

 

LNMP相关配置文件位置
Nginx
主配置文件:/usr/local/nginx/conf/nginx.conf
/root/vhost.sh
添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL
配置文件:/etc/my.cnf
PHP
配置文件:/usr/local/php/etc/php.ini
php-fpm
配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd
配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL
配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd
配置文件:/usr/local/proftpd/etc/proftpd.conf
Proftpd
用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf

 

LNMPA相关目录文件位置
Apache
目录:/usr/local/apache/
Apache
配置文件:/usr/local/apache/conf/httpd.conf
Apache
虚拟主机配置文件目录:/usr/local/apache/conf/vhost/

 

6)、LNMP状态管理命令
LNMP
状态管理命令:

LNMP状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx
状态管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL
状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached
状态管理:/etc/init.d/memcached {start|stop|restart}
PHP-FPM
状态管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd
状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd
状态管理: /etc/init.d/proftpd {start|stop|restart|reload}

如重启LNMP,输入命令:/root/lnmp restart 便可,单独重启mysql:/etc/init.d/mysql restart

 

LNMPA状态管理命令:

LNMPA状态管理: /root/lnmpa {start|stop|reload|restart|kill|status}
Nginx
状态管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL
状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached
状态管理:/etc/init.d/memcached {start|stop|restart}
PureFTPd
状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd
状态管理: /etc/init.d/proftpd {start|stop|restart|reload}
Apache
状态管理:/etc/init.d/httpd {start|stop|restart|graceful|graceful-stop|configtest|status}

 

7)、如何安装LNMPA

LNMPA是LNMP的扩展,须要先按LNMP安装教程安装好LNMP后,在LNMP压缩包解压后的目录里再执行./apache.sh 开始安装,会提示输入邮箱,回车确认后将会自动开始安装。(低于1G内存不建议使用LNMPA,升级到LNMPA后没法降回LNMP)

当提示安装成功后便可体验LNMPA了。

 

 

4. 修改Nginx配置文件

vi /usr/local/nginx/conf/nginx.conf

user  www www;

worker_processes 1;

#启动进程,一般设置成和cpu的数量相等。至关于cpu个数

error_log  logs/nginx_error.log;

#错误日志

pid        /usr/local/nginx/nginx.pid;

#主进程PID保存文件

#Specifies the value for maximum file descriptors that can be opened by this process. 
worker_rlimit_nofile 51200;

#文件描述符数量        ulimit   -a       openfile 小于此数值   

修改Linux容许打开文件的最大数量
[root@localhost ~]# ulimit -SHn 51200

[root@localhost ~]# ulimit -a
events 
    {
          use epoll;

        #网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue

          #epoll是多路复用IO(I/O Multiplexing)中的一种方式,可是仅用于linux2.6以                 上内 核,能够大大提升nginx的性能
          worker_connections 51200;

        #单个工做进程最大容许链接数
    }

http 

#总体环境配置
    {
              include       mime.types;
              default_type  application/octet-stream;
                #设定mime类型,文件传送类型由mime.type文件定义

 

                server_names_hash_bucket_size 128;      #保存服务器名字的hash表大小

                client_header_buffer_size 32k;          #客户端请求头部缓冲区大小

                large_client_header_buffers 4 32k;          #最大客户端头缓冲大小

                client_max_body_size 50m;               #客户端最大上传文件大小(M)

 

                sendfile on;

                #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文                    件,对于普通应用,必须设为 on。若是用来进行下载等应用磁盘IO重负载应用,可                 设置为off,以平衡磁盘与网络I/O处理速度,下降系统的uptime.

                tcp_nopush     on;

                #这个是默认的,结果就是数据包不会立刻传送出去,等到数据包最大时,一次性的                    传输出去,这样有助于解决网络堵塞。(只在sendfile on时有效)

 

                keepalive_timeout 60;

                #链接超时时间

 

                tcp_nodelay on;

                #禁用nagle算法,也即不缓存数据。

 

                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 256k;

                #fastcgi设置php-fpm

 

                gzip on;

                gzip_min_length  1k;

                gzip_buffers     4 16k;

                gzip_http_version 1.0;

                gzip_comp_level 2;

                gzip_types       text/plain application/x-javascript text/css application/xml;

                gzip_vary on;

                gzip_proxied        expired no-cache no-store private auth;

                gzip_disable        "MSIE [1-6]\.";

                #开启gzip网络压缩

 

                #limit_zone  crawler  $binary_remote_addr  10m;

 

                server_tokens off;

                #隐藏nginx版本号(curl -I 192.168.4.154能够查看,更加安全)

 

                #log format

                log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '

             '$status $body_bytes_sent "$http_referer" '

             '"$http_user_agent" $http_x_forwarded_for';

                #定义日志格式

 

server

        {

                listen       80;

                 #监听80端口

                server_name www.lnmp.org;

                 #服务器名

                index index.html index.htm index.php;

                 #默认网页文件

                root  /home/wwwroot/default;

                 #网页主目录

 

                location ~ .*\.(php|php5)?$

                        {

                                try_files $uri =404;

                                #分析文件是否存在,若是不存在报404错误

                                fastcgi_pass  unix:/tmp/php-cgi.sock;

                                 #指定FastCGI服务器监听端口与地址。这里使用unix socket

#nginx以unix-domain-socket方式链接fastcgi(php)。更快,适合大流量访问

#另一种 nginx链接fastcgi的方式是http方式的[ 127.0.0.1:9000  方式链接 fastcgi(php)

                                fastcgi_index index.php;

                                 #默认网页文件

                                include fcgi.conf;

                                #fcgi.conf配置文件生效

                        }

 

                location /status {

                        stub_status on;

                        access_log   off;

                }

                 #开启status状态监测

 

                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

                        {

                                expires      30d;

                        }

                #静态文件处理,保存期30天

 

                location ~ .*\.(js|css)?$

                        {

                                expires      12h;

                        }

                 #js和css文件处理,保存期12小时

 

                access_log  /home/wwwlogs/access.log  access;

                #正确访问日志

        }

include vhost/*.conf;

#vhost/下子配置文件生效

}

 

 

5.配置开机启动nginx,php-fpm,ulimit

1)nginx

Vi /etc/rc.local

/usr/local/nginx/sbin/nginx

2)php-fpm

Vi /etc/rc.local

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

3)ulimit

Vi /etc/profile

ulimit -SHn 65535

设置Linux系统最大文件打开数和Nginx并发量

4)mysql

Vi /etc/rc.local

/usr/local/mysql/bin/mysqld_safe  --user=mysql  &

 

一键安装包已经完成自启动,加入了chkconfig管理,能够直接使用service命令和chkconfig命令管理

 

6.检查nginx配置文件语句错误

/usr/local/nginx/sbin/nginx -t

 

7.平滑重启nginx进程

1)pkill -HUP nginx

2)kill -HUP `pgrep -uroot nginx`

   Pgrep  -uroot  nginx  取出nginx主进程PID

3)/usr/local/nginx/sbin/nginx -s reload

 


8.配置nginx虚拟主机

 

Sina和sohu域名事先解析

 

Vi /usr/local/nginx/conf/nginx.conf

==èwww.sina.com公司网站

server

        {

                listen       80;

                server_name www.sina.com;

                index index.html index.htm index.php;

                root  /home/wwwroot/sina;

 

                location ~ .*\.(php|php5)?$

                        {

                                try_files $uri =404;

                                fastcgi_pass  unix:/tmp/php-cgi.sock;

                                fastcgi_index index.php;

                                include fcgi.conf;

                        }

              }

 

==èwww.sohu.com公司网站

 

server

        {

                listen       80;

                server_name www.sohu.com;

                index index.html index.htm index.php;

                root  /home/wwwroot/sohu;

 

                location ~ .*\.(php|php5)?$

                        {

                                try_files $uri =404;

                                fastcgi_pass  unix:/tmp/php-cgi.sock;

                                fastcgi_index index.php;

                                include fcgi.conf;

                        }

        }

重启nginx

最后在客户端测试虚拟主机www.baidu.com和www.sina.com两家公司网站

 

9.列表页显示

server

        {

                listen       80;

                server_name www.sina.com;

                index index.html index.htm index.php;

                root  /home/wwwroot/sina;

                autoindex on;

 

10.nginx状态监控

location /nginxstatus{

        stub_status on;

        access_log  off;

        }

#客户端访问网址:http://IP/nginxstatus

 

11.rewrite正则过滤

location ~ \.php$ {

        proxy_pass   http://127.0.0.1;

        }

Rewrite指令最后一项参数为flag标记,支持的flag标记以下:

Last

       中止执行当前这一轮的ngx_http_rewrite_module指令集,而后查找匹配改变后URI的新location;

Break

       中止执行当前这一轮的ngx_http_rewrite_module指令集;

Redirect

       在replacement字符串未以“http://”或“https://”开头时,使用返回状态码为302的临时重定向;

Permanent

       返回状态码为301的永久重定向。

 

Last和break用来实现uri重写,浏览器地址栏的url地址不变,但在服务器访问的路径发生了变化,redirect和permanent用来实现url跳转,浏览器地址栏会显示跳转后的url地址,使用alias指令时必须使用last标记,使用proxy_pass指令时要使用break标记,last标记在本条rewrite规则执行完毕后,会对其所在的server{}标签从新发起请求,而break标记则在本条规则匹配完成后,终止匹配,再也不匹配后面的规则.

 

 

例1:域名跳转

输入www.sina.com,跳转到www.sohu.com

server

        {

                listen       80;

                server_name www.sina.com;

                index index.html index.htm index.php;

                root  /home/wwwroot/sina;

 

                if ($http_host = www.sina.com) {

                        rewrite  (.*)  http://www.sohu.com  permanent;

                }

 

                location ~ .*\.(php|php5)?$

                        {

                                try_files $uri =404;

                                fastcgi_pass  unix:/tmp/php-cgi.sock;

                                fastcgi_index index.php;

                                include fcgi.conf;

                        }

              }

 

server

        {

                listen       80;

                server_name www.sohu.com;

                index index.html index.htm index.php;

                root  /home/wwwroot/sohu;

 

                location ~ .*\.(php|php5)?$

                        {

                                try_files $uri =404;

                                fastcgi_pass  unix:/tmp/php-cgi.sock;

                                fastcgi_index index.php;

                                include fcgi.conf;

                        }

        }

 

例2:文件跳转

server

        {

                listen       80;

                server_name www.sina.com;

                index index.html index.htm index.php;

                root  /home/wwwroot/sina;

 

                rewrite index /index.php last;

 

                location ~ .*\.(php|php5)?$

                        {

                                try_files $uri =404;

                                fastcgi_pass  unix:/tmp/php-cgi.sock;

                                fastcgi_index index.php;

                                include fcgi.conf;

                        }

              }

 

12.代理负载均衡技术(反向代理)

http

        {

upstream myweb1 {

       #定义地址池

        server 192.168.244.10:80;

        server 192.168.244.11:80;

}

    server {

        listen       80;

        server_name  www.sohu.com;

                            #使用www.sohu.com访问

location / {

proxy_pass http://myweb1;

              #使用地址池

proxy_set_header Host $host;

              #利用HOST变量向后端服务器传递须要解析的客户端访问的域名(传递域名)

proxy_set_header X-Forwarded-For $remote_addr;

              #$remote_addr 把客户端真实IP赋予X-Forwarded-For。后端服务器才能获取真实的客户端IP。以便记录日志,要不日志中记录的访问信息都是负载服务器,而不是客户端(传递IP)

}

}

}

 

 

LNMP升级及Nginx、MySQL/MariaDB、PHP升级说明

http://lnmp.org/faq/upgrade.html

相关文章
相关标签/搜索