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
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
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.conf,mysqld下的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是共享表空间100个G。表的两个处理方式,这个可以设置的。
一定要熟练,脱口而出,不能会但是不熟练