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;
        }
     
     
  • 相关阅读:
    dubbo入门(一)
    java中文件操作《一》
    Unity 游戏框架搭建 2019 (七) 自定义快捷键
    凉鞋:我所理解的框架 【Unity 游戏框架搭建】
    Unity 游戏框架搭建 2019 (六) MenuItem 复用
    Unity 游戏框架搭建 2019 (五) 打开所在文件夹
    Unity 游戏框架搭建 2019 (四) 导出 UnityPackage
    Unity 游戏框架搭建 2019 (三) 生成文件名到剪切板
    Unity 游戏框架搭建 2019 (二) 文本复制到剪切板
    Unity 游戏框架搭建 2019 (一) 简介与第一个示例文件名的生成
  • 原文地址:https://www.cnblogs.com/windysai/p/6259648.html
Copyright © 2011-2022 走看看