apache

-t是检查配置文件,跟nginx一样,-k graceful或者reload平滑重启

prefork模式和worker模式 
prefork 使用多个子进程,每个子进程有一个线程,每个进程在某个特定时间内只能维持一个连接
worker 使用多个子进程,每个子进程有多个线程,每个线程在某个特定时间内只能维持一个连接

配置文件:监听端口,发布目录,管理员邮箱,各个模块,目录权限,别名,日志级别,访问类型,日志切割,ServerName,虚拟主机引用

先grep去掉注释和空行

这个文件都是一个模块一个模块,跟html格式差不多

ServerRoot "/usr/local/apache2" //apache服务的目录

Listen 80  //监听端口

LoadModule php5_module        modules/libphp5.so

//引用的模块,加!号是除这个之外

//引用的模块

User daemon

Group daemon


ServerAdmin [email protected]  //服务管理员服务器出错了会发邮件,前提是服务器能发

DocumentRoot "/usr/local/apache2/htdocs"  //发布目录,配虚拟主机的话就不管用了

    Options FollowSymLinks /开启的话是显示目录,网站要禁止浏览,不然别人

    AllowOverride None

    Order deny,allow

    Deny from all

    Options Indexes FollowSymLinks

    AllowOverride None

    Order allow,deny

    Allow from all

    DirectoryIndex index.php index.html /默认引导页

    Order allow,deny

    Deny from all

    Satisfy All

ErrorLog "logs/error_log"   //错误日志

LogLevel warn    //错误级别,info debug error warn

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

    LogFormat "%h %l %u %t \"%r\" %>s %b" common

   

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

   

    CustomLog "logs/access_log" common

  //别名访问,类似重定向,访问/cgi-bin就转到apache2/cgi-bin/

    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

   //cgi目录的权限

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

DefaultType text/plain

    RequestHeader unset Proxy early

    TypesConfig conf/mime.types

    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz

SSLRandomSeed startup builtin

SSLRandomSeed connect builtin

AddType     application/x-httpd-php .php

然后访问主机网页 看有没有测试页 
hostname看主机名 vim /etc/sysconfig/network/ 永久修改


虚拟主机在conf/extra/httpd-vhosts.conf


NameVirtualHost 127.0.0.1:80   //访问80端口的都来找vhosts

NameVirtualHost 10.154.9.199(内网IP):80

    ServerAdmin [email protected]   //填自己邮箱

    DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"   //发布目录

    ServerName dummy-host.example.com   // 网站域名

    ServerAlias www.dummy-host.example.com  //域名的别名,可以写泛域名

    ErrorLog "logs/dummy-host.example.com-error_log"

    CustomLog "logs/dummy-host.example.com-access_log" common

    

    rewrite  /  http://www.yinxingyouyou.cn/test.html  [L]


    AllowOverride All //设置为 None 时, .htaccess 文件将被完全忽略。指令设置为 All 时,所有具有 “.htaccess” 作用域将生效.

    Options -Indexes FollowSymLinks // 显示目录

    Order allow,deny //部分可以访问,余下都不能访问,默认是都不能访问

    Allow from all  //允许所有访问

  


然后在主配置文件里引用虚拟主机配置文件,加入

InClude conf/extra/*.conf

配置完了/usr/local/apache2/bin/apachectl -t 检查下

然后graceful重启


虚拟主机主要是为了多个公司的子域名放文件,或

ServerAlias 跟两个网址 可以设置网址别名


vim extra/httpd-pmp.conf

编译时--with-mpm=worker或者prefork

 //预派生,提前生成进程

    StartServers          5  //初始进程

    MinSpareServers       5  //最小空闲进程

    MaxSpareServers      10 //最大空闲进程

    MaxClients          4096 //最大连接数,4000已经很高了,跟带宽有直接关联的,就一千兆,而且一个公司每秒4千一天都多少了

    MaxRequestsPerChild   10000 请求达到最大就光荣牺牲,换下个进程

 ServerLimit 1000    //最大并发,终极限制,Maxclient只能比这个小


ThreadsPerChild      25  多了个每个进程最多线程,不能超过最大连接数

 MaxRequestsPerChild   0 每个进程最大请求数


apache两个最核心,虚拟主机和rewrite


dir模块,设置默认首页的,可以改成你自己的文件名字


rewrite规则

编译时--enable rewrite   --enable-so可以动态编译模块

开启引擎方式,在主配置文件加

RewriteEngine on

RewriteCond %{HTTP_HOST} ^yinxingyouyou.cn [NC]

RewriteRule ^/(.*) http://www.yinxingyouyou.com/ [L]


·压测命令:ab,apache自带的,httpd-tools

ab -c  100 -n 1000 http://localhost

其中10表示并发,100表示请求数

测出来后

request per second 是每秒可以处理的请求数

mysq


备份系统

tar备份系统 文档240页有脚本 http://blog.csdn.net/su_linux/article/details/6425777

rsync

就备份/boot /etc /data,不用全备

负载均衡也是一种备份



mysqldump -uroot(哪个用户干的,要有权限) -p(可能没有密码) jfedu(哪个库--all-databases是所有库) >表名20160219.sql(备份成今天日期)

mysqldump -uroot -p jfedu >./jfweb20160219.sql

把表删了drop ,然后

数据库导入


进入数据库,mysql>source /tmp.wps.sql,必须选好库之后再导入


#mysql  databasename接文件绝对路径;必须选库

然后show tables看下是不是导入的原来的数据;


把数据库删了,

mysql -uroot -p jfedu<./20160219.sql

新建库jfedu,再执行。进去看看数据在不在

导出表mysqldump -uroot -p jfedu test_001 >test_001.sql

导出数据库结构的

 

忘记数据库密码(密码破解)

密码是存在mysql这个库的user表里,去看下

>select HOST,user,Password from user;

先把数据库停了,stop,跳过表的权限

然后/usr/bin/mysqld_safe --user=mysql --skip-grant-tables &

然后ps -ef |grep mysql看有个叫sql_skip-grant-tables

然后mysql登进去进mysql这个库show tables;

Update user set password=password(1) where user=root;

重启数据库,这次是常规启动

ps -ef |grep mysql 没有--skip-grant-tabes

Mysql -uroot -p1


 

光说不练假把式,一定要多练,做到能脱口而出

navicat for mysql远程工具

下载后授权本机IP,实验能不能登上去

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

 

配置文件里/etc/my.confmysqld下的datadir是数据存放目录,可换成/data/mysql,mysql就是存放数据的软件,库都没了还搞啥

bin-log是存放所有操作的语句,也就是操作记录,有这个日志数据库丢了也能回来,在/var/lib/mysql下 如果没有看下你my.conf里是不是没有log-bin=mysql-bin

有时候实在起不来一个是看屏幕上的提示,一个是去tail -fn 100 


/var/log/mysqld.log

#mysqlbinlog mysql-bin.000010 |more 不行的话把配置文件里的新增删掉


日常优化参数

Max_connections - 3000 最大连接数,每秒并发,不可能老连数据库,前面肯定有一级缓存

InnoDB_buffer_pool_size 指定一定的内存缓存热点数据,设成内存80%,系统还要用内存,至少4G

Key_buffer_size也是指定一定的内存缓存热点数据

改表的引擎alter table class6 engine=innodb;



独立表空间(每个表保存成一个独立文件),在mysql目录下有三个frm、MYD、MYI,共享表空间(所有的表保存在一个文件里)ibdata是共享表空间100G。表的两个处理方式,这个可以设置的。

一定要熟练,脱口而出,不能会但是不熟练