溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

企業(yè)級(jí)LAMP環(huán)境應(yīng)用----mysql

發(fā)布時(shí)間:2020-07-17 09:21:50 來(lái)源:網(wǎng)絡(luò) 閱讀:283 作者:菜鳥(niǎo)東哥 欄目:MySQL數(shù)據(jù)庫(kù)

第1章 企業(yè)級(jí)LAMP環(huán)境應(yīng)用

1.1 LNMP應(yīng)用環(huán)境

大約在2010年以前,互聯(lián)網(wǎng)公司最常用的經(jīng)典web服務(wù)環(huán)境組合就是LAMP(即Linux,apache,mysql,PHP,近幾年隨著Nginx web 服務(wù)的逐漸流行,又出現(xiàn)了新的web服務(wù)環(huán)境組合----LNMPLEMP,其中LNMPLinux,nginxMysql,PHP等首字母的縮寫(xiě),而LEMPE表示Nginx,,LNMP已經(jīng)逐漸成為國(guó)內(nèi)大中型互聯(lián)網(wǎng)公司網(wǎng)站的主流組合環(huán)境。

1.1.1 LNMP介紹

LNMP代表的就是:Linux系統(tǒng)下Nginx+MySQL+PHP這種網(wǎng)站服務(wù)器架構(gòu)。Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP代理服務(wù)器。Mysql是一個(gè)小型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。PHP是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語(yǔ)言。這四種軟件均為免費(fèi)開(kāi)源軟件,組合到一起,成為一個(gè)免費(fèi)、高效、擴(kuò)展性強(qiáng)的網(wǎng)站服務(wù)系統(tǒng)。

1.1.2 LNMP的優(yōu)點(diǎn):

1.作為 Web 服務(wù)器:相比 Apache,Nginx 使用更少的資源,支持更多的并發(fā)連接,體現(xiàn)更高的效率。

2.作為負(fù)載均衡服務(wù)器:Nginx 既可以在內(nèi)部直接支持 Rails PHP,也可以支持作為 HTTP代理服務(wù)器對(duì)外進(jìn)行服務(wù)。NginxC編寫(xiě),不論是系統(tǒng)資源開(kāi)銷(xiāo)還是CPU使用效率都比Perlbal要好的多。

3.作為郵件代理服務(wù)器:Nginx同時(shí)也是一個(gè)非常優(yōu)秀的郵件代理服務(wù)器(最早開(kāi)發(fā)這個(gè)產(chǎn)品的目的之一也是作為郵件代理服務(wù)器),Last/fm 描述了成功并且美妙的使用經(jīng)驗(yàn)。

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

1.1.3 LNMP組合工作流程

當(dāng)LNMP組合工作時(shí),首先是用戶通過(guò)瀏覽器輸入域名請(qǐng)求Nginx web服務(wù),如果請(qǐng)求時(shí)靜態(tài)資源,則有Nginx解析返回給用戶;如果是動(dòng)態(tài)請(qǐng)求(.php結(jié)尾),那么就會(huì)把它通過(guò)fastCGI接口(生產(chǎn)常用方法)發(fā)送給PHP引擎服務(wù)(fastCGI進(jìn)程php-fpm)進(jìn)行解析,如果這個(gè)動(dòng)態(tài)請(qǐng)求要讀取數(shù)據(jù)庫(kù)數(shù)據(jù),那么PHP就會(huì)繼續(xù)向后請(qǐng)求MYSQL數(shù)據(jù)庫(kù),讀取需要的數(shù)據(jù),并最終通過(guò)Nginx服務(wù)把獲得額數(shù)據(jù)返回給用戶,這就是LNMP環(huán)境的基本請(qǐng)求順序流程

1.1.4 CGI介紹

最早的Web服務(wù)器簡(jiǎn)單地響應(yīng)瀏覽器發(fā)來(lái)的HTTP請(qǐng)求,并將存儲(chǔ)在服務(wù)器上的HTML文件返回給瀏覽器,也就是靜態(tài)html。事物總是不 斷發(fā)展,網(wǎng)站也越來(lái)越復(fù)雜,所以出現(xiàn)動(dòng)態(tài)技術(shù)。但是服務(wù)器并不能直接運(yùn)行 php,asp這樣的文件,自己不能做,外包給別人吧,但是要與第三做個(gè)約定,我給你什么,然后你給我什么,就是握把請(qǐng)求參數(shù)發(fā)送給你,然后我接收你的處理結(jié)果給客戶端。那這個(gè)約定就是 common gateway interface,簡(jiǎn)稱cgi。這個(gè)協(xié)議可以用vb,cphp,python 來(lái)實(shí)現(xiàn)。cgi只是接口協(xié)議,根本不是什么語(yǔ)言。

WEB服務(wù)器將根據(jù)CGI程序的類(lèi)型決定數(shù)據(jù)向CGI程序的傳送方式,一般來(lái)講是通過(guò)標(biāo)準(zhǔn)輸入/輸出流和環(huán)境變量來(lái)與CGI程序間傳遞數(shù)據(jù)。

CGI工作原理:每當(dāng)客戶請(qǐng)求CGI的時(shí)候,WEB服務(wù)器就請(qǐng)求操作系統(tǒng)生成一個(gè)新的CGI解釋器進(jìn)程(php-cgi.exe),CGI 的一個(gè)進(jìn)程則處理完一個(gè)請(qǐng)求后退出,下一個(gè)請(qǐng)求來(lái)時(shí)再創(chuàng)建新進(jìn)程。當(dāng)然,這樣在訪問(wèn)量很少?zèng)]有并發(fā)的情況也行??墒钱?dāng)訪問(wèn)量增大,并發(fā)存在,這種方式就不適合了。于是就有了fastcgi。

1.1.5 FASTCGI介紹

FASTCGIWEB服務(wù)器與處理程序之間通信的一種協(xié)議,是CGI的改進(jìn)方案。CGI程序反復(fù)加載是CGI性能低下的主要原因,如果CGI程序保持在內(nèi)存中并接受FastCGI進(jìn)程管理器調(diào)度,則可以提供良好的性能、伸縮性、Fail-Over特性等。

FASTCGI是常駐型的CGI,它可以一直運(yùn)行,在請(qǐng)求到達(dá)時(shí),不會(huì)花費(fèi)時(shí)間去fork一個(gè)進(jìn)程來(lái)處理。FastCGI是語(yǔ)言無(wú)關(guān)的、可伸縮架構(gòu)的CGI開(kāi)放擴(kuò)展,將CGI解釋器進(jìn)程保持在內(nèi)存中,以此獲得較高的性能

1.2 原理解析

1.2.1 FastCGI的整個(gè)工作流程

                           

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

1、Web Server啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器(IIS ISAPIApache Module)

2、FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程(可見(jiàn)多個(gè)php-cgi)并等待WebServer的連接。

3、當(dāng)客戶端請(qǐng)求到達(dá)Web Server時(shí),FastCGI進(jìn)程管理器選擇并連接到一個(gè)CGI解釋器。 Web serverCGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FastCGI子進(jìn)程php-cgi。

4、FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回Web Server。當(dāng)FastCGI子進(jìn)程關(guān)閉連接時(shí),請(qǐng)求便告處理完成。FastCGI子進(jìn)程接著等待并處理來(lái)自FastCGI進(jìn)程管理器(運(yùn)行在Web Server)的下一個(gè)連接。在CGI模式中,php-cgi在此便退出了。

 

第2章 LNMP之?dāng)?shù)據(jù)庫(kù)MYSQL

2.1 MYSQL數(shù)據(jù)庫(kù)介紹

mysql是互聯(lián)網(wǎng)領(lǐng)域里非常重要的,深受廣大用戶歡迎的一款開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)軟件,由瑞典mysql AB公司開(kāi)發(fā)與維護(hù)。2006年,mysql AB公司被SUN公司收購(gòu),2008年,SUN公司又被傳統(tǒng)數(shù)據(jù)庫(kù)領(lǐng)域老大甲骨文(oracle)公司收購(gòu),因此,mysql數(shù)據(jù)庫(kù)目前屬于oracle公司,但仍然是開(kāi)源的。

mysql是一種關(guān)系型數(shù)據(jù)庫(kù)管理軟件,關(guān)系數(shù)據(jù)型數(shù)據(jù)庫(kù)的特點(diǎn)是將數(shù)據(jù)保存在不同的二位表中,并且將這些表放入不同的數(shù)據(jù)庫(kù)中,而不是把所有的數(shù)據(jù)統(tǒng)一放到一個(gè)大倉(cāng)庫(kù)中,這樣的設(shè)計(jì)增加了MYSQL的讀取速度,靈活性和可管理性。

2.2 LNMP MySQL數(shù)據(jù)庫(kù)安裝(二進(jìn)制包的安裝)

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

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

序號(hào)

mysql安裝方式

特點(diǎn)說(shuō)明

1

yum/rpm包安裝

特點(diǎn)是簡(jiǎn)單,速度快,但是沒(méi)法定制安裝,入門(mén)新手常用這種方式

2

二進(jìn)制安裝

解壓軟件,簡(jiǎn)單配置后就可以使用,不用安裝,速度較快,專業(yè)的DBA喜歡這種方式。

3

源碼編譯安裝

特點(diǎn)是可以定制安裝,但是安裝時(shí)間長(zhǎng),列如:字符集安裝路徑

4

源碼軟件結(jié)合yum/rpm安裝

把源碼軟件制作成符合要求的rpm,放到yum倉(cāng)庫(kù)里,然后通過(guò)yum安裝,優(yōu)點(diǎn)是安裝快捷,可任意制定參數(shù),但是安裝者需要具備更深能力。

 

2.2.1 下載解壓mysql二進(jìn)制軟件包

[root@web02 tools]# rz -E

rz waiting to receive.

[root@web02 tools]# ls

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

nginx-1.10.2

nginx-1.10.2.tar.gz

[root@web02 tools]# tar xf mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

[root@web02 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

 [root@web02tools]# cdmysql-5.6.34-linux-glibc2.5-x86_64

 [root@web02mysql-5.6.34-linux-glibc2.5-x86_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

[root@web02 mysql-5.6.34-linux-glibc2.5-x86_64]# cd..

[root@web02 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

[root@web02 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解壓后的程序包搬家到程序目錄下,并進(jìn)行重命名

[root@web02 tools]# mv mysql-5.6.34-linux-glibc2.5-x86_64/application/mysql-5.6.34

2.2.3 mysql創(chuàng)建軟鏈接

[root@web02 tools]# ln -s /application/mysql-5.6.34//application/mysql

[root@web02 tools]# cd /application/

[root@web02 application]# ls

mysql mysql-5.6.34  nginx  nginx-1.10.2

[root@web02 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程序運(yùn)行時(shí)的管理用戶并授權(quán)

useradd -s /sbin/nologin  -M mysql

chown -R mysql.mysql /application/mysql

2.2.5 初始化數(shù)據(jù)庫(kù)

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

2.2.6 復(fù)制啟動(dòng)腳本授權(quán)

[root@web02 application]# cp /application/mysql/support-files/mysql.server/etc/init.d/mysqld           ###把守護(hù)進(jìn)程文件放到啟動(dòng)文件中,守護(hù)進(jìn)程方式

[root@web02 application]#

[root@web02 application]# ll /etc/init.d/mysqld

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

[root@web02 application]# chmod +x /etc/init.d/mysqld

2.2.7 修改啟動(dòng)腳本 mysql命令中的路徑

[root@web02 application]# ll /etc/init.d/mysqld

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

[root@web02 application]# sed -i 's#/usr/local/mysql#/application/mysql#g'/application/mysql/bin/mysqld_safe /etc/init.d/mysqld

注:替換后的application為安裝路徑,如果安裝路徑不在application中,那么就要替換為安裝的路徑名。

[root@web02 application]#

2.2.8 復(fù)制默認(rèn)的配置文件啟動(dòng)mysql

[root@web02 application]# cp /application/mysql/support-files/my-default.cnf/etc/my.cnf

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

[root@web02 application]#

 [root@web02application]#/etc/init.d/mysqld start

Starting MySQL... SUCCESS!

2.3 管理mysql數(shù)據(jù)庫(kù)

2.3.1 登錄與退出mysql

[root@web02 application]#/application/mysql/bin/mysql -uroot

mysql> exit

Bye

或者ctrl+d

優(yōu)化登錄過(guò)程

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

source /etc/profile

which mysql

2.3.2 設(shè)置登錄密碼并登錄

[root@web02 application]# mysqladmin -u root password "oldboy123"

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

[root@web02 application]#

[root@web02 application]# mysql -uroot -poldboy123     ###注意-p后面不能有空格。

2.3.3 設(shè)置mysql服務(wù)開(kāi)機(jī)自啟動(dòng)   

       ####11.加入開(kāi)機(jī)自啟動(dòng)

       chkconfig --add mysqld

       chkconfig mysqld on

2.3.4 數(shù)據(jù)庫(kù)基本命令

show databases;                <--- 查詢默認(rèn)的數(shù)據(jù)庫(kù)信息

use mysql;                     <--- 表示選擇使用一個(gè)數(shù)據(jù)庫(kù),

相當(dāng)于cd進(jìn)入一個(gè)數(shù)據(jù)庫(kù)

select database();             <--- 表示查看當(dāng)前所在數(shù)據(jù)庫(kù),類(lèi)似于pwd命令的功能

select user();       <--- 查看當(dāng)前登錄數(shù)據(jù)庫(kù)的用戶,類(lèi)似于whoami命令并且mysql還可以限制指定用戶可以從哪里進(jìn)行連接登錄數(shù)據(jù)庫(kù)

select user,host from mysql.user;   ---查看可以登錄mysql數(shù)據(jù)庫(kù)的目錄,以及都可以從哪里進(jìn)行管理mysql數(shù)據(jù)庫(kù)

初級(jí) 添加刪除系列

        #創(chuàng)建數(shù)據(jù)庫(kù)

       create database wordpress;

        #刪除數(shù)據(jù)庫(kù)

        dropdatabase wordpress;

2.4 MYSQL錯(cuò)誤信息

2.4.1 tmp目錄權(quán)限必須是1777,否則sql啟動(dòng)不了。因?yàn)?/span>sql需要放一些緩存文件放到tmp中。

2.5 操作myql

2.5.1 查看數(shù)據(jù)庫(kù)表

mysql> show databases;

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

| Database          |

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

| information_schema |

| mysql             |

| performance_schema |

| test              |

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

4 rows in set (0.03 sec)

mysql>

2.5.2 使用數(shù)據(jù)庫(kù)

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 查看哪個(gè)用戶登錄數(shù)據(jù)庫(kù)

mysql> select user();

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

| user()        |

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

| root@localhost |

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

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>


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI