LAMP:
a:apache(httpd)
m:mysql,mariadb
p:php,jsp
WEB资源类型:
静态资源:原始形式与响应结果一致;
动态资源:原始形式通常是程序文件(某种编程语言开发的程序文件),需要运行后将运行生成的结果呈现给用户;
客户端技术:js
服务端技术:php, jsp, …
CGI:Common Gateway Interface
CIG是一种协议,定义了客户端(httpd)与服务端(特定的应用程序服务进程)交换数据的一种规范;
服务器端技术框架:
web server:httpd, …
application server:php, perl, python, ruby, java(jsp), …
data server:
SQL:Oracle, SQL Server, MySQL, PostgreSQL, SQLite, …
NoSQL:
K/V
Document
Column
Graph
开源领域:
httpd+php+mysql: amp
httpd+jsp+mysql: amt
jsp:tomcat, resin, jetty, websphere, weblogic, …
php编程语言,基于此语言存在很多开源应用程序;嵌入式编程语言,可直接嵌入至html文档中,而非由php代码生成html标签;
wordpress, …
httpd:接受用户的web请求,静态资源则直接响应,动态资源为php脚本,对此类资源的请求将交由php来运行
php:运行php程序
MariaDB:数据管理系统
http与php结合的方式:
CGI
FastCGI
modules(把php编译成为httpd的模块)
MPM:
prefork;libphp5.so
event,worker,libphp5-zts.so
安装操作
CentOS 7:
# yum install php php-mysql mariadb-server httpd
CentOS 6:
# yum install php php-mysql mysql-server httpd
测试页:
phpinfo.php
<?php
php code;
…
?>
httpd+php:
module
httpd的MPM分两类:
进程式:prefork
线程式:worker, event
CGI:
FastCGI: fcgi
httpd+fcgi(module)
php-fpm (server)
部署应用:
discuzX, phpMyAdmin
MySQL:
C/S
Server: mysqld_safe, 3306/tcp
Client: mysql
mysql [OPTIONS]
-hSERVER
-uUSERNAME
-pPASSWORD
mysql> 提示符下的可用命令
客户端命令:
help可获取命令列表
\?
服务端命令:通过mysql协议发往服务端运行,并收取其响应结果;
此类命令都必须有命令结束符;通常可称为SQL语句;
DDL:Data Defination language
CREATE, ALTER, DROP
DML:Data Manipulating language
INSERT, DELETE, SELECT, UPDATE
grant/revoke
授权命令:
GRANT ALL [PRIVILEGES] ON db.tbl TO 'username'@'host' IDENTIFIED BY 'password';
db.tbl:
db:数据名字,可用*通配;
tbl:表名称,可用*通配;
wpdb.*:wpdb数据库的所有表;
*.*:所有库的所有表;
wpdb.users:wpdb库的users表;
username@host:
username:用户名,字符串;
host:用户可通过哪些客户端主机连接当前mysql server;可使用通配符;
%:任意长度的任意字符;
_:任意单个字符;
dzuser@'10.1.%.%'
配置文件:ini风格的配置文件
/etc/my.cnf, /etc/my.cnf.d/*.cnf
[mysqld]
skip_name_resolve = ON
innodb_file_per_table = ON
首次启动时,配置安全选项:
mysql_secure_installation
php测试代码
<?php
phpinfo();
?>
php连接mysql的测试代码:
<?php
$conn=mysql_connect('172.0.0.1','testuser','passwd');
if($conn)
echo "ok";
else
echo "fail";
?>
快速部署amp
Centos 7:
Modules: (1)程序包:httpd,php,php-mysql,mariadb-server
FastCGI: (2)程序包:httpd,php-fpm,php-mysql,mariadb-server
Centos 6:
httpd,php,php-mysql,mysql-server
php:
脚本语言解释器
配置文件: /etc/php.ini,/etc/php.d/*.ini
配置文件在php解释器启动时被读取,因此,对配置文件的修改如何生效?
Modules : 重启httpd服务
FastCGI : 重启php-fpm服务
ini:
[foo]:Section Header
directive=value
注释符:较新的版本中,已经完全使用;进行注释
# : 纯粹的注释信息
; : 用于注释可启用的directive
php.ini 的核心配置选项文档: http://php.net/manual/zh/ini.core.php
php.ini 配置选项列表: http://php.net/manual/zh/ini.list.php
mariadb(mysql):
数据模型:层次模型,网状模型,关系模型
关系模型:
二维关系:
表:row,column
索引:index
视图:view
SQL接口:Structured Query Language
类似于OS的shell接口,也提供了编程功能;
ANSI : SQL标准,SQL-86,SQL-03
DDL : Data Defined Language
CREATE,ALTER,DROP
DML : Data Manapulating Language
INSERT,DELETE,UPDATE,SELECT
编程接口:选择,循环
SQL代码:
存储过程: procedure
存储函数: function
触发器: trigger
事件调度器: event scheduler
例程: routine
用户和权限:
用户:用户名和密码
权限:管理类,数据库,表,字段级别
DBMS : DataBase Manager System
RDBMS : Relational
MySql : 单进程,多线程
用户连接:通过线程来实现的
线程池:
MYSQL操作:
mysql -h127.0.0.1 -uroot -proot
GRANT ALL ON ultrax.* TO 'dzuser'@'127.0.0.1' IDENTIFIED BY 'dzpass';
GRANT ALL ON ultrax.* TO 'dzuser'@'localhost' IDENTIFIED BY 'dzpass';
CREATE DATABASE ultrax;
更改root密码:
use mysql
UPDATE user SET password=PASSWORD('root') WHERE user='root';
FLUSH PRIVILEGES;
练习:分别使用CentOS 7和CentOS 6实现以下任务
(1) 配置三个基于名称的虚拟主机;
(a) discuzX
(b) wordpress
(c) https: phpMyAdmin
(2) 对discuzX的主页做压测;
分别给出并发10, 100, 200, 500等每秒的响应数;
Centos 7:
在 /etc/httpd/conf.d/ 目录下创建一个虚拟主机配置文件
<VirtualHost *:80>
ServerName dis.nineven.com
DocumentRoot /web/apps/dis
<Directory /web/apps/dis >
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName wp.nineven.com
DocumentRoot /web/apps/wp
<Directory /web/apps/wp >
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
自签CA证书
在http服务器上创建key
将httpd.scr 传到CA服务器去签证
修改ssl配置文件
vim /etc/httpd/conf.d/ssl.conf
创建对应的目录
然后开始安装dis论坛
安装wp的过程和这一样,先创建数据库和用户,然后安装
centos6 的安装过程类似