1. 程式人生 > >企業級LAMP環境應用----mysql

企業級LAMP環境應用----mysql

mysql

第1章 企業級LAMP環境應用

1.1 LNMP應用環境

大約在2010年以前,互聯網公司最常用的經典web服務環境組合就是LAMP(即Linux,apache,mysql,PHP,近幾年隨著Nginx web 服務的逐漸流行,又出現了新的web服務環境組合----LNMPLEMP,其中LNMPLinuxnginxMysql,PHP等首字母的縮寫,而LEMPE表示Nginx,LNMP已經逐漸成為國內大中型互聯網公司網站的主流組合環境。

1.1.1 LNMP介紹

LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。Nginx是一個高性能的HTTP和反向代理服務器,也是一個

IMAP/POP3/SMTP代理服務器。Mysql是一個小型關系型數據庫管理系統。PHP是一種在服務器端執行的嵌入HTML文檔的腳本語言。這四種軟件均為免費開源軟件,組合到一起,成為一個免費、高效、擴展性強的網站服務系統。

1.1.2 LNMP的優點:

1.作為 Web 服務器:相比 ApacheNginx 使用更少的資源,支持更多的並發連接,體現更高的效率。

2.作為負載均衡服務器:Nginx 既可以在內部直接支持 Rails PHP,也可以支持作為 HTTP代理服務器對外進行服務。NginxC編寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好的多。

3.作為郵件代理服務器:Nginx同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),

Last/fm 描述了成功並且美妙的使用經驗。

4.Nginx 安裝非常的簡單:配置文件非常簡潔(還能夠支持perl語法)。Nginx支持平滑加載新的配置,還能夠在不間斷服務的情況下進行軟件版本的升級。

1.1.3 LNMP組合工作流程

LNMP組合工作時,首先是用戶通過瀏覽器輸入域名請求Nginx web服務,如果請求時靜態資源,則有Nginx解析返回給用戶;如果是動態請求(.php結尾),那麽就會把它通過fastCGI接口(生產常用方法)發送給PHP引擎服務(fastCGI進程php-fpm)進行解析,如果這個動態請求要讀取數據庫數據,那麽PHP就會繼續向後請求MYSQL數據庫,讀取需要的數據,並最終通過

Nginx服務把獲得額數據返回給用戶,這就是LNMP環境的基本請求順序流程

1.1.4 CGI介紹

最早的Web服務器簡單地響應瀏覽器發來的HTTP請求,並將存儲在服務器上的HTML文件返回給瀏覽器,也就是靜態html。事物總是不 斷發展,網站也越來越復雜,所以出現動態技術。但是服務器並不能直接運行 phpasp這樣的文件,自己不能做,外包給別人吧,但是要與第三做個約定,我給你什麽,然後你給我什麽,就是握把請求參數發送給你,然後我接收你的處理結果給客戶端。那這個約定就是 common gateway interface,簡稱cgi。這個協議可以用vbcphppython 來實現。cgi只是接口協議,根本不是什麽語言。

WEB服務器將根據CGI程序的類型決定數據向CGI程序的傳送方式,一般來講是通過標準輸入/輸出流和環境變量來與CGI程序間傳遞數據。

CGI工作原理:每當客戶請求CGI的時候,WEB服務器就請求操作系統生成一個新的CGI解釋器進程(php-cgi.exe)CGI 的一個進程則處理完一個請求後退出,下一個請求來時再創建新進程。當然,這樣在訪問量很少沒有並發的情況也行。可是當訪問量增大,並發存在,這種方式就不適合了。於是就有了fastcgi

1.1.5 FASTCGI介紹

FASTCGIWEB服務器與處理程序之間通信的一種協議,是CGI的改進方案。CGI程序反復加載是CGI性能低下的主要原因,如果CGI程序保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail-Over特性等。

FASTCGI是常駐型的CGI,它可以一直運行,在請求到達時,不會花費時間去fork一個進程來處理。FastCGI是語言無關的、可伸縮架構的CGI開放擴展,將CGI解釋器進程保持在內存中,以此獲得較高的性能

1.2 原理解析

1.2.1 FastCGI的整個工作流程

一般情況下,FastCGI的整個工作流程是這樣的:

1Web Server啟動時載入FastCGI進程管理器(IIS ISAPIApache Module)

2FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)並等待WebServer的連接。

3、當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。 Web serverCGI環境變量和標準輸入發送到FastCGI子進程php-cgi

4FastCGI子進程完成處理後將標準輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。FastCGI子進程接著等待並處理來自FastCGI進程管理器(運行在Web Server)的下一個連接。在CGI模式中,php-cgi在此便退出了。

第2章 LNMP之數據庫MYSQL

2.1 MYSQL數據庫介紹

mysql是互聯網領域裏非常重要的,深受廣大用戶歡迎的一款開源關系型數據庫軟件,由瑞典mysql AB公司開發與維護。2006年,mysql AB公司被SUN公司收購,2008年,SUN公司又被傳統數據庫領域老大甲骨文(oracle)公司收購,因此,mysql數據庫目前屬於oracle公司,但仍然是開源的。

mysql是一種關系型數據庫管理軟件,關系數據型數據庫的特點是將數據保存在不同的二位表中,並且將這些表放入不同的數據庫中,而不是把所有的數據統一放到一個大倉庫中,這樣的設計增加了MYSQL的讀取速度,靈活性和可管理性。

2.2 LNMP MySQL數據庫安裝(二進制包的安裝)

mysql軟件下載地址信息: www.mysql.com mirrors.sohu.com

mysql軟件下載完畢後,查看mysql解壓後目錄文件大小

序號

mysql安裝方式

特點說明

1

yum/rpm包安裝

特點是簡單,速度快,但是沒法定制安裝,入門新手常用這種方式

2

二進制安裝

解壓軟件,簡單配置後就可以使用,不用安裝,速度較快,專業的DBA喜歡這種方式。

3

源碼編譯安裝

特點是可以定制安裝,但是安裝時間長,列如:字符集安裝路徑

4

源碼軟件結合yum/rpm安裝

把源碼軟件制作成符合要求的rpm,放到yum倉庫裏,然後通過yum安裝,優點是安裝快捷,可任意制定參數,但是安裝者需要具備更深能力。

2.2.1 下載解壓mysql二進制軟件包

[[email protected] tools]# rz -E

rz waiting to receive.

[[email protected] tools]# ls

mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

nginx-1.10.2

nginx-1.10.2.tar.gz

[[email protected] tools]# tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

[[email protected] tools]# ls

mysql-5.6.34-linux-glibc2.5-x86_64 nginx-1.10.2

mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz nginx-1.10.2.tar.gz

[[email protected]]# cdmysql-5.6.34-linux-glibc2.5-x86_64

[[email protected]_64]# ll -hi

total 68K

663049 drwxr-xr-x 2 root root 4.0K May 22 09:56 bin

663186 -rw-r--r-- 1 7161 31415 18K Sep 30 2016 COPYING

800440 drwxr-xr-x 3 root root 4.0K May 22 09:57data

800443 drwxr-xr-x 2 root root 4.0K May 22 09:57docs

800533 drwxr-xr-x 3 root root 4.0K May 22 09:57include

663139 drwxr-xr-x 3 root root 4.0K May 22 09:57 lib

790581 drwxr-xr-x 4 root root 4.0K May 22 09:56 man

790632 drwxr-xr-x 10 root root 4.0K May 22 09:57 mysql-test

663138 -rw-r--r-- 1 7161 31415 2.5K Sep 30 2016README

800431 drwxr-xr-x 2 root root 4.0K May 22 09:57scripts

663095 drwxr-xr-x 28 root root 4.0K May 22 09:56 share

800447 drwxr-xr-x 4 root root 4.0K May 22 09:57sql-bench

800433 drwxr-xr-x 2 root root 4.0K May 22 09:57support-files

[[email protected] mysql-5.6.34-linux-glibc2.5-x86_64]# cd..

[[email protected] tools]# ls

mysql-5.6.34-linux-glibc2.5-x86_64 nginx-1.10.2

mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz nginx-1.10.2.tar.gz

[[email protected] tools]# du -sh mysql-5.6.34-linux-glibc2.5-x86_64

1.1G mysql-5.6.34-linux-glibc2.5-x86_64

2.2.2 mysql解壓後的程序包搬家到程序目錄下,並進行重命名

[[email protected] tools]# mv mysql-5.6.34-linux-glibc2.5-x86_64/application/mysql-5.6.34

2.2.3 mysql創建軟鏈接

[[email protected] tools]# ln -s /application/mysql-5.6.34//application/mysql

[[email protected] tools]# cd /application/

[[email protected] application]# ls

mysql mysql-5.6.34 nginx nginx-1.10.2

[[email protected] application]# ll

total 8

lrwxrwxrwx 1root root 26 May 22 10:01 mysql ->/application/mysql-5.6.34/

drwxr-xr-x 13 root root 4096 May 22 09:57mysql-5.6.34

lrwxrwxrwx 1root root 25 May 19 08:52 nginx ->/application/nginx-1.10.2

drwxr-xr-x 11 root root 4096 May 19 12:59nginx-1.10.2

2.2.4 添加mysql程序運行時的管理用戶並授權

useradd -s /sbin/nologin -M mysql

chown -R mysql.mysql /application/mysql

2.2.5 初始化數據庫

/application/mysql/scripts/mysql_install_db--basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql

2.2.6 復制啟動腳本授權

[[email protected] application]# cp /application/mysql/support-files/mysql.server/etc/init.d/mysqld ###把守護進程文件放到啟動文件中,守護進程方式

[[email protected] application]#

[[email protected] application]# ll /etc/init.d/mysqld

-rwxr-xr-x 1 root root 10875 May 22 10:13/etc/init.d/mysqld

[[email protected] application]# chmod +x /etc/init.d/mysqld

2.2.7 修改啟動腳本 mysql命令中的路徑

[[email protected] application]# ll /etc/init.d/mysqld

-rwxr-xr-x 1 root root 10875 May 22 10:13/etc/init.d/mysqld

[[email protected] application]# sed -i ‘s#/usr/local/mysql#/application/mysql#g‘/application/mysql/bin/mysqld_safe /etc/init.d/mysqld

註:替換後的application為安裝路徑,如果安裝路徑不在application中,那麽就要替換為安裝的路徑名。

[[email protected] application]#

2.2.8 復制默認的配置文件啟動mysql

[[email protected] application]# cp /application/mysql/support-files/my-default.cnf/etc/my.cnf

cp: overwrite `/etc/my.cnf‘? y

[[email protected] application]#

[[email protected]]#/etc/init.d/mysqld start

Starting MySQL... SUCCESS!

2.3 管理mysql數據庫

2.3.1 登錄與退出mysql

[[email protected] application]#/application/mysql/bin/mysql -uroot

mysql> exit

Bye

或者ctrl+d

優化登錄過程

echo ‘export PATH=/application/mysql/bin:$PATH‘>>/etc/profile

source /etc/profile

which mysql

2.3.2 設置登錄密碼並登錄

[[email protected] application]# mysqladmin -u root password "oldboy123"

Warning: Using a password on the command lineinterface can be insecure.

[[email protected] application]#

[[email protected] application]# mysql -uroot -poldboy123 ###註意-p後面不能有空格。

2.3.3 設置mysql服務開機自啟動

####11.加入開機自啟動

chkconfig --add mysqld

chkconfig mysqld on

2.3.4 數據庫基本命令

show databases; <--- 查詢默認的數據庫信息

use mysql; <--- 表示選擇使用一個數據庫,

相當於cd進入一個數據庫

select database(); <--- 表示查看當前所在數據庫,類似於pwd命令的功能

select user(); <--- 查看當前登錄數據庫的用戶,類似於whoami命令並且mysql還可以限制指定用戶可以從哪裏進行連接登錄數據庫

select user,host from mysql.user; ---查看可以登錄mysql數據庫的目錄,以及都可以從哪裏進行管理mysql數據庫

初級 添加刪除系列

#創建數據庫

create database wordpress;

#刪除數據庫

dropdatabase wordpress;

2.4 MYSQL錯誤信息

2.4.1 tmp目錄權限必須是1777,否則sql啟動不了。因為sql需要放一些緩存文件放到tmp中。

2.5 操作myql

2.5.1 查看數據庫表

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| performance_schema |

| test |

+--------------------+

4 rows in set (0.03 sec)

mysql>

2.5.2 使用數據庫

mysql> use mysql;

Reading table information for completion of tableand column names

You can turn off this feature to get a quickerstartup with -A

Database changed

mysql>

mysql> select database();

+------------+

| database() |

+------------+

| mysql |

+------------+

1 row in set (0.00 sec)

mysql>

2.5.4 查看哪個用戶登錄數據庫

mysql> select user();

+----------------+

| user() |

+----------------+

| [email protected] |

+----------------+

1 row in set (0.00 sec)

mysql>

mysql> select user,host from mysql.user;

+------+-----------+

| user | host |

+------+-----------+

| root | 127.0.0.1 |

| root | ::1 |

| |localhost |

| root | localhost |

| |web02 |

| root | web02 |

+------+-----------+

6 rows in set (0.00 sec)

mysql>


本文出自 “大東” 博客,轉載請與作者聯系!

企業級LAMP環境應用----mysql