设为首页 收藏本站
查看: 682|回复: 0

LAMP总四部分

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-20 10:51:44 | 显示全部楼层 |阅读模式
  
  第一部分
  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
[iyunv@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 管理平台
  
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-101520-1-1.html 上篇帖子: CentOS下编译安装LAMP开发环境 下篇帖子: ubuntu 搭建lamp
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表