一、LAMP简介
LAM(M)P:
L:linux
A:apache (httpd)
M:mysql, mariadb
M:memcached
P:php, perl, python
1.1 CGI介绍
- CGI:Common Gateway Interface
可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准 - 请求流程:
Client -- (http) --> httpd -- (cgi) --> application server (program file) -- (mysql) --> mysql - php:脚本编程语言、嵌入到html中的嵌入式web程序语言
基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)
1.2 LAMP应用示例
示例1:部署分离的LAMP,部署到两台服务器上,php加载xcache模块
服务器1:Apache+php+xcache
yum install httpd php php-mysql ##安装所需软件包
yum -y install php-devel
## 编译安装xcache模块
cd xcache-3.2.0
phpize --clean && phpize
./configure --enable-xcache
make && make install
cp xcache.ini /etc/php.d/
systemctl start httpd ##启动服务
服务器2:MySQL
yum install mariadb-server ##安装所需软件包
systemctl start mariadb ##启动服务
测试:
## 在服务器1上进行
vi /var/www/html/pdo.php
<?php
try {
$user='root';
$pass='000000';
$dbh = new PDO('mysql:host=172.16.77.133;dbname=mysql', $user, $pass);
foreach($dbh->query('SELECT user,host from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
保存,退出
curl localhost/pdo.php ##通过请求连接数据库php文件进行测试,返回结果则表示正常
Array
(
[user] => root
[0] => root
[host] => 127.0.0.1
[1] => 127.0.0.1
)
Array
(
[user] => discuz
[0] => discuz
[host] => 172.16.77.%
[1] => 172.16.77.%
)
Array
(
[user] => wordpress
[0] => wordpress
[host] => 172.16.77.%
[1] => 172.16.77.%
)
Array
(
[user] => root
[0] => root
[host] => ::1
[1] => ::1
)
Array
(
[user] => loguser
[0] => loguser
[host] => localhost
[1] => localhost
)
Array
(
[user] => root
[0] => root
[host] => localhost
[1] => localhost
)
示例2:部署wordpress博客,并实现正常访问登录博客。
服务器1:
tar xvf wordpress-5.0.4-zh_CN.tar.gz -C /var/www/html/
setfacl -Rm u:apache:rwx /var/www/html/wordpress
服务器2:
mysql -uroot -p -e 'create database wordpress'
mysql -uroot -p -e "grant all on wordpress.* to wordpress@'172.16.77.%' identified by 'wordpress';"
访问http://ip地址/wordpress 完成安装
二、日志服务介绍
日志包含历史事件:时间,地点,人物,事件
日志级别:事件的关键性程度,Loglevel
系统日志服务:
sysklogd :CentOS 5之前版本
syslogd: system application 记录应用日志
klogd: linux kernel 记录内核日志
- 事件记录格式:
日期时间 主机 进程[pid]: 事件内容 - C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理
2.1 rsyslog简介
rsyslog特性:CentOS6和7
- 多线程
- UDP, TCP, SSL, TLS, RELP
- MySQL, PGSQL, Oracle实现日志存储
- 强大的过滤器,可实现过滤记录日志信息中任意部分
- 自定义输出格式
facility:设施,从功能或程序上对日志进行归类
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, local0-local7, syslog
Priority 优先级别,从低到高排序
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
2.2 rsyslog配置文件
- RULES配置格式: facility.priority; facility.priority… target
- facility:
*: 所有的facility
facility1,facility2,facility3,...:指定的facility列表 - priority:
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息 - target:
文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程服务器记录
管道: | COMMAND,转发给其它命令处理
示例:收集apache访问日志,并实现图形化展示。
服务器2(MySQL):
mysql -uroot -p -e "grant all on Syslog.* to loguser@'localhost' identified by 'logpass'"
mysql -uroot -p < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql ##导入表结构
服务器1(rsyslog):
yum install rsyslog-mysql
vi /etc/rsyslog.conf ## 配置rsyslog将日志存放mysql
$ModLoad ommysql ##添加内容,加载mysql模块
local6.* :ommysql:localhost,Syslog,loguser,logpass 指定apache进程产生的日志存储到指定的mysql数据库
保存,退出
systemctl restart rsyslog ##重启服务,使更改生效
yum install httpd php php-mysql php-gd ##安装所需软件包
vi /etc/httpd/conf/httpd.conf ##编辑httpd主配置文件,将访问日志定向到本地local6
CustomLog "| /usr/bin/logger -p local6.info" combined
tar xf loganalyzer-4.1.7.tar.gz
cp -a loganalyzer-4.1.7/src /var/www/html/log
cd /var/www/html/log
touch config.php
chmod 666 config.php
systemctl restart httpd.service ##重启服务
访问http://ip地址/log 完成安装进行初始化配置