LAMP总四部分

 

第一部分javascript

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

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下并重命名为mysqlcss

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

cd /usr/local/mysql java

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

echo $?linux

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

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

chmod 755 /etc/init.d/mysqld sql

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.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
二、apache编译参数:
# cat /usr/local/apache/build/config.nice
三、php编译参数:
# /usr/local/php/bin/php -i |grep configure
四、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 user\G;


=============
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 tb\G; \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_post\G;

搜索帖子
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 管理平台

相关文章
相关标签/搜索