LAMP:
a:apache
m:mariadb、mysql
p:php,perl,python
LAMMP:memcached
靜態資源:靜態內容,客戶端從服務器獲得的資源的表現形式與源文件相同;
動態資源:通常是程序文件,需要在服務器執行之后,將執行的結果返回給客戶端;
CGI:common gateway interface通用網關接口
fastcgi:快速通用網關接口
httpd+php的結合方式:modules、cgi、fastcgi(fpm):
CentOS 7 安裝LAMP
程序包:httpd、php、php-mysql、mariadb-server
注意:php要求httpd使用prefork MPM
啟動服務:
systemctl start httpd
systemctl start mariadb
CentOS 6安裝LAMP
程序包:httpd、php、php-mysql、mysql-server
啟動服務:
service httpd start
service mysqld start
測試PHP程序執行環境:
<?php
phpinfo();
?>
測試php程序與mysql通信
<?php
$conn=mysql_connect(‘HOST’,’USERNAME’,’PASSWORD’);
if ($conn)
echo “success”;
else
echo “failure”;
mysql_close();
?>
開源博客系統:wordpress
開源論壇系統:dicuz
mysql|mariadb的web GUI:phpmyadmin
php解釋器如何與mariadb交互:
解釋器無需與mariadb交互,那些需要用到數據存儲的程序才需要與數據存儲交互;
存儲系統:
文件系統:文本
SQL:mariadb、oracle、mssql。。。
NoSQL:redis、mongodb、hbase。。。
NewSQL:
PHP加速器:利用opcode
xcache:程序包php-xcache
php解析器:
配置文件:/etc/php.ini、/etc/php.d/*.ini;對于服務器模塊版本而言,僅在web服務器啟動時讀取一次。對于CGI和CLI版本,每次調用都會讀取。
mariadb(mysql):關系型數據庫的一種開源實現;
關系型數據庫(RDBMS):
mysql:mysql、mariadb、percona-server
postgresql:簡稱pgsql——企業版enterprisedb
oracle:
mssql:
事務:多個操作被當作一個整體對待
ACID:
A:原子性
C:一致性
I:隔離性
D:持久性
SQL:結構化查詢語言;
基礎概念:
約束:constraint,向數據表提供的數據要遵守的限制;
(a)主鍵:一個或多個字段的組合,填入的數據必須能在本表中唯一標識本行,必須提供數據,即NOT NULL;一個表只能存在一個;
(b)唯一鍵:一個或多個字段的組合,填入的數據必須在本表中唯一標識本行,允許為NULL;一個表可以存在多個;
(c)外鍵:一個表中的某字段可填入的數據取決于另一個表中的主鍵已有的數據;
(d)檢查性:mysql暫不支持;
索引:將表中的一個或多個字段中的數據復制一份另存,并且需要按特定次序排序存儲;
關系運算:
(a)選擇:挑選出符合條件的行(部分);
(b)投影:挑選出需要的字段;
(c)連接:
數據抽象:
物理層:決定數據的存儲格式,即RDBMS在磁盤上如何組織文件;
邏輯層:描述DB存儲什么數據,以及數據間存在什么樣的關系;
視圖層:描述DB中的部分數據;
安裝mariadb | mysql:
1、源代碼:編譯安裝;
2、二進制格式的程序包:展開至特定路徑,并經過簡單配置后即可使用;
(a)準備數據目錄
(b)配置mariadb
# useradd -r mysql
# tar xf
# ln -sv
# chown -R mysql:mysql
# scripts/mysql_install_db –datadir= ? ?–user=mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysql
# chkconfig –add mysql
(c)準備配置文件
配置格式:類ini格式,為各程序[prog_name]均通過單個配置文件提供配置;
配置文件查找次序:
/etc/my.cnf——>/etc/mysql/my.cnf——-> –default-extra-file= ———> ?~/.my.cnf
# cp ?support-files/my-large.cnf ? /etc/my.cnf
添加如下參數:
datadir=
innodb_file_per_table = on
skip_name_resolve = on
3、程序包管理提供的程序包:rpm包;
mariadb程序組成
client客戶端:
mysql:CLI命令行交互式客戶端程序
mysqldump、mysqladmin
server服務端:
mysqld_safe
mysqld
mysqld_multi
服務器監聽的兩種socket地址:
ip socket:監聽在tcp的3306端口,支持遠程通信;
unix sock:監聽在sock文件上(rpm包安裝的默認路徑/var/lib/mysql/mysql.sock),僅支持本地通信;
命令行交互式客戶端:mysql
mysql [options] db_name
常用選項:
-uUSERNAME:用戶名,默認為root
-hHOST:服務器主機,默認為localhost
-pPASSWORD:用戶密碼,默認為空密碼
用戶賬號及權限管理:
注意:mysql用戶賬號由兩部分組成:’USERNAME’@’HOST’;其中HOST用于限制此用戶可通過哪些主機遠程連接mysql服務。
支持使用通配符:
%:匹配任意長度的任意字符
_:匹配任意單個字符
創建用戶賬號:CREATE USER ‘username’@’host’ [IDENTIFIED BY ?‘password’];
刪除用戶賬號:DROP USER? ‘username’@’host’ ;
mariadb安裝初始化:mysql_install_db ? ? ? ?–datadir= ? ? ?–user=mysql
安全初始化:mysql_secure_installation
關系型數據庫的常見組件:
數據庫:database
表:table;行:row;列:column
索引:index
視圖:view
存儲過程:procedure
存儲函數:function
觸發器:trigger
事件調度器:event scheduler
數據類型:
一、字符
(a)變長字符:VARCHAR(#),VARBINARY(#);
(b)定長字符:CHAR(#),BINARY(#);
(c)內建類型:ENUM,SET;
(d)對象:TEXT,BLOB
二、數值
(a)精確數值:
整數:TINYINI(1個字節),SMALLINT(2個字節),INT(3個字節),MEDIUMINT(4個字節),BIGINT(8個字節)
十進制:DECIMAL
(b)近似數值:
單精度:FLOAT
雙精度:DOUBLE
三、日期時間型:
日期:DATE
時間:TIME
日期時間:DATETIME
時間戳:TIMESTAMP
年份:
YEAR(2)、YEAR(4)
SQL語句:
一、DDL:data definition language;數據定義語言;
CREATE、ALTER、DROP
數據庫:
創建數據庫:CREATE DATABASE|SCHEMA ? ? [IF NOT EXISTS] ? ?‘DB_NAME’;
CHARACTER SET [=] charset
COLLATE ?[=] ?collate
查看所有支持的字符集:SHOW CHARACTER SET;
查看所有支持的排序:SHOW COLLATION;
刪除數據庫:DROP DATABASE|SCHEMA ? ? ? [IF ?EXISTS] ? ? ‘DB_NAME’;
獲取命令使用幫助:mysql> HELP KEYWORD;
表:
創建表:CRERTE ?TABLE? [IF NOT EXISTS] ‘tbl_name’ (col1 type1,col2 type2, …)
修飾符:
(a)所有類型適用
NOT NULL:不可為空
DEFAULT ?char:默認值
PRIMARY KEY(col1,col2,…) :主鍵
INDEX (col1,col2,…):索引建
UNIQUE KEY?(col1,col2,…):唯一鍵
(b)數值型適用
UNSINGED:不表示負數
AUTO_INCREMENT:自動增長
表選項:
ENGINE [=] ?engine_name
查看所有支持的引擎:SHOW ENGINES;
查看表創建命令:SHOW CREATE TABLE tbl_name;
描述表結構命令:DESC tbl_name;
查看表狀態:SHOW ? TABLE ? STATUS ? LIKE ? ‘tbl_name’ ? ?\G
刪除表:DROP TABLE [IF EXISTS] ?‘tbl_name’
修改表:ALTER TABLE ?‘tbl_name’
1、字段:
添加字段:add
ADD ?col1 data_type ?[FIRST | AFTER col_name]
刪除字段:drop
修改字段:alter(修改字段默認屬性)、change(修改字段名稱)、modify(修改字段屬性)
2、索引
添加索引:add
刪除索引:drop
3、表選項
修改:
索引:是一種特殊的數據結構;定義在查找時作為查找條件的字段;可以有索引名稱
創建索引:CREATE ?INDEX index_name ON tbl_name(index_col_name,…);
刪除索引:DROP INDEX ?index_name?ON tbl_name;
查看索引:SHOW INDEX FROM tbl_name;
二、DML::data manipulation language:數據操縱語言;
SELECT、UPDATE、INSERT、DELETE
插入數據:INSERT ? ?[INTO] ? ?tbl_name [(col_name,…)] {VALUES | VALUE} (val1,…),(…),…
查詢數據:SELECT ?col1,col2,… ? FROM ?tbl_name ?[WHERE clause] [ORDER BY ‘col_name [ASC|DESC]] ?[LIMIT [M,]n]’;
刪除數據:DELETE FROM tbl_name [WHERE clause] [ORDER BY ‘col_name [ASC|DESC]] ? [LIMIT [M,]n]’;
更新數據:UPDATE tbl_name SET col1=new_val1,col2=new_val2,… ? ??[WHERE clause] [ORDER BY ‘col_name [ASC|DESC]] ?[LIMIT [M,]n]’;
WHERE:給定條件;
(a)常用操作符:==,>,<,>=,<=,!=
BETWEEN ? a ? ?AND ? b? :在a與b之間
LIKE:模糊匹配;%:任意長度的任意字符;_:任意單個字符;
RLIKE:基于正則表達式作模糊匹配;
IS NULL:為空
IS NOT NULL:非空
(b)條件邏輯操作:and,or,not
ORDER BY col_name:以哪個字段排序排序
ASC:升序
DESC:降序
LIMIT #:顯示前#個;
字段表示法:
*:所有字段
as:字段別名,col1 AS alias1
三、DCL:data control language:數據控制語言;
GRANT、REVOKE
授權權限:管理權限、數據庫、表、字段、存儲例程;
創建用戶并授權:GRANT ?pri_type,… ? ON ? [object_type] ?db_name.tbl_name ?TO ? ‘username’@’host’ ? [IDENTIFIED BY ?‘password’];
pri_type:權限;ALL [PRIVILEGES]
db_name.tbl_name:指定那個數據庫的某些表、存儲函數、存儲例程;
查看所有的可授權權限:SHOW PRIVILEGES;
查看mariadb的用戶:SELECT user,host,password FROM mysql.user;
查看指定用戶獲得的權限:SHOW GRANTS FOR ‘user’@’host’;
查看當前用戶獲得的權限:SHOW GRANTS FOR CURRENT_USER();
撤銷權限:REVOKE?pri_type,… ? ON ? [object_type] ?db_name.tbl_name ?FROM ? ‘username’@’host’;
注意:mariadb服務進程啟動時會讀取數據庫中的所有權限表至內存中;
(1)GRANT或REVOKE、CREATE USER、DROP USER等執行權限操作會保存于表中,mariadb的服務進程會自動重讀授權表;
(2)對于不能夠或不能及時重讀授權表的命令,可手動讓mariadb的服務進程重讀授權表:FLUSH PRIVILEGES;
LAMP安裝重點:
1、php作為httpd模塊:yum install httpd php php-mysql mariadb -y
2、php以fpm獨立工作:yum install httpd php-mysql php-fpm mariadb -y
注意:此時需手動更改httpd.conf配置文件,添加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
而且需要在各虛擬主機配置文件添加如下代碼:
ProxyRequests off
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
源碼編譯安裝xcache-3.2.0
# yum groupinstall “development tools”
# tar xf xcache-3.2.0.tar.gz
# cd xcache-3.2.0/
# /usr/bin/phpize ? ? (which phpize查找具體路徑)
# ./configure –enable-xcache –with-php-config=/usr/bin/php-config ? ??(which php-config查找具體路徑)
# make && make install
# cp xcache.ini /etc/php.d/
# systemctl restart httpd mariadb php-fpm
查看xcache工作狀態:
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99094