linux服务器下LNMP安装与配置方法

云豆贴心提醒,本文阅读时间6分钟

一、准备

1.准备php函数的rpm包

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

3.安装php-5.2.14源代码包所需要的函数支持包 复制代码 代码如下:

(libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换)

复制代码 代码如下:

(libmcrypt是加密算法扩展库。支持DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+等算法。) 复制代码 代码如下:

如果以上有错误,请按以下方法:

打开/etc/ld.so.conf,在文件之后,添加一行:

然后,执行 ldconfig ,重新编译即可。

二、安装MySQL

1. 编译安装MySQL 5.5.3-m3 复制代码 代码如下:

三、安装PHP

1. 编译安装PHP(FastCGI模式。使用fastCGI管理php,加快php解析速度) 复制代码 代码如下:

2.准备编译安装PHP5扩展模块 复制代码 代码如下:

3. 修改php.ini文件,让php模块生效 复制代码 代码如下:

4.在php.ini中配置eAccelerator加速PHP 复制代码 代码如下:

5.准备php-cgi和nginx进程执行者用户

6. 创建php-fpm配置文件- php-fpm.conf

7. 启动php-cgi(fastcgi)进程

监听127.0.0.1的9000端口,进程数为128(如果服务器内存小于3GB,可以只开启64个进程),用户为nginx: 复制代码 代码如下:

四、安装Nginx

1. 安装Nginx所需的pcre库 复制代码 代码如下:

2. 安装Nginx 复制代码 代码如下:

3. 修改Nginx配置文件 复制代码 代码如下:

4. 在/usr/local/nginx/conf/目录中创建fastcgi_params文件 复制代码 代码如下:

#建议把fastcgi_param写到nginx.conf中而不是把它写到fastcgi_params配置文件中,否则配置不够灵活,比如后面默认php设置和alias php设置中,他们的php页面的系统地址是不同的,比如: 默认php文件->/usr/local/nginx/html/index.php Alias php文件->/mnt/bbs/index.php 这个时候你会发现fastcgi_params中的SCRIPT_FILENAME的值是相同的,这样会导致alias php的页面出不来,而配置在nginx.conf中各自配置各自的php系统地址,这样比较灵活. #如果你觉得每个连接php的配置中都要加这一句话有点冗余,那就把它加入到fastcgi_params文件中,这样只需要加一次,其他所有的nginx.conf中的有关连接fastcgi的一块就不用加fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name这一句话了. 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 4)mysql Vi /etc/rc.local /usr/local/mysql/bin/mysqld_safe --user=mysql & 6.检查nginx配置文件语句错误

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日志的脚本

8.1创建脚本/usr/local/nginx/sbin/cut_nginx_log.sh vi /usr/local/nginx/sbin/cut_nginx_log.sh

8.2设置crontab,每天凌晨00:00切割nginx访问日志

9.配置nginx虚拟主机 Sina和sohu域名事先解析 复制代码 代码如下:

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

11.虚拟目录设置

#这样配置html静态文件是可以出来的,但是php动态页面出不来,而且会浏览器的页面上会显示" No input file specified. "的报错,其实是php系统文件地址( SCRIPT_FILENAME)找不到,也就是说fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;中的$document_root$fastcgi_script_name不是真正的/mnt/bbs/index.php的地址,这可怎么解决:

#后面两行是关于日志的,就是为了更好的观察由nginx提交给fastcgi的php的系统地址SCRIPT_FILENAME,在这里我用$request_filename来给SCRIPT_FILENAME赋值,在日志中的结果为/mnt/bbs/index.php,在这里我发现一个问题就是$request_filename中的root设置为/mnt,否则$request_filename的值为:/mnt/bbs/bbs/index.php. 由以上可以得到一个结论,就是默认php设置也可以这样设置关于

#此时从日志中可以看到,$request_filename的值为/usr/local/nginx/html/index.php,而以前默认的/scripts$fastcgi_script_name显然是错的php系统地址,日志中显示为/scripts/index.php 12.nginx状态监控

#客户端访问网址:http://www.baidu.com/nginxstatus 13.rewrite正则过滤

Rewrite指令最后一项参数为flag标记,支持的flag标记如下: Last 标示完成rewrite规则 Break 不再匹配后面的规则 Redirect 302临时重定向 Permanent 301永久重定向 Last和break用来实现uri重写,浏览器地址栏的url地址不变,但在服务器访问的路径发生了变化,redirect和permanent用来实现url跳转,浏览器地址栏会显示跳转后的url地址,使用alias指令时必须使用last标记,使用proxy_pass指令时要使用break标记,last标记在本条rewrite规则执行完毕后,会对其所在的server{}标签重新发起请求,而break标记则在本条规则匹配完成后,终止匹配,不再匹配后面的规则. 在匹配的过程中,nginx将首先匹配字符串,然后再匹配正则表达式,匹配到第一个正则表达式后,会停止搜索,如果匹配到正则表达式,则使用正则表达式的搜索结果,如果没有匹配到正则表达式,则使用字符串的搜索结果. 可以使用前缀"^~"来禁止匹配到字符串后,再去检查正则表达式,匹配到url后,将停止查询. 使用前缀"="可以进行精确的url匹配,如果找到匹配的uri,则停止查询,例如"location=/",只能匹配到"/",而"/test.html"则不能被匹配. 正则表达式的匹配,按照它们在配置文件中的顺序进行,写在前面的优先.

请求处理匹配结果示例:

例1:域名跳转 输入www.sina.com,跳转到www.sohu.com

例2:静态index.html跳转到动态index.php文件

在客户端输入:http://www.sina.com/index2.html 会跳转到index.php,把2当变量传入index.php程序 14.代理负载均衡技术(反向代理)

模块设置

  1. 模块设置 Error_log #错误日志 Include #包含子配置文件,0.6版本以后子配置文件放在nginx.conf所在的路径下 Pid #主进程id号 User #nginx nginx表明nginx进程的执行者和组 Worker_processes #与cpu个数相同,4核cpu为4 Worker_rlimit_nofile 65535 #打开的文件描述符,不过提前得设置ulimit -SHn 65535,即linux允许的打开文件个数 Worker_connectiones 65535 #客户端最大连接数65535 Alias #虚拟目录 Error_page #404,500错误跳转页面 Index #index index.html,设置默认首页 Keepalive_timeout #即tcp持续连接超时时间 Limit_rate #limit _rate 100k,即限速为100KB/s Limit_rate_after #limit_rate_after 1m,即下载文件超过1m,则进入limit_rate限速阶段 Listen #listen 192.168.100.1:80,即设置ip和端口 Location #该指令允许对不同的uri进行不同的配置,可以是字符串、正则表达式 Resolver #resolver 8.8.8.8,为nginx设置dns域名指向 Root #设置网站根目录 Send_timeout #超时时间是指进行了两次tcp握手,还没有转为established状态的时间,如果超过这个时间,客户没有响应,nginx则关闭连接,可以用来防止ddos攻击 Sendfile #启用或禁用sendfile()函数,作用于拷贝两个文件描述符之间的操作函数,这个拷贝是在内核中操作的,比read和write拷贝高效得多 Server #普通web配置或虚拟主机的配置的区域 Server_name #根据客户端请求header头信息中的host域名,来匹配该请求应该由哪个虚拟主机配置或服务器的ip Tcp_nodelay #封装tcp/ip数据包的等待时间,也叫纳格算法,在keepalive开启才有用 Tcp_nopush #要求sendfile开启的时候才起作用,设置该选择的原因是nginx在linux上,试图在一个包中发送它的httpd应答头 Allow #allow 192.168.100.254,只允许192.168.100.254访问 Deny #deny all,拒绝其他任何人访问 Autoindex #autoindex on,即开启列表页功能 Charset #charset utf8;source_charset gbk,把服务器上的gbk网页编码转换成utf8输出给客户端 Fastcgi_pass #fastcgi_pass 127.0.0.1:9000; #fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #include fastcgi_params; #fastcgi_pass后跟的是php-cgi进程的ip和端口 Access_log #正确日志 Proxy_pass # proxy_pass http://myweb1,即后跟的是nginx代理负载池upstream中的服务器 Proxy_set_header # proxy_set_header Host $host,设置把$host带给后端的nginx服务器 Proxy_temp_path #用户指定一个本地目录缓冲较大的代理请求,类似于client_body_temp_path Stub_status # stub_status on,即开户状态监控 Image_filter #它指定适用于图片的转换类型

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-04-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

Winform文件下载之WinINet

在C#中,除了webclient我们还可以使用一组WindowsAPI来完成下载任务。这就是Windows Internet,简称 WinINet。本文通过一个...

2268
来自专栏张善友的专栏

分布式文件存储的数据库开源项目MongoDB

MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。 它的特点是高性能、易部署、易使用...

3719
来自专栏Java3y

从零单排学Redis【黄金】

好的,今天我们要上黄金段位了,如果还没经历过青铜和白银阶段的,可以先去蹭蹭经验再回来:

1312
来自专栏Java成长之路

jsonp详解

说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义...

2864
来自专栏JetpropelledSnake

Python入门之logging日志模块以及多进程日志

本篇文章主要对 python logging 的介绍加深理解。更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件。 1. ...

1.1K7
来自专栏跟着阿笨一起玩NET

visual studio xcopy /exclude测试

http://files.cnblogs.com/files/zfanlong1314/exclude%E6%B5%8B%E8%AF%95.zipxcopy 提...

791
来自专栏iKcamp

基于Koa2搭建Node.js实战(含视频)☞ 中间件用法

中间件用法——讲解 Koa2 中间件的用法及如何开发中间件 文章 middleware 中间件 正是因为中间件的扩展性才使得 Koa 的代码简单灵活。 在 a...

2845
来自专栏前端说吧

Gulp安装流程、使用方法及cmd常用命令导览

4436
来自专栏Young Dreamer

web worker 扫盲篇

什么是woker 官方的解释是这样的: worker是一个对象,通过构造函数Worker创建,参数就是一个js文件的路径;文件中的js代码将运行在主线程之外的w...

3668
来自专栏不止是前端

实用主义:前端cookie介绍及操作封装

44016

扫码关注云+社区

领取腾讯云代金券