• LAMP第三部分php配置和mysql配置



    9. 配置防盗链
    http://www.lishiming.net/thread-71-1-1.html

    防止别人的网站,放你网站图片的链接,

    位置一般情况下在 /usr/local/apache/conf/httpd.conf
    或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
    添加

    SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref
    SetEnvIfNoCase Referer "^http://ccvita.com" local_refSetEnvIfNoCase Referer "^$" local_ref
    <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
    Order Allow,Deny
    Allow from env=local_ref
    </filesmatch>

    还一种写法,是用正则的,这种写法在各个版本的apache比较通用。
    写法是

    SetEnvIfNoCase Referer "^http://.*.yourdomin.com" local_ref
    SetEnvIfNoCase Referer ".*.yourdomin.com" local_ref
    SetEnvIfNoCase Referer "^$" local_ref
    <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
    Order Allow,Deny
    Allow from env=local_ref
    </filesmatch>

     

    10. 访问控制
    apache的order allow deny
    http://www.lishiming.net/thread-832-1-1.html

    apache限制某个目录下的php文件没有执行权限 http://www.lishiming.net/thread-1000-1-1.html
    apache 针对访问uri 限制ip http://www.lishiming.net/thread-5365-1-1.html
    几种限制ip的方法 http://www.lishiming.net/thread-6519-1-1.html

     

     

    11. apache rewrite相关,后面讲到
    apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
    apache 限制某些目录不能访问通过rewrite实现 http://www.lishiming.net/thread-3587-1-1.html
    apache rewrite 出现死循环 http://www.lishiming.net/thread-1043-1-1.html

     


    一. php配置
    查看配置文件的路径 /usr/local/php/bin/php -i |grep -i config
    vi /usr/locall/php/etc/php.ini

    查找/disable_function
    1. 配置disable_function
    disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close

    禁止这些函数,禁止黑客用这些黑客访问

    2. 配置error_log
    display_error=off 这里如果是on 有助于我们去排错和调试========
    log_errors=on
    error_log=/usr/local/php/logs/php_errors.log 这里写绝对路径,创建logs目录,权限777
    error_reporting = E_ALL & ~E_NOTICE 错误级别

    查看网站出错的状态码
    curl -I -x127.0.0.1:80 http://www.111.com/forum.php

    错误级别参考 http://www.aminglinux.com/bbs/thread-6973-1-1.html

    3. 配置open_basedir 限定访问目录

    open_basedir = /data/www1:/tmp 在php.ini里面配置,一种方法,指定到别的目录去,就访问不了了

    php_admin_value open_basedir "/data/www1:/tmp" 在虚拟主机配置,二种方法,


    > /usr/local/php_errors.log 清空日志的意思


    4. 安装php的扩展模块(memcache)
    http://www.aminglinux.com/bbs/thread-45-1-1.html

    源码包的模块
    cd /usr/local/src/php-5.3.28/ext/

    如果想要用哪些模块,就进入到模块 执行这个命令
    ext]# cd ftp
    [root@Centos6 ftp]#/usr/local/php/bin/phpize
    需要安装autoconf yum install autoconf
    然后再执行一下命令/usr/local/php/bin/phpize
    ls
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make install 这时告诉你这个动态模块在哪里
    ls + 模块路径
    出现 ftp.so

    /usr/local/php/bin/php -i |grep -i extension_dir

    vi /usr/local/php/etc/php.ini 配置加上ftp模块,需要手动加
    进去加上 extension=ftp.so extension这里说明是一个动态加载
    然后 /usr/local/php/bin/php -m |grep ftp 就多了ftp这个模块了

     


    二. mysql配置

    mysql调优: http://www.aminglinux.com/bbs/thread-5758-1-1.html

    /etc/my.cnf 已经拷贝了这个模板
    [mysqld]
    socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)等我写完后你再读
    port = 3306 # 指定MsSQL侦听的端口
    key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。索引被所有的线程共享,key_buffer的大小视内存大小而定。
    table_cache = 512 # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
    sort_buffer_size = 2M # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
    注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
    read_buffer_size = 2M # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。=====
    query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小
    read_rnd_buffer_size = 8M # 改参数在使用行指针排序之后,随机读用的。
    myisam_sort_buffer_size =64M # MyISAM表发生变化时重新排序所需的缓冲
    thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
    thread_cache = 8 # #缓存可重用的线程数
    skip-locking # 避免MySQL的外部锁定,减少出错几率增强稳定性。 wait_timeout = 8 # 表示空闲的连接超时时间,默认是28800s,这个参数是和interactive_timeout一起使用的,也就是说要想让wait_timeout 生效,必须同时设置interactive_timeout
    interactive_timeout = 8
    long_query_time = 1 ##慢查询日志的超时时间
    log_slow_queries = /path/to/slow_queries ## 慢查询日志路径,必须配合上面的参数一同使用

     

    ============
    查看key_reads / key_read_requests 这两的值
    登录mysql

    SHOW STATUS LIKE 'key_read%';

    --------
    show varables like 'table%'

     

    apache 限制指定user_agent http://www.lishiming.net/thread-1033-1-1.html
    打开虚拟主机配置文件
    判断是用什么搜索引擎
    有些user_agent 不是我们想要的,可以通过rewrite功能针对 %{HTTP_USER_AGENT} 来rewirete到404页,从而达到限制某些user_agent的请求。

    配置如下
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
    RewriteCond %{REQUEST_URI} !^/404*
    RewriteRule .* /404.html
    </IfModule>

    测试curl -xlocalhost:80 www.111.com -I 跳到了404
    curl -A "sfjslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 这个就不是404了

    curl -A "botslkfjlsjgssfhsl "-xlocalhost:80 www.111.com -I 这个是404 因为包含了bot

    请注意,你的404.html千万别再跳转到其他页面了,否则很有可能就会死循环了。
    其实rewrite到404.html 并不是很好的办法,而apache的rewrite功能有一项就是forbidden ,那就是 F
    配置如下
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} ^.*bot.* [NC]
    RewriteRule .* - [F]
    </IfModule>
    ======================
    apache 限制某些目录不能访问通过rewrite实现 http://www.lishiming.net/thread-3587-1-1.html


    deny allow肯定是可以实现的,但是这个必须指定准确的目录,如果有很多个目录,但是都包含某个名字,比如
    bbs.1.com/1/tmp/123.html
    bbs.1.com/2/tmp/123.html
    bbs.1.com/3/1/2/tmp/123.html
    ……
    如果有很多,需要逐一去定义Directory 模块,这显然很麻烦,使用rewrite模块的 REQUEST_URI 就可以很容易实现。
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} ^.*/data/* [NC] #data这个目录下的都访问不了
    RewriteRule .* - [F]
    </IfModule>


    访问一下网站,看到很多东西没有出来,按下12,会看到有的文件是403就是限制了这个目录下面的文件了

    ======================
    apache rewrite 出现死循环 http://www.lishiming.net/thread-1043-1-1.html

    我的一条规则
    RewriteRule ^.* /beian.html [R,L]
    复制代码
    使用curl测试,没有问题,但是使用浏览器访问时,出现了无限循环。
    本来访问的是 www.111.com 结果变成了 www.111.com/111/111/111/.....
    虽然在最后加了 [L] 依然不管用,可能apache还是不够智能,一直满足条件就一直去匹配,一直去跳转。最后没招了只能再加一个条件。

    RewriteCond %{REQUEST_URI} !^/beian.html [NC]
    RewriteRule ^.* /beian.html [R,L]

    这样就不再循环了。

  • 相关阅读:
    Atlas+Keepalived系列一:安装Atlas:
    MySQL查看当前的连接信息
    MySQL replicate-ignore-db详解
    MongoDB 进程控制系列二:结束进程
    MongoDB 进程控制系列一:查看当前正在执行的进程
    MySQL 大致测试更新时间
    MySQL SELECT 执行的具体步骤
    MongoDB副本集配置系列七:MongoDB oplog详解
    MySQL 分区
    微软BI 之SSIS 系列
  • 原文地址:https://www.cnblogs.com/chenshoubiao/p/4617408.html
Copyright © 2020-2023  润新知