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

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

1.1 LNMP應用環(huán)境

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

創(chuàng)新互聯(lián)服務項目包括虎丘網(wǎng)站建設、虎丘網(wǎng)站制作、虎丘網(wǎng)頁制作以及虎丘網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,虎丘網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到虎丘省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

1.1.1 LNMP介紹

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

1.1.2 LNMP的優(yōu)點:

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

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

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

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

1.1.3 LNMP組合工作流程

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

1.1.4 CGI介紹

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

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

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

1.1.5 FASTCGI介紹

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

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

1.2 原理解析

1.2.1 FastCGI的整個工作流程

                           

一般情況下,F(xiàn)astCGI的整個工作流程是這樣的:

1、Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)

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

3、當客戶端請求到達Web Server時,F(xiàn)astCGI進程管理器選擇并連接到一個CGI解釋器。 Web server將CGI環(huán)境變量和標準輸入發(fā)送到FastCGI子進程php-cgi。

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

 

第2章 LNMP之數(shù)據(jù)庫MYSQL

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

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

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

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

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

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

序號

mysql安裝方式

特點說明

1

yum/rpm包安裝

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

2

二進制安裝

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

3

源碼編譯安裝

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

4

源碼軟件結合yum/rpm安裝

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

 

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

[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解壓后的程序包搬家到程序目錄下,并進行重命名

[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程序運行時的管理用戶并授權

useradd -s /sbin/nologin  -M mysql

chown -R mysql.mysql /application/mysql

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

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

2.2.6 復制啟動腳本授權

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

[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修改啟動腳本和 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 復制默認的配置文件啟動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ù)庫

2.3.1 登錄與退出mysql

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

mysql> exit

Bye

或者ctrl+d

優(yōu)化登錄過程

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

source /etc/profile

which mysql

2.3.2 設置登錄密碼并登錄

[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 設置mysql服務開機自啟動   

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

       chkconfig --add mysqld

       chkconfig mysqld on

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

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

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

相當于cd進入一個數(shù)據(jù)庫

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

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

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

初級 添加刪除系列

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

       create database wordpress;

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

        dropdatabase wordpress;

2.4 MYSQL錯誤信息

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

2.5 操作myql

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

mysql> show databases;

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

| Database          |

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

| information_schema |

| mysql             |

| performance_schema |

| test              |

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

4 rows in set (0.03 sec)

mysql>

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

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

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>

網(wǎng)站標題:企業(yè)級LAMP環(huán)境應用----mysql
鏈接分享:http://muchs.cn/article14/jcppge.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、云服務器、虛擬主機、關鍵詞優(yōu)化、小程序開發(fā)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務器托管