zoukankan      html  css  js  c++  java
  • LAMP总四部分

     

    第一部分

    1. 安装mysql
    cd /usr/local/src/
    免安装编译二进制的包
    wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz

    tar zxvf /usr/local/src/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz 解压
    mv mysql-5.1.40-linux-i686-icc-glibc23 /usr/local/mysql 挪到mysql下并重命名为mysql

    useradd -s /sbin/nologin mysql 增加一个mysql用户不让它登录
    mkdir -p /data/mysql 要存放mysql数据

    cd /usr/local/mysql

    chown -R mysql:mysql /data/mysql
    ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 初始化,要运行一些mysql必要的文件mysql表,数据库放在/data/mysql

    echo $?

    ]# ls /data/mysql
    mysql test
    生成了mysql库

    mysql]#ls support-files/
    mysql]#cp support-files/mysql.server /etc/init.d/mysqld mysql启动的脚本====
    放到这里是为了让它放到系统的服务列表里面去

    chmod 755 /etc/init.d/mysqld

    chkconfig --add mysqld
    chkconfig mysqld on


    vim /etc/init.d/mysqld 需要修改一下配置文件================
    加上如下内容
    basedir=/usr/local/mysql mysql所在的路径
    datadir=/data/mysql 要存放mysql数据


    mysql]# ls support-files/
    my-huge.cnf
    my-large.cnf
    my-small.cnf


    cp support-files/my-huge.cnf /etc/my.cnf 也可以打开my.cnf 修改他的端口
    vim /etc/my.cnf 里面有配置
    注释下面两行,是做主从用的,防止占用过多资源,
    #log-bin=mysql-bin
    #server-id = 1


    service mysqld start
    或者
    /etc/init.d/mysqld start mysql启动脚本========================

    ps aux |grep mysqld
    netstat -lnp |grep mysql

    ls /data/mysql 查看一下生成的文件
    可以查看一下错误日志

     


    2. 安装apache
    wget http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz
    tar zvxf httpd-2.2.16.tar.gz
    cd httpd-2.2.16

    ./configure --prefix=/usr/local/apache2 --with-included-apr --with-pcre --enable-mods-shared=most
    prefix后面是安装apache的目录,apr可以让我们在多个平台使用apache,pcre叫正则相关的,后面是模块

    如果上面出错就需要安装一下gcc和apr yum install -y gcc apr
    echo $?

    make
    make install
    ls /usr/local/apache2/ 可以查看生成的文件

    启动apache
    /usr/local/apache2/bin/apachectl start
    ps aux |grep httpd

    【httpd-2.4版本编译安装方法】 http://www.aminglinux.com/bbs/thread-7283-1-1.html
    2.2用到他自带的apr,2.4要用到系统的apr
    【如何指定使用worker/prefork】 http://www.lishiming.net/thread-944-1-1.html
    【apache两种工作模式】http://www.lishiming.net/thread-838-1-2.html

     


    php必须在前面两者后面安装

    3. 安装php
    wget http://cn2.php.net/distributions/php-5.3.28.tar.gz
    tar zxf php-5.3.28.tar.gz

    cd php-5.3.28 安装相关需要的包,继续执行下面的操作
    ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif --disable-ipv6

    如果安装出错就是缺少一些库,需要安装一下 yum install -y libxml2-devel 比如这个,后面都跟-devel
    (不确定的时候可以查找一下 yum list |grep bzip2)很准确


    注意,最后到这里mcrypt 这个包,你需要安装epel的扩展源才可以看到
    不然yum list |grep mcrypt 是搜索不到mcrypt

    centos6
    32位epel yum源下载地址:wget www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
    64位下载地址: www.lishiming.net/data/attachment/forum/epel-release-6-8_64.noarch.rpm

    rpm -ivh epel-release-6-8_32.noarch.rpm

    然后就可以搜索yum list |grep mcrypt

    centos6
    32位epel yum源下载地址: www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
    64位下载地址: www.lishiming.net/data/attachment/forum/epel-release-6-8_64.noarch.rpm

    下载完后
    rpm -ivh 'www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm'

    yum install -y libmcrypt-devel 然后才可以成功安装这个


    make
    make install


    【php5.5、5.6编译安装方法】http://www.aminglinux.com/bbs/thread-7284-1-1.html

    =========================================================mysql,apache,php安装完成了

     

    4. 配置apache结合php
    vim /usr/local/apache2/conf/httpd.conf apache的配置文件,里面和很多模块

    ls /usr/local/apache2/modules/ apache模块的路径

    /usr/local/apache2/bin/apachectl -M 查看静态动态的模块
    里面的share(动态)是通过LocadModule控制的
    静态的模块就是把这些静态模块塞到了我们的执行文件
    ls /usr/local/apache2/bin/httpd 里,把他们变成一个模块,可以理解是内核模块


    apache配置文件最后的那个模块LoadModule php5_module modules/libphp5.so
    是上面的./configure --with-apxs2=/usr/local/apache2/bin/apxs
    这里完成的操作

    ====================================
    /usr/local/apache2/bin/apachectl -l 只查看静态的内核模块
    core.c
    http_core.c
    mod_so.c
    prefork.c 这个是默认的mpm模式,有三种模式,常用的有prefork,worker,event 简单的区别是prefork使用的是 子进程S给我们的客户端提供服务。而worker是由进程和线程来提供服务,进程和线程的区别,进程是互相独立的,两个或者多个进程相互不受影响,线程直接是互相共享进程的资源的。prefork使用的内存多一点,worker少一点,worker支持的并发多一点,event是worker的升级版,支持的并发还要多一点,和worker差不多

    (上面是apaceh默认编译的公共模式,2.0 2.2 默认的是prefork模式,2.4默认是event)


    他的模式可以改
    httpd-2.2.16]# ./configure --help |grep mpm
    --with-mpm=MPM Choose the process model for Apache to use.
    MPM={beos|event|worker|prefork|mpmt_os2}

    ===================================================
    /usr/local/apache2/bin/apachectl -t 改了配置文件后,检测语法也没有错误,然后再重启=============


    vim /usr/local/apache2/conf/httpd.conf
    找到
    <Directory />
    将里面的Deny改为Allow 要不然访问不了
    Allow from all

    </Directory>

    将这里打开
    DocumentRoot "/usr/local/apache2/htdocs"

    找到:
    #ServerName www.example.com:80
    打开
    ServerName localhost:80

    找到:
    AddType application/x-gzip .gz .tgz
    在该行下面添加:
    AddType application/x-httpd-php .php


    找到:
    <IfModule dir_module>
    DirectoryIndex index.html
    </IfModule>

    将该行改为:
    <IfModule dir_module>
    DirectoryIndex index.html index.php 显示默认的主页
    </IfModule>

     


    /usr/local/apache2/bin/apachectl -t 检测一下


    /usr/local/apache2/bin/apachectl restart 重启apache================

    /usr/local/apache2/bin/apachectl graceful 加载配置文件,这个也可以

     

    5. 测试解析php
    直接访问 192.168.11.190
    vim /usr/local/apache2/htdocs/1.php 这个路径是放php文件的地方============
    写入:

    <?php
    echo "hello world!";
    ?>

    保存后,继续测试:
    192.168.11.190/1.php

    或者 curl -x192.168.3.129:80 lshfoids.com/1.php 或者index.html

    <?php

    phpinfo(); 看php的配置文件
    ?>


    加载一下他的配置文件
    ls /usr/local/php/etc
    cd /usr/local/src/php-5.3.28
    ls
    php.ini-production 复制这个文件

    cp php.ini-production /usr/local/php/etc/php.ini

    /usr/local/apache2/bin/apachectl restart 重启一下,然后就可以显示出来了

    ================

    有时候没有web页面,怎么通过命令行去检验和测试php
    cd /usr/loacl/php/
    /usr/local/php/bin/php -m 可以列出他所有加载的模块

    其实apache用的是这个文件 /usr/local/apache2/modules/libphp5.so = /usr/local/php/bin/php
    libphp5.so是apache调用的模块,/bin/php是一个执行文件,其实他们是一个东西,能实现一样的功能


    /usr/local/php/bin/php -i |less 相当于phpinfo()和他看到的一样,
    如果进入到bin下,直接 ./bin/php -i |less

    搜索php的配置文件
    /usr/local/php/bin/php -i |grep -i 'Configuration File' 查一下他的路径
    如果有提示,就改一下他的时间就可以了
    vim /usr/local/php/etc/php.ini
    date.timezone = 'Asia/Chongqing'


    /usr/local/php/etc/php.ini php的配置文件=========

     

    /usr/local/php/bin/php -v 看他的版本


    查看./configure 的时候都加了什么选项 查看php的
    ./bin/php -i |head


    查看apache编译过的选项
    cat /usr/local/apache2/build/config.nice

    mysql编译参数:
    # cat /usr/local/mysql/bin/mysqlbug|grep configure


    ldd 是查询这个文件都依赖于哪些库
    ldd /usr/local/apache2/modules/libphp5.so


    ==============查看nginx,apache,php,mysql的编译参数

    nginx编译参数:
    #/usr/local/nginx/sbin/nginx -V
    2、apache编译参数:
    # cat /usr/local/apache/build/config.nice
    3、php编译参数:
    # /usr/local/php/bin/php -i |grep configure
    4、mysql编译参数:
    # cat /usr/local/mysql/bin/mysqlbug|grep configure

    ================================================================================================

    第二部分--apache的配置

    1. 下载discuz!
    mkdir /data/www
    cd /data/www
    mv /root/Discuz_X3.2_SC_GBK.zip .
    wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_GBK.zip
    unzip Discuz_X3.2_SC_GBK.zip

    rm -rf readme/ utility/ 删除这两个目录
    mv upload/* .
    rm -rf upload
    mv Discuz_X3.2_SC_GBK.zip /root/

    echo $PATH
    ln -s /usr/local/apache2/bin/apachectl /usr/bin/ 做一个软连接,或者加入到系统环境变量中去 /etc/rc.local=========

    apachectl -t

    apachectl restart

     

     

    2. 配置第一个虚拟主机
    vim /usr/local/apache2/conf/httpd.conf

    打开下面这行
    #Include conf/extra/httpd-vhosts.conf

    vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

    加入如下配置:
    <VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.123.com #自定义的
    </VirtualHost>


    apachectl -t
    apachectl graceful 将配置文件重新加载

    curl -x127.0.0.1:80 www.111.com 什么都没有输出,测试成功了
    curl -x127.0.0.1:80 www.111.com -I 检测状态码302,下面显示是install

    按下ctrl+r 就是搜索命令历史,输入命令自动就找到了====

    安装discuz
    测试一下,在本地hosts加入 192.168.3.129 www.111.com 可以ping一下
    在浏览器打开www.111.com 显示discuz的安装页面
    同意安装会提示目录不可写,需要改一下所属主组
    看apache是属于哪个用户的ps aux |grep httpd
    chown -R daemon data config uc_server/data uc_client/data
    这时刷新一下安装页面就可以了

    ===============加入环境变量================
    PATH=$PATH:/usr/local/mysql/bin
    或者
    vim /etc/profile.d/
    vim /etc/profile.d/path.sh
    里面加入
    export PATH=$PATH:/usr/local/mysql/bin

    然后
    source /etc/profile
    echo $PATH

    然后输入mysql就可以进入到mysql的命令行了


    3. 然后配置mysql,给Discuz!增加一个账户
    ]#mysqladmin -uroot password '123456'
    ]#mysql -uroot -p123456 这样子登陆mysql
    给mysql root账户设置密码,然后命令行进入mysql,创建新的库,并创建一个新的帐号对该库有所有权限

    > create database discuz;
    > grant all on discuz.* to 'aming'@'localhost' identified by 'aming123';
    > quit

    .*是所有的表,all是所有的权限

    验证登陆数据库用户
    mysql -uaming -paming123

    继续安装Discuz!
    安装成功

    =================


    5. 为某个虚拟主机配置用户认证,打开www.111.com/admin.php 需要认证(给后台管理中心配置用户验证)
    http://www.lishiming.net/thread-554-1-1.html


    vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
    虚拟主机配置文件中,找到虚拟配置的地方,<VirtualHost>
    在里面加入
    <Directory /data/www>
    AllowOverride AuthConfig
    </Directory>


    保存后,然后
    创建apache的验证用户
    /usr/local/apache2/bin/htpasswd -c /data/.htpasswd aming #/data/.htpasswd是密码文件

    cat /data/.htpasswd

    #第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数
    增加第二个用户的时候,就不要加-c了,因为-c是创建的意思,如果加上会把这个文件重写。

    /usr/local/apache2/bin/htpasswd /data/.htpasswd abiao 第二次创建用户

    m 是用md5加密,如果你想修改密码,可以如下

    /usr/local/apache2/bin/htpasswd -m /data/.htpasswd test2
    重启apache,即可。


    vim /usr/local/apache2/conf/extra/httpd-vhosts.conf然后继续在虚拟配置文件中加入
    <Directory /data/www/admin.php>
    AllowOverride AuthConfig #将要进行用户认证
    AuthName "自定义的" #认证的名字
    AuthType Basic
    AuthUserFile /data/.htpasswd # 这里的/data/.htpasswd你可以随便写一个路径或名字,没有限制
    require valid-user #需要这些可用的用户
    </Directory >

    apachectl -t
    apachectl graceful

     

     

    6. 配置域名跳转
    http://www.lishiming.net/thread-603-1-1.html


    在虚拟配置文件中加入
    ServerAlias www.222.com
    然后在本地电脑hosts中解析一下就可以访问了,结论:我们的网站,任何一个域名绑定到你的ip,都可以访问你的虚拟主机

    <VirtualHost *:80>
    DocumentRoot "/data/www"
    ServerName www.111.com
    ServerAlias www.222.com

    <IfModule mod_rewrite.c>
    #需求:要把访问域名 www.222.com 的域名转发到 www.111.com 上
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^www.222.com$

    RewriteRule ^/(.*)$ http://www.111.com/$1 [R=301,L]

    </IfModule>

    </VirtualHost>

    curl -xlocalhost:80 www.111.com -I
    测试 curl -xlocalhost:80 www.222.com/1212 -I


    如果是多个域名重定向到一个域名
    DocumentRoot "/data/www"
    ServerName www.111.com
    ServerAlias www.222.com 888.com 666.com
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^www.222.com [OR]
    RewriteCond %{HTTP_HOST} ^888.com [OR]
    RewriteCond %{HTTP_HOST} ^666.com$
    RewriteRule ^(.*)$ http://www.111.com/$1 [R=301,L]
    </IfModule>

     

    ==========
    ss -an |grep -ci esta


    7. 配置apache的访问日志
    首先打开
    vim /usr/local/apache2/conf/httpd.conf 主配置文件
    找到下面这行,复制粘贴在下面,根据需求改一下
    LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
    改为
    LogFormat "%h %u "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" biao

    然后在虚拟主机配置文件中打开vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
    下面的
    CustomLog "/tmp/apache2.log" biao

    然后访问查看一下日志 tail -f /tmp/apache2.log

    ================================


    去掉图片日志
    在虚拟主机配置#ErrorLog "logs/dummy-host.example.com-error_log"下面加入

    SetEnvIf Request_URI ".*.gif$" image-request
    SetEnvIf Request_URI ".*.jpg$" image-request
    SetEnvIf Request_URI ".*.png$" image-request
    SetEnvIf Request_URI ".*.bmp$" image-request
    SetEnvIf Request_URI ".*.swf$" image-request
    SetEnvIf Request_URI ".*.js$" image-request
    SetEnvIf Request_URI ".*.css$" image-request

    然后把CustomLog "/tmp/apache2.log" biao
    改成
    CustomLog "/tmp/apache2.log" biao env=!image-request

     


    日志切割
    在虚拟主机配置改这里
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /tmp/access_%Y%m%d.log 86400" biao env=!image-request

    访问测试
    www]# ls /tmp/
    access_20150701.log

     

    参考资料:
    使apache的日志文件里不记录图片文件 http://www.lishiming.net/thread-561-1-1.html
    apache 日志中记录代理IP以及真实客户端IP http://www.lishiming.net/thread-960-1-1.html
    apache只记录指定URI的日志 http://www.lishiming.net/thread-981-1-1.html
    apache日志记录客户端请求的域名 http://www.lishiming.net/thread-1037-1-1.html
    apache 日志切割问题 http://www.lishiming.net/thread-566-1-1.html


    8. 配置静态文件缓存
    http://www.lishiming.net/thread-912-1-1.html

    按下f12 可以看到那些静态文件
    下次访问就不用从服务器里面取,就是保存在浏览器上,访问用到直接拿出来用

    在虚拟主机配置改这里加入
    <IfModule mod_expires.c>
    ExpiresActive on
    ExpiresByType image/gif "access plus 1 days"
    ExpiresByType image/jpeg "access plus 24 hours"
    ExpiresByType image/png "access plus 24 hours"
    ExpiresByType text/css "now plus 2 hour"
    ExpiresByType application/x-javascript "now plus 2 hours"
    ExpiresByType application/x-shockwave-flash "now plus 2 hours"
    ExpiresDefault "now plus 0 min"
    </IfModule>

    按下f12 刷新一下,可以看到文件有304 说明这个文件缓存过的。

    查看图片的过期缓存
    curl -I 'http://www.111.com/static/image/common/logo.png'

    Cache-Control: max-age=86400

    86400/3600/24=1天,这个可以设置

    =============================================================================================
    第三部分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]

    这样就不再循环了。

    ==================================================================================================

     

    第四部分 -- mysql相关

    1. 忘记root密码
    http://www.lishiming.net/thread-252-1-1.html

    进入mysql
    which mysql
    /usr/local/mysql/bin/mysql 没有设置密码之前可以这样子打开mysql

    登录/usr/local/mysql/bin/mysql -uroot -p123456

    如果忘记root密码或其他用户密码,不要急,按下面操作即可。
    1. 编辑mysql主配置文件 my.cnf
    vim /etc/my.cnf
    在[mysqld]字段下添加参数
    skip-grant 不需要授权
    2. 重启数据库服务
    service mysqld restart
    3. 这样就可以进入数据库不用授权了
    mysql -uroot

    4. 修改相应用户密码
    use mysql;
    update user set password=password('aminglinux') where user='root';

    flush privileges;
    5. 修改/etc/my.cnf 去掉 skip-grant , 重启mysql服务
    重启
    /etc/init.d/mysqld restart

    登录/usr/local/mysql/bin/mysql -uroot -paminglinux

    看user表
    use mysql;
    select * from userG;


    =============
    2.
    skip-name-resolve(禁止解析域名)
    skip-innodb (是mysql的引擎)

    vim /etc/my.cnf 在配置里面加上上面两个,然后在/data/mysql 有几个文件会消失

    3. 配置慢查询日志
    #log_slow_queries = /path/to/slow_queries
    #long_query_time = 1

    查看配置文件,默认在下面文件找
    vim /etc/init.d/mysqld 进去查找conf=/etc/my.cnf

    4. innodb与myisam 常用mysql引擎,总结一下
    http://www.lishiming.net/thread-97-1-1.html

    5. mysql配置调优
    http://www.lishiming.net/thread-5758-1-1.html

    6. mysql常用操作
    mysql -uroot -paminglinux
    或者 mysql -uroot -h127.0.0.1 -paminglinux
    mysql -uroot -h192.168.11.190 -P3306 -paminglinux

    mysql -uroot -S /tmp/mysql.sock -paminglinux 可以用sock去通讯,只可以在本地用

    查看都有哪些库 show databases;
    调用系统的命令 system ls
    查看某个库的表 use db; show tables;
    查看表的字段结构 desc tb;
    查看建表语句 show create table tbG; G显示比较有规则一点

    当前是哪个用户 select user();
    当前库 select database();
    创建库 create database db1; mysql -uroot -paminglinux -e "create database discuz2"
    创建表 create table t1 (`id` int(4), `name` char(40));
    insert into t1 values(1, 'aming');
    insert into t1 (`id`) values(2); 插入单个字段
    select * from t1;

    查看数据库版本 select version();
    查看mysql状态 show status;
    修改mysql参数 show variables like 'max_connect%'; set global max_connect_errors = 1000;
    查看mysql队列 show processlist; ===============

    grant all on *.* to 'root'@'10.0.2.100' identified by '123456'; *.*代表所有的库和表都授权

    创建普通用户并授权 grant all on *.* to user1 identified by '123456';
    grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222';
    flush privileges; 刷新一下磁盘
    grant all on db1.* to 'user3'@'%' identified by '231222';

    更改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;
    查询 select count(*) from mysql.user; select * from mysql.db; select * from mysql.db where host like '10.0.%';

    更新 update db1.t1 set name='aaa' where id=1;
    删除表字段 delete from t1 where id=3;
    清空表的数据 truncate table db1.t1;
    删除表 drop table db1.t1;
    删除数据库 drop database db1;
    修复表 repair table tb1 [use frm];
    show processlist ; 看看任务都有哪些 show full processlist ;
    show variables like '%timeout%';

    在配置文件里面加上,两个必须同时用从可以
    interactive_timeout = 10
    wait_timeout=10

    如果更改mysql的配置文件my.conf 就需要重启mysql,现在不需要重启就可以生效的方法(不是全局,全局需要写入到配置文件里面)
    set global interactive_timeout = 10;

    把重启的服务放到系统的环境 /etc/rc.local 下面,就可以开机自动生效=========
    /usr/local/apache2/bin/apachectl start

    查看帖子内容的表
    select * from pre_forum_postG;

    搜索帖子
    select * from pre_forum_post where subject like '%sjs%';


    7. mysql备份与恢复
    备份数据库 mysqldump -uroot -paminglinux db >1.sql
    恢复 mysql -uroot -paminglinux db <1.sql

     

    mysql -uroot -paminglinux -e "create database discuz2"


    备份时指定字符集 mysqldump -uroot -paminglinux --default-character-set=utf8 db >1.sql
    只备份表结构 mysqldump -uroot -paminglinux --default-character-set=utf8 -d db >1.sql
    恢复指定字符集 mysql -uroot -paminglinux --default-character-set=utf8 db < 1.sql
    只备份一个表 mysqldump -uroot -paminglinux db tb1 > 2.sql

    8. 一台mysql服务器启动多个端口
    http://www.lishiming.net/thread-63-1-1.html

    http://www.aminglinux.com/bbs/forum.php?mod=viewthread&tid=6509&highlight=phpmyadmin

    安装mysqlamin 管理平台

     

     

     

     

     

     

     

     

  • 相关阅读:
    selenium又一小坑 无法用XPATH直接获取属性值 需要使用.get_attribute(“href”)
    seleium 之 EC 的用法
    用筛选法求100以内的素数(筛选法!!!)
    gets scanf getchar的用法
    P5728 【深基5.例5】旗鼓相当的对手
    访问那个地址上的变量 *
    素数表
    求素数
    求符合给定条件的整数集(c语言mooc 6.0 )
    C#理论学习
  • 原文地址:https://www.cnblogs.com/chenshoubiao/p/4617394.html
Copyright © 2011-2022 走看看