zoukankan      html  css  js  c++  java
  • lanmp之一 (动静分离)

    一、lanmp——需求篇

    1. 准备两台centos 6,其中一台机器跑mysql,另外一台机器跑apache,nginx + php

    2. 同时安装apache和nginx,其中nginx启动80端口,用来跑静态对象(图片、js、css),apache监听88端口,负责跑动态页(php相关),并且需要由nginx代理对外访问

    3. mysql服务器需要开启慢查询日志

    4. 搭建discuz、wordpress以及phpmyadmin,域名分别为bbs.abc.com, blog.abc.com, pma.abc.com

    5. 配置discuz的伪静态(nginx配置)

    6. apache不需要记录日志,nginx记录日志,但不记录图片等静态页的日志,并且配置日志切割

    7. 配置图片防盗链(nginx)

    8. 配置图片缓存7天,js,css缓存1天(nginx)

    9. discuz和wordpress访问后台限制一下ip白名单,比如只允许192.168.1.100访问(nginx)

    10. phpmyadmin整个站点需要配置用户认证(nginx)

    11. 写一个mysql备份的脚本,每天5点执行,需要远程拷贝到web机器上

    12. 把除了百度、google外的其他常见搜索引擎蜘蛛封掉,比如(bingbot/2.0、Sogou web spider/4.0、360Spider、YisouSpider、YandexBot/3.0)(nginx)
     
     
    ps:因为详细过程写下来实在太多了(都在我的笔记中),考虑到用户体验,所以一切简化吧~~
     
    二、lanmp——搭建+部署
    (1)说明:
    两台centos 6.7
    1、windysai(192.168.131.110)   ——》 跑web(apache + [mysql]+ nginx + php) 
    2、luojy(192.168.131.133) ——》 跑mysql,以下简称为 db 机器
    3、apache: 2.2.31        mysql:5.1.49
    nginx:1.6.2          php:5.4.36
     
    (2)db机器安装mysql,并授权给 web 机器
    注意:防火墙规则记得关掉
    web机器测试登录:  
    mysql -usai -p123456 -h192.168.131.133
     
    (3)web机器
    安装 apache+php(lamp环境)  + nginx(作为代理)
     
    (4)搭建三个域名
    bbs.abc.com(discuz)
    blog.abc.com(wordpress)
    pma.abc.com(phpmyadmin)
     
    思路:安装完之后(解压+挪地方)
    再编辑apache虚拟主机配置文件 (DocumentRoot, ServerName)
     
    三、lanmp——功能说明
    1、apache监听88端口
    (1)Apache 的主配置文件httpd.conf,端口改成88
    Listen 88
    (2)Apache 的虚拟主机配置文件 httpd-vhosts.conf(../conf/extra/)
    (i)NameVirtualHost *:88
    (ii)全局替换  :1,%s/:80/:88   《====》  :1,$s/:80/:88
     
    2、apache跑动态网页(php相关)
    主配置文件httpd.conf
    (1)AddType application/x-httpd-php  .php
    (2)DirectoryIndex index.html index.htm  index.php
     
    3、apache由nginx代理访问
    修改discuz.conf,blog.conf,pma.conf ——》nginx的vhosts目录下
    (1)
    server 
    {
         listen 80;
         server_name bbs.abc.com;
         .....
         root /data/bbs;
    ....
    }
    (2) location ~ .php$ {
                   proxy_pass http://127.0.0.1:88;
                   proxy_set_header Host $host;     
                   proxy_set_header X-Real-IP      $remote_addr;
                   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             }     
      
    4、nginx跑静态对象(图片,js,css)
    vim discuz.conf
     
    配置图片缓存 7 天, nginx图片防盗链,不记录图片等静态页的日志
    location ~* ^.+.(gif|jpg|png|swf|flv|rar| zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
         expires 7d;
         valid_referers none blocked server_names *.abc.com *.a.com *.b.com *.baidu.com *.google.com *.google.cn *.soso.com;
         if ($invalid_referer) {
              return 403;
         }
         access_log off;   
    }
     
    5、nginx配置js,css缓存1天,不记录日志
    location ~ .*.(js|css)?$
    {
         expires 24h;     或者为1d
         access_log off;
    }
     
    6、nginx配置discuz的伪静态
            rewrite ^([^.]*)/topic-(.+).html$ $1/portal.php?mod=topic&topic=$2 last;
            rewrite ^([^.]*)/forum-(w+)-([0-9]+).html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
            rewrite ^([^.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
            rewrite ^([^.]*)/group-([0-9]+)-([0-9]+).html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
            rewrite ^([^.]*)/space-(username|uid)-(.+).html$ $1/home.php?mod=space&$2=$3 last;
            rewrite ^([^.]*)/(fid|tid)-([0-9]+).html$ $1/index.php?action=$2&value=$3 last;
     
    7、nginx记录日志
         access_log    /home/logs/discuz.log     combined_realip;
    注意:nginx.conf 在http模块中定义了log_format
     
    8、nginx配置日志切割
    vim /usr/local/sbin/logrotate.sh
    内容:
    #! /bin/bash
    d=`date -d "-1 day" +%Y%m%d`
    /bin/mv  /home/logs/discuz.log /home/logs/discuz_$d.log
    /etc/init.d/nginx reload >/dev/null 2>/dev/null
    cd /home/logs
    gzip discuz_$d.log
     
    9、discuz和wordpress访问后台限制ip白名单
    (1)discuz的后台: bbs.abc.com/admin.php
    location ~ admin.php {
         allow 白名单;
         deny all;
         proxy_pass http://127.0.0.1:88;
         proxy_set_header Host $host;
       }
     
    (2)wordpress的后台:   ls /data/blog/wp-admin/
    location /wp-admin/ {
         allow 白名单
         deny all;
         location ~ .php$ {
                   proxy_pass http://127.0.0.1:88;
                   proxy_set_header Host $host;
         }
    }
     
    10、phpadmin整个站点需要配置用户认证
    (1)vim pma.conf
    location / { 
         auth_basic "Auth";
         auth_basic_user_file /usr/local/nginx/conf/htpasswd;
    }
     
    (2)/usr/local/apache2/bin/htpasswd -c /usr/local/nginx/conf/htpasswd ljy
    (3)重新加载,并访问
    curl -x127.0.0.1:80 pma.abc.com
    curl -x127.0.0.1:80  -uljy:123456  pma.abc.com
    401:代表需要输入用户名和密码
     
    11和12都在db机器上操作
    11、写一个mysql备份的脚本,每天5点执行,需要远程拷贝到web机器上
    (1)脚本 scriptname 内容
    /usr/local/mysql/bin/mysqldump -uroot db1 > /home/db1.sql
    /usr/local/mysql/bin/mysqldump  -uroot db2 > /home/db2.sql
    rsync /home/*.sql  远程web机器ip/data/mysqlbak/
     
    (2)加入到任务列表  
    * 5 * * *  /bin/bash  scriptname
     
    12、mysql服务器开启慢查询日志
    my.cnf 的 mysqld 模块中添加
    超过1秒就记录慢查询日志:long_query_time = 1 
    定义日志路径:                log_slow_queries = /data/mysql/slow.log
     
     
    13、把除了百度、google外的其他常见搜索引擎蜘蛛封掉,比如(bingbot/2.0、Sogou web spider/4.0、360Spider、YisouSpider、YandexBot/3.0)(nginx)
       
         if ($http_user_agent ~'bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315') {
              return 403;
        }
     
     
  • 相关阅读:
    Java基础学习总结(42)——Log4j 2使用教程
    Java基础学习总结(42)——Log4j 2使用教程
    Myeclipse学习总结(1)——Myeclipse优化配置
    Python不再为字符集编码发愁,使用chardet轻松解决你的困扰。
    补习系列(6)- springboot 整合 shiro 一指禅
    给一线讲产品·8期|VPC、子网、安全组,是什么关系?
    Python不再为字符集编码发愁,使用chardet轻松解决你的困扰。
    python推导式pythonic必备
    【nodejs原理&源码赏析(6)】深度剖析cluster模块源码与node.js多进程(下)
    【nodejs原理&源码赏析(5)】net模块与通讯的实现
  • 原文地址:https://www.cnblogs.com/windysai/p/6259648.html
Copyright © 2011-2022 走看看