LNMP架构搭建与优化

1,1php编译与安装

LAMP

apache、mysql、php

LNMP

nginx、mysql、php

mysql的安装与LAMP的mysql安装方法一样

先安装mysql再安装php

cd /usr/local/src

wget http://cn2.php.net/distributions/php-5.4.37.tar.bz2  下载

tar jxvf php-5.4.37.tar.bz2 解压

cd php-5.4.37

./configure --prefix=/export/servers/php --with-config-file-path=/export/servers/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/export/servers/mysql --with-mysql-sock=/export/Data/mysql/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-curl     编译(其中enable-fpm为最关键的工具)

make

echo  $?  查看有没有错误 显示0正确

make install

echo $?

在make install前可以先把本机之前的php目录删除rm -rf /usr/local/php

cp php.ini-production /usr/local/php/etc/php.ini 拷贝配置文件

cp sapi/fpm/init.d.php-fpm /etc/init.d/php/fpm 拷贝启动脚步

chmod 755 /etc/init.d/php-fpm  修改执行权限

chkconfig --add php-fpm  加入系统服务列表

chkconfig php-fpm on 开机启动

cd /usr/local/php/etc/

ls

mv php-fpm.conf.default php-fpm.conf 把样本配置文件重命名

useradd -s /sbin/nologin php-fpm 添加用户php-fpm,编译时指定了用户和组就是php-fpm

service php-fpm start 启动服务

ps aux |grep php-fpm 查看进程

netstat -lnp 查看监听端口

1,2安装nginx

vim /etc/init.d/nginx

黏贴写入保存

:wq

chmod 755!$ 更改权限

chkconfig --add nginx 加入到启动列表

chkconfig  nginx on 开机启动

service nginx start 成功启动

编辑完启动脚本后重新整理配置文件

vim /usr/local/nginx/conf/nginx.conf   打开nginx的配置文件

> /usr/local/nginx/conf/nginx.conf  全部去掉 ,“>” 这个符号之前阿铭介绍过,为重定向的意思,单独用它,可以把一个文本文档快速清空

vim /usr/local/nginx/conf/nginx.conf   打开nginx的配置文件

http://www.apelearn.com/study_v2/chapter18.html,把里面更加nginx配置的内容复制到配置文件里,内容分为两部分,一部分为配置的整体部分,另一部分server为虚拟主机部分,

{{可以把两部分拆分开来,例如不把server部分复制进配置文件里,这配置文件的最后一行gzip下添加include vhosts、*.conf; (nginx支持include)

:wq

pwd

cd /usr/local/nginx/conf/

mkdir vhosts

cd vhosts

vim default.conf

把server部分拷贝过来

在80后添加 default_server

如果为了限制 }}  往后学习再研究。。。

/usr/local/nginx/sbin/nginx  -t  保存配置后,先检验一下配置文件是否有错误存在

service nginx start

ps aux |grep nginx

CtrlR可以快速搜索调用使用过的命令

1,5php-fpm配置文件

/usr/local/php/etc/php.ini管理php的全局配置

/usr/local/php/etc/php-fpm.conf 管理php-fpm服务的配置

> /usr/local/php/etc/php-fpm.conf 清空

http://www.apelearn.com/study_v2/chapter18.html  安装php的7.修改配置文件,拷贝内容

vim /usr/local/php/etc/php-fpm.conf

粘贴内容

[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
[www]  ([www]是pool的名字,pool在ps aux|grep php-fpm命令下可以显示,创建不同的pool可以监听不同的端口或者控制不同得到域名)
listen = /tmp/php-fcgi.sock   (领用sock的方式监听,可以改为/tmp/www.sock)
user = php-fpm
group = php-fpm
pm = dynamic (动态的,管理下面的pm.,所有改为static,只有pm.max_children = 50 有效)
pm.max_children = 50 (最大50个子进程)
pm.start_servers = 20 (一开始20个)
pm.min_spare_servers = 5 (空闲时最少)
pm.max_spare_servers = 35 (空间时最多)
pm.max_requests = 500 (每一个子进程 在生命周期内一共处理多少个请求,自动销毁)
rlimit_files = 1024 (每一个进程所使用文件描述符的限制)

再创一个pool

[www1]
listen = /tmp/www1.sock
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

:wq

/usr/local/php/sbin/php-fpm -t 检查文件有没有错误

/etc/init.d/php-fpm restart

ps aux|grep php-fpm  查看pool

启动多个pool的好处

不同的pool控制不同的域名,也可以不同域名共用一个pool

pool可以分开使用不同权限

若只用一个pool,一个网站挂了其他也会跟着挂

跟踪操作

网站运行浏览慢

在【www】最后添加

slowlog =  /tmp/www_slow.log

request_slowlog_timeout = 1 (脚本执行时间超过一秒就记录slow.log,让自己看到脚本哪里进行慢,

利用/tmp/www_slow.log排查出问题)

php_admin_value[open_basedir]=/data/www/:/tmp/  (不同的pool设置不同的open basedir,限制不同的域名)

:wq

1,6常见的502问题解决

nginx的高级配置

把之前装的论坛 discuz实现在nginx下访问

之前用的域名 www.test.com

cd /usr/local/nginx/conf/vhosts/

ls

mv 111.conf  test.conf

vim test.conf

server name 改为www.test.com;

#禁用一个fastcgi_pass,另一个改为unix;/tmp/www.sock ;

:wq

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

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

外部浏览器访问www.test.com

出现502问题

查看nginx的错误日志error_log

error_log的位置可以在nginx.com里查看

vim /usr/local/nginx/conf/nginx.conf

找出error_log的位置

cat vim /usr/local/nginx/logs/nginx_error.log

找出错误,出现502,发现权限不够,不能读写该文件

ls -l /tmp/www.sock

vim /usr/local/php/etc/php-fpm.conf

group下添加配置,关于监听的用户和组的指定nobody

listen.owner = nobody

listen.group = nobody

:wq

/etc/init.d/php-fpm restart

外部访问

www.test.com

解决了502问题

1,7nginx用户认证

双层密码,在进入admin前还要再输一层密码

cd /usr/local/nginx/conf/vhosts

ls

vim test.conf

在root下面添加

location ~ .*admin\.php$ {

auth_basic "aminglinux auth";

auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

把下面的include、fastcgi_pass、fastcgi_index、fastcgi_param都拷贝到这里

}

:wq

利用apache生成密码的工具htpasswd创建文件 /usr/local/nginx/conf/.htpasswd

(若没有htpasswd,就yum install httpd)

htpasswd -c  /usr/local/nginx/conf/.htpasswd  aming

输入密码

创建用户和密码成功,若想再创建另一个用户,则不用-c和更加名字

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

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

验证:curl -x127.0.0.1:80 -uaming:密码  www.test.com/admin.php

显示出</tr></table></body></html>等就证明php已解析,创建成功

也可以外部浏览器登陆www.test.com/进入管理中心

1,8nginx域名跳转

和apache的域名别名相似

vim /usr/local/nginx/conf/vhosts/test.conf

一个网站多个域名

在server_name 后所有域名都直接写上

例如www.test.com为主,www.aaa.com为次

永久重定向301或302,目的:让搜索引擎更加友好,加重对域名的权重,让网友更容易搜索到页面和域名

server_name www.test.com www.aaa.com;

if ($host !=‘www,test.com‘)

{

rewrite ^/(.*)$ http ://www.test.com/$1 permanent;  (301)

}

:wq

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

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

curl -x127.0.0.1:80 www.aaa.com/afafwaegeges -I(大写i)

验证301和跳转到www.test.com/afafwaegeges

(lst - 基本上都用这个Flag,break - 中止Rewirte,不再继续匹配,redirect -返回临时重定向的HTTP状态302,permanent - 返回永久重定向的HTTP状态301。。。更多了解寻找nginx中如何配置301和302的帖子)

1,9nginx不记录指定文件类型日志

vim /usr/local/nginx/conf/vhosts/test.conf

log_format 就是日志的格式 combined_realip 就是日志的名字,可以改为简单些,列如改为aming,remote_addr远程ip,http_x_forwarded_for 代理ip,time时间,host域名,uri访问的地址,status状态码

vim /usr/local/nginx/conf/vhosts/test.conf

在root下面添加

access_log /tmp/access.log aming;

:wq

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

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

curl -x......或者外部浏览器访问一下

cat  /tmp/access.log  查看日志的记录

不记录静态图片或者指定格式的东西

vim /usr/local/nginx/conf/vhosts/test.conf

在location 。。admin。。php下一段添加

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

{

access_log off;

}

location ~ (static|cache)

{

access_log off;

}

:wq

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

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

curl -x......或者外部浏览器访问一下

cat  /tmp/access.log  查看日志的记录

日志里已经不记录上面指定的东西了

2,0nginx日志切割

需要自己写一个日志切割的脚本

vim /usr/local/sbin/nginx_logrotate.sh

#!/bin/bash
d=`date -d "-1 day" +%F` (今天切割昨天的日志)
[ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log (|| 前面命令成功就不执行后面命令,不成功就执行后面命令)
mv /tmp/access.log   /tmp/nginx_log/$d.log
/etc/init.d/nginx reload > /dev/null (重定向)
cd /tmp/nginx_log/
gzip -f $d.log  (压缩日志和强制覆盖)

sh -x /usr/local/sbin/nginx_logrotate.sh 执行脚本显示过程

应该把执行切割日志的任务命令加入到任务计划里面去,每天都进行切割日志

2,1nginx配置静态文件过期时间

静态文件的缓存,即过期时间

vim /usr/local/nginx/conf/vhosts/test.conf

使用location方式

在access_ log off;下添加

expires 15d  ;(保存15天)

:wq

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

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

在浏览器论坛页面按F12,Network查看设置的指定格式文件的max-age过期时间

也可以用curl -x指令访问文件的URL地址,查看max-age

2,2nginx配置防盗链

依据referer

防盗链也在location里配置

vim /usr/local/nginx/conf/vhosts/test.conf

例如为 gif|jpg|jpeg 等配防盗链

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|mp4|flv|rar|zip|gz|bz2)$

{

expires 15d;

access_log off;

valid_referers none blocked *.test.com *.aaa.com;(允许这两个域名使用)

if ($invalid_referer)

{

return 403;  (其他域名使用这些文件会显示403)

}

}

:wq

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

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

在浏览器论坛页面按F12,Network查看设置的指定格式文件的url

用curl -e"要使用的ip地址" -I -x127.0.0.1:80 ‘该图片或文件的URL’

查看防盗链是否生效

2,3nginx访问控制

设置白名单:允许访问的ip

设置黑名单:拒绝访问的ip

vim /usr/local/nginx/conf/vhosts/test.conf

要设置整个网站的限制,在location外,root下添加

allow 允许的ip;

deny all; (白名单)

deny 禁止的ip;

(黑名单)

要设置网站内某些地方的限制,列如管理员中心,在location admin那段中添加

allow 允许的ip;

deny all; (白名单)

deny 禁止的ip;

(黑名单)

192.168.1.0/24 整个192.168.1的网段

2,4nginx禁止指定user_agent

网站访问很大,服务器空间资源不够,通过user_agent禁止某些不重要搜索链接

vim /usr/local/nginx/conf/vhosts/test.conf

在location外添加

if ($http_user_agent ~* ‘curl|baidu|1111‘)  (~*同时用不区分大小写匹配)

{

return 403;

} (user_agent含有curl,baidu,1111都会禁止访问)

:wq

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

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

测试

curl -A “随便赋予的user_agent” -x。。。。

若随便赋予的user_agent里含有curl,baidu,1111都会显示出403)

2,5nginx代理详解

假设代理百度一个ip地址

vim /usr/local/nginx/conf/vhosts/proxy.conf

server{

listen 80;

server_name www.baidu.com;

location / {

proxy_pass http://百度的ip(可用ping www.baidu.com查看)/;

# proxy_set_header Host $host;

}

}

:wq

假设代理百度两个个ip地址

vim /usr/local/nginx/conf/vhosts/proxy.conf

upstream aming{

server 第一个百度ip;

server 第二个百度ip ;

}

server {

listen 80;

server_name www.baidu.com;

location / {

proxy_pass http://aming/;

proxy_set_header Host $host;

}

}

:wq

时间: 2024-08-29 00:15:34

LNMP架构搭建与优化的相关文章

LNMP 架构搭建与优化

安装 MySQL 安装 PHP 安装 Nginx 解析 PHP Nginx 启动脚本 Nginx 配置文件 Nginx 502 问题 php-fpm 配置文件 Nginx 配置默认虚拟主机

企业级LNMP架构搭建实例(基于Centos6.x)

1.1 部署LNMP架构说明 1.1.1 LNMP架构内容 01.部署linux系统 02.部署nginx网站服务 03.部署mysql数据库服务 04.部署php动态解析服务 1.1.2 配置LNMP架构步骤 01.配置Nginx配置文件 02.配置mysql数据库信息(SQL语句) 03.配置wordpress博客网站 1.1.3 架构服务器串联 01.数据库数据信息迁移(web服务器上的mysql数据 迁移到10.0.0.51 数据库服务器上) 02.将本地储存数据挂载到NFS共享储存服务

LNMP架构搭建Discuz论坛(实战!)

什么是LNMP架构 LNMP平台就是Linux.Ngnix. MySQL. PHP的组合架构,需要Linux服务器.MySQL数据库.PHP解析环境 MySQL安装配置 为了与Nginx.PHP环境保持一致,此处选择采用源代码编译的方式安装MySQL组件 MySQL部署的方法 编译安装MySQL 优化调整 初始化数据库 启动mysq|服务并设置root数据库账号的密码 PHP解析环境的安装 配置网页动静分离,解析PHP,有两种方法可以选择 使用PHP的FPM模块 将访问PHP页面的Web请求转交

LNMP架构搭建(基础入门级)

LNMP架构介绍 LNMP = Linux + Ningx + Mysql + PHP 由Nginx取代apache,提供web服务: PHP作为一个独立服务存在而非apache的一个模块,这个服务为php-fpm: Nginx直接处理静态请求,动态请求会转发给php-fpm. Nginx在处理静态文件的速率较Apache要快的多,这时两者的底层设计所决定的.同时Nginx可以处理的并发访问量也较Apache要大的多,毕竟Apache创建之初并没有考虑到当今的高并发访问量的规模会如此之大.Apa

基于lnmp架构搭建论坛

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. 实验环境: 系统环境: RHEL6 x86-64 selinux and iptables disabled 一.Mysql 安装 1.安装软件包依赖性: [[email protected] ~]# yum install -y gcc gcc-c++ ncurses-devel bison openssl-devel zlib-devel [[email protected] ~]# yum instal

LNMP架构搭建详细部署

LNMP简介LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构. Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.centos.ubuntu.fedora.gentoo等. Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器. Mysql是一个小型关系型数据库管理系统. PHP是一种在服务器端执行的嵌入HTML文档的脚本语言. 这四种软件均为免费.高效.扩展性强的网

LAMP架构搭建与优化

1.1mysql安装 LAMP是linux apache mysql php的简写 MySQL是一个数据库文件 apache提供http服务 很多网站站点使用php写 安装下载MySQL www.aminglinux.com/study_v2/chapter12.html 下载 r.aminglinux.com/ 1.2Apache编辑安装 路径和方法 www.aminglinux.com/study_v2/chapter12.html 下载 r.aminglinux.com/ /usr/loc

LNMP架构搭建论坛(3)

配置php服务libmcrypt源码包是用于加密算法的扩展库程序libvpx源码包是用于提供视频编码器的服务程序,libvpx-v1.3.0.tar.bz2,则此处解压方式为:tar xjvftiff源码包是用于提供标签图像文件格式的服务程序libpng源码包是用于提供png图片格式支持函数库的服务程序freetype源码包是用于提供字体支持引擎的服务程序jpeg源码包是用于提供jpeg图片格式支持函数库的服务程序libgd源码包是用于提供图形处理的服务程序,在编译libgd源码包时,请记得写入

LNMP架构搭建论坛(三)

配置PHP服务(1)cd /usr/local/src(2)解压编译生成安装yasm源码包(3)安装libmcrypt源码包(4)安装libvpx源码包(5)安装tiff源码包(6)安装libpng源码包(7)安装freetype 源码包(8)安装jpegsrc源码包(9)安装libgb源码包(10)安装t1lib源码包tar zxvf t1lib-5.1.2.tar.gzcd t1lib-5.1.2./configure --prefix=/usr/local/t1lib --enable-s