LAMP(1)

PHP

php解释器

配置文件:/etc/php.ini,
/etc/php.d/*.ini

配置文件(php.ini)在PHP启动时被读取。对于服务器模块版本的PHP,仅在web服务器启动时读取一次。

对于CGI和CLI
版本,每次调用都会读取。

ini:

[Foo]:
Secion Header

directive
= value

; 分号 : 注释符;

php.ini核心配置选项:http://php.net/manual/zh/ini.core.php

php.ini配置选项列表:http://php.net/manual/zh/ini.list.php

mariadb(mysql):

数据结构模型:层次模型、网状结构、关系模型

关系模型:

二维关系:row,
column

数据库管理系统:DBMS

关系:Relational,RDBMS

补充材料:RDMBS设计范式基础概念(了解)

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
 
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。
在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。
 
(1)第一范式(1NF)
 
        所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。
 
       说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。
换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。
 
(2)第二范式(2NF)
 
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。
选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。
 
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。
 
(3)第三范式(3NF)
 
第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。
         简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

事务:多个(写)操作被当作一个整体对待

ACID 数据库事务正确执行的四个基本要素
:

A:
原子性;

C:一致性;

I:
隔离性;

D:持久性;

SQL:结构化查询语言

数据存储协议:为应用层协议,C/S模式

S: server ,监听与套接字,接收并处理客户端的应用请求

C: 
Client  ,  分为 程序接口(CLI  ,  GUI),应用编程接口( ODBC )

数据库基础概念

约束:  constraint,向数据表提供的数据要遵守的限制

主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL; 一个表只能有一个主键
惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL;可以有多个唯一键
外键:一个表中的某字段可填入数据取决于另一个表的主键已有的数据;
检查性:MYSQL 还不能支持此约束

索引:   将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储;

关系运算: (如何将两张表连起来,或者在一张表中抽取数据子集)

选择:挑选出符合条件的行(部分)

投影:   挑选出需要的字段(列)

连接

数据抽象

物理层(最底层): 决定数据的存储格式,即RDBMS在磁盘上如何组织文件
逻辑层:   描述DB存储什么数据,以及数据间存在什么样的关系
视图层(最高层):  描述DB中的部分数据

MariaDB的特性:

插件式存储引擎:存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择;

存储引擎也称之为“表类型”

(1)
更多的存储的存储引擎

MyISAM
--> Aria,

InnoDB
--> XtraDB

(2)
诸多扩展和新特性

(3)
提供了较多测试组件

(4)
truly open source

安装和使用MariaDB    (本次试验在MageCentos3上做的)

CentOS
7直接提供;

CentOS
6:

通用二进制格式安装过程:

安装过程:

1.停止mysql服务:]# service mysqld stop

2.删除以前的mysql  ~]# rpm -e mysql-server

3.在教室 进入ftp服务器下载

]#   lftps
cd Source/6.x86_64/
ls
cd mariadb/
ls
mget mariadb-5.5.43-linux-x86_64.tar.gz   PS:x86或x86_64 如果有这些,证明是2进制包,直接解压即可使用
Bye

注意:本次实验用的包是从网上下的地址是 http://ftp.vim.org/db/mariadb/mariadb-5.5.43/bintar-linux-x86_64/    之后通过xshell从windows传到linux上。

4.在根目录下查看 ]# ls
-ls    该压缩包大概212M

5.创建用户

            ]#  groupadd -r mysql

6.展开数据包

]#   tar xf
mariad-5.5.43-linux-x86_64.tar.gz -C /usr/local
之后查看那下  
]# cd /usr/local/
]# ll

7.创建一个连接

]#ln -sv mariadb-5.5.43-linux-x86_64 mysql
之后查看那下  
]# ll
]#cd mysql/
]#ll
]# chown -R root:mysql ./*   把mysql目录下的所有文件的属组改为mysql
]#ll

8.创建一个新分区(回顾以前内容)

~]#fdisk /dev/sda
Command
(m for help): p
Command
(m for help): n
p
Partition
number (1-4): 3
First
cylinder (7859-13054, default 7859):
Last
cylinder, +cylinders or +size{K,M,G} (7859-13054, default 13054): +20G
Command
(m for help): w

多执行几次这个命令    ~]# partx -a /dev/sda

~]#fdisk /dev/sda
Command
(m for help): t
Partition
number (1-4): 3
Hex
code (type L to list codes): 8e
Command
(m for help): w
多执行几次这个命令    ~]# partx -a /dev/sda

~]#pvcreate /dev/sda3
~]#vgcreate myvg /dev/sda3
~]#lvcreate -L 10G -n mydata myvg

安装xfsprogs
]#yum install xfsprogs
~]#modprobe xfs
~]#modinfo xfs
 
格式化
~]#mkfs.xfs /dev/myvg/mydata

实现开机自动挂载
~]#
mkdir /mydata
编辑 ~]# vim
/etc/fstab
在文件尾部加入这一行   /dev/myvg/mydata        /mydata                 xfs     defaults        0 0
~]#mount -a
输入mount命令会有这一行  /dev/mapper/myvg-mydata on /mydata type  xfs (rw)

]#mkdir /mydata/data
]#chown mysql:mysql data

]#cd /usr/local/mysql/
在/usr/local/mysql/scripts/  下有一个 mysql_install_db脚本
使用  ]# scripts/mysql_install_db --help 查看帮助信息

设置初始化的数据安装目录
]#scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

设置mysql服务脚本
在/usr/local/mysql目录下  
]# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld
]#chkconfig --add mysqld
]#chkconfig --list mysqld
出现如下结果,则mysql可开机自启动
    mysqld        
        0:off        1:off        2:on        3:on        4:on        5:on        6:off

9.准备配置文件

]#mkdir /etc/mysql
在/usr/local/mysql目录下  
]# cp support-files/my-large.cnf   /etc/mysql/my.cnf

thread_concurrency 表示并行线程数,是CPU核心数*2,下图是本人所用虚拟机MaGeCentos3的处理器核心数

]# vim /etc/mysql//my.cnf  后,做出如下修改

thread_concurrency= 2
datadir= /mydata/data
innodb_file_per_table= on
skip_name_resolve= on
之后重启服务   
]# service mysqld start
使用命令]# ss -tnl  查看3306端口被启用

MariaDB的程序组成:

客户端:mysql:CLI交互式客户端程序;mysqldump,
mysqladmin...

服务器端:mysqld_safe、mysqld、mysqld_multi

服务器监听的两种socket地址:

ip
socket: 监听在tcp的3306端口,支持远程通信

unix
sock: 监听在sock文件上(/tmp/mysql.sock, /var/lib/mysql/mysql.sock),仅支持本地通信;server:
localhost, 127.0.0.1

命令行交互式客户端程序:mysql

mysql

-uUSERNAME:
用户名;默认为root

-hHOST:
服务器主机; 默认为localhost

-pPASSWORD:用户的密码;  默认为空密码  (-p后面一般不输入密码,直接回车)

注意: mysql用户账号由两部分组成:‘USERNAME‘@‘HOST‘;其中HOST用于限制此用户可通过哪些主机远程连接mysql服务

%: 匹配任意长度的任意字符;172.16.0.0/16, 172.16.%.%

_: 匹配任意单个字符

登陆例子:  在Magecentos3 密码是mageedu
[[email protected]~]# mysql -uroot -p
Enter password:

命令

客户端命令:本地执行

mysql>
help

每个命令都完整形式和简写格式;status,
\s

服务端命令:通过mysql协议发往服务器执行并取回结果

每个命令都必须命令结束符号;默认为分号;

如何安全的初始化:

第一步:

第二步:设置密码,密码为mageedu

第三步:删除匿名用户

第四步:禁止root用户远程登录 (此次未禁止)

此时,再进入数据库可以看到匿名用户已经被删除,并加了密码

mysql> use mysql
Database  changed
mysql>select User,Host,Password FROM user;
+------+-----------+-------------------------------------------+
|
User | Host      | Password                                  |
+------+-----------+-------------------------------------------+
|
root | localhost | *9A94EE7D14C10908118B62D2DA88E6932E11E438 |
|
root | bogon     | *9A94EE7D14C10908118B62D2DA88E6932E11E438 |
|
root | 127.0.0.1 | *9A94EE7D14C10908118B62D2DA88E6932E11E438 |
|
root | ::1       | *9A94EE7D14C10908118B62D2DA88E6932E11E438 |
+------+-----------+-------------------------------------------+

命令:

客户端命令:本地执行

mysql>
help

自加:help命令查询所有可以执行的客户端命令

服务端命令:通过mysql协议发往服务器执行并取回结果;每个命令都必须命令结束符号;默认为分号;

自加:SELECT VERSION();查看MariaDB的版本号
mysql>SELECT VERSION();
+--------------------+
|VERSION()          |
+--------------------+
|5.5.43-MariaDB-log |
+--------------------+
1 row in set (0.00 sec)

关系型数据库常见组件:

数据库:database

表:table

行:row

列:column

索引:index

视图:view

用户:user

权限:privilege

存储过程:procedure

存储函数:function

触发器:trigger

事件调度器:event
scheduler

SQL语句:分为:DDL:数据定义语言(CREATE, DROP, ALTER);DML:数据操作语言(INSERT, DELETE, UPDATE, SELECT)。另外两个命令 GRANT,
REVOKE

数据库:

创建数据库    CREATE DATABASE|SCHEMA [IF NOT EXISTS]
‘DB_NAME‘;

删除数据库    DROP DATABASE|SCHEMA [IF EXISTS]
‘DB_NAME‘;

自加:注意,mysql没有回收站,一旦删除,数据会从磁盘抹去,无法恢复

在创建数据库语句后面也可以跟上 以下语句:

CHARACTER   SET   ‘character  
set   name‘  | 
COLLATE   ‘collate name‘

查看支持所有字符集:SHOW
CHARACTER SET;

查看支持所有排序规则:SHOW
COLLATIONS;

查看数据库:mysql>
SHOW DATABASES;

表(对于表的操作)

CREATE   TABLE  
tb_name   (字段1  数据类型  修饰符,字段2  数据类型  修饰符 )    ENGINE=‘‘      自加:ENGINE=‘‘是存储引擎

查看所有的引擎:SHOW
ENGINES;

查看表:SHOW
TABLES [FROM db_name]

查看表结构:DESC
[db_name.]tb_name

删除表: DROP TABLE [IF EXISTS] tb_name;    (删除不可逆)

数据类型:

字符型:

定长字符型:CHAR(#),BINARY(#)

变长字符型:VARCHAR(#),

内置类型:

ENUM 枚举类型

SET 集合类型

数值型:

精确数值型

整型:int   分为(tinyint 1byte;smallint 2bytes;mediumint 3bytes;int 4bytes)

十进制:decimal

近似数值型

单精度浮点数:float

双精度浮点数:double

修饰符:

NOT NULL 非空约束

DEFAULT 
VALUE  设定默认值

UNSIGNED 无符号,表示正式

PRIMARY
KEY

UNIQUE
KEY

例子:

自加:创建一个数据库 testdb
mysql> CRETTE DATABASE testdb;
使用该数据库
mysql> use testdb;
创建一张表,第一个字段id整型非空,第二个字段name字符型大小100非空,第三个字段age tinyint类型
mysql> CREATE TABLE tb1 (id int NOT NULL, name VARCHAR(100) NOT
NULL, age tinyint);
查看表
mysql> show tables;
查看所有有权限查看的数据库
mysql> show databases;

自加:创建一张表,名叫student,有3个字段:id无符号整型非空主键,name字符型长度20非空,age无符号tinyint非空

mysql>use testdb
Database changed
mysql>create table student (id int UNSIGNED NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL, age tinyint UNSIGNED);
Query OK, 0 rows affected (0.11 sec)
mysql>DESC student;
+-------+---------------------+------+-----+---------+-------+
|Field | Type                | Null | Key     Default | Extra |
+-------+---------------------+------+-----+---------+-------+
|id    | int(10) unsigned    | NO    | PRI   | NULL    |     |
|name  | varchar(20)         | NO    |       | NULL    |     |
|age   | tinyint(3) unsigned | YES   |        |NULL    |     |
+-------+---------------------+------+-----+---------+-------+
3 rows in set (0.24 sec)

创建另一张表,一次定义两个主键

mysql>create table tb2 (id int UNSIGNED NOT NULL, name VARCHAR(20) NOT NULL,age tinyint UNSIGNED, PRIMARY KEY(id,name));
Query OK, 0 rows affected (0.09 sec)
mysql>DESC tb2;
+-------+---------------------+------+-----+---------+-------+
|Field | Type                | Null | Key  | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
|id    | int(10) unsigned    | NO   | PRI  | NULL    |       |
|name  | varchar(20)         | NO   | PRI  | NULL    |       |
|age   | tinyint(3) unsigned | YES  |       |NULL    |       |
+-------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

weiwan

时间: 2024-10-03 22:43:12

LAMP(1)的相关文章

LAMP详解之lamp(modules)安装

大纲: 1.  LAMP概念 2.  LAMP的原理 3.  LAMP的实现 一.LAMP的概念  LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库(mariadb),Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是

Windows下配置LAMP(WAMP)开发环境

关键词:搭建LAMP(WAMP) 我认为,开发LAMP可视化部分的最好开发环境是Windows,因为我们可以用Dreamweaver来写前台代码. 1.安装MySQL数据库. 我安装的是5.1版,我认为这一版比较经典.下载地址:MySQL5.1下载页面 注意安装路径是    ...../lamp/mysql5 2.安装Apache. 这没什么好说的,我们主要讲这么配置. 注意安装路径是    ...../lamp/Apache2 3.安装PHP. 把压缩包解压到    ...../lamp/ph

hdu 3183 A Magic Lamp(RMQ)

A Magic Lamp                                                                               Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description Kiki likes traveling. One day she finds a magic lamp, u

LAMP(php-fpm)

搭建条件: CentOS 7:lamp (php-fpm): 要求:(1)三者分离与三台主机 (2)一个虚拟主机用于提供phpmyadmin:另一个虚拟主机用于提供wordpress (3)实现xcache功能 主机1 IP:172.18.42.200 主机2 IP:172.18.42.201 主机3 IP:172.18.42.202 一.在主机1上yum安装httpd 1.基于FQDN访问phpmyadmin或wordpress,需要把httpd主配置文件里面的DocumentRoot注释掉

在CentOS6上编译安装实现LAMP(php-modules)+phpMyAdmin安装过程全记录

php与apache协作有三种模式:CGI.modules.FastCGI. 在CGI模式下,用户请求php文件时,apache会启动响应进程,调用php处理器处理请求,然后将结果返回给客户端.用户响应及处理由前端apache服务器完成: 在modules模式下,php解析器作为apache的一个模块,php处理器与web服务器一起运行处理用户请求.用户响应由apache处理,请求处理由apache与php处理器协同完成: 在fastcgi模式下,apache调用proxcy模块,发挥代理作用,

hdu-3183A Magic Lamp(贪心)

题目的意思是: 给你一个大数,然后删减其中的K个数,并且剩下的数还是按原来在的先后次序排列,求所得的那个数最小的那个数. 思路:贪心(要取得数最小,你从左往右选数的时候,选的第一数,就是选后组成数的位权最高的,要一个数最小,位权最高的所对应那位要最小,然后依次是下一位权最小).原来有N个数,删除K个数得最小数可以转化为从左往右选N-K个数所组成的数最小.那么第一个数必须在区间[0,K](数组下标)(存大数的数组首位是从0开始的). 证:选的第一位数如果超过K,假如取的是K+S(K+S<=N-1)

LAMP(6)静态元素过期时间、配置防盗链、访问控制Directory、访问控制FilesMatch

                              静态元素过期时间 静态元素:(图片.js.css) 平时我们在浏览器访问网站的时候,如果里面有这些静态元素,浏览器会帮我们把它们缓存下来,再次访问的时候访问的速度就会快. 缓存下来的静态元素到底缓存多久?这个是可以在服务器配置文件中定义的.(定义静态元素过期时间) 304 状态码表示该文件已经缓存到用户电脑. 定义静态元素的失效日期: 步骤:(针对111.com这台虚拟主机操作) 1.编辑配置文件,添加配置内容; 增加配置 <IfMod

lamp基础之lamp(php-fpm)的实现

大纲: 1. CGI和fastcgi对比分析  2. 用三台主机以fast-cgi的方式实现lamp并安装wordpress 3. 对输出结果的详解 一.CGI和fastcgi对比分析   lamp 安装http和php的结合方式可以分为三种:     1.php作为http的模块     2.以cgi模式结合(极少使用)     3.以fastcgi模式结合 CGI 简介 CGI全称是"通用网关接口"(Common Gateway Interface),它可以让一个客户端,从网页浏览

LAMP(3)--apache配置域名跳转

★需求实现 之前搭建discuz时候使用的域名为www.caoyue111.com 现在我们要求实现访问域名www.hera111.com 时跳转到www.caoyue111.com ★配置步骤 我们只需在相应的虚拟主机中加入以下内容 vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <IfModule mod_rewrite.c>   <== 打开rewrite.c模块(可用apachectl -M查看有无此模块)   Rewrit