企業級LAMP環境應用----mysql
第1章 企業級LAMP環境應用
1.1 LNMP應用環境
大約在2010年以前,互聯網公司最常用的經典web服務環境組合就是LAMP(即Linux,apache,mysql,PHP),近幾年隨著Nginx web 服務的逐漸流行,又出現了新的web服務環境組合----LNMP或LEMP,其中LNMP為Linux,nginx,Mysql,PHP等首字母的縮寫,而LEMP中E表示Nginx,,LNMP已經逐漸成為國內大中型互聯網公司網站的主流組合環境。
1.1.1 LNMP介紹
LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。Nginx是一個高性能的HTTP和反向代理服務器,也是一個
1.1.2 LNMP的優點:
1.作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的並發連接,體現更高的效率。
2.作為負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP,也可以支持作為 HTTP代理服務器對外進行服務。Nginx用C編寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好的多。
3.作為郵件代理服務器:Nginx同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),
4.Nginx 安裝非常的簡單:配置文件非常簡潔(還能夠支持perl語法)。Nginx支持平滑加載新的配置,還能夠在不間斷服務的情況下進行軟件版本的升級。
1.1.3 LNMP組合工作流程
當LNMP組合工作時,首先是用戶通過瀏覽器輸入域名請求Nginx web服務,如果請求時靜態資源,則有Nginx解析返回給用戶;如果是動態請求(.php結尾),那麽就會把它通過fastCGI接口(生產常用方法)發送給PHP引擎服務(fastCGI進程php-fpm)進行解析,如果這個動態請求要讀取數據庫數據,那麽PHP就會繼續向後請求MYSQL數據庫,讀取需要的數據,並最終通過
1.1.4 CGI介紹
最早的Web服務器簡單地響應瀏覽器發來的HTTP請求,並將存儲在服務器上的HTML文件返回給瀏覽器,也就是靜態html。事物總是不 斷發展,網站也越來越復雜,所以出現動態技術。但是服務器並不能直接運行 php,asp這樣的文件,自己不能做,外包給別人吧,但是要與第三做個約定,我給你什麽,然後你給我什麽,就是握把請求參數發送給你,然後我接收你的處理結果給客戶端。那這個約定就是 common gateway interface,簡稱cgi。這個協議可以用vb,c,php,python 來實現。cgi只是接口協議,根本不是什麽語言。
WEB服務器將根據CGI程序的類型決定數據向CGI程序的傳送方式,一般來講是通過標準輸入/輸出流和環境變量來與CGI程序間傳遞數據。
CGI工作原理:每當客戶請求CGI的時候,WEB服務器就請求操作系統生成一個新的CGI解釋器進程(如php-cgi.exe),CGI 的一個進程則處理完一個請求後退出,下一個請求來時再創建新進程。當然,這樣在訪問量很少沒有並發的情況也行。可是當訪問量增大,並發存在,這種方式就不適合了。於是就有了fastcgi。
1.1.5 FASTCGI介紹
FASTCGI:WEB服務器與處理程序之間通信的一種協議,是CGI的改進方案。CGI程序反復加載是CGI性能低下的主要原因,如果CGI程序保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail-Over特性等。
FASTCGI是常駐型的CGI,它可以一直運行,在請求到達時,不會花費時間去fork一個進程來處理。FastCGI是語言無關的、可伸縮架構的CGI開放擴展,將CGI解釋器進程保持在內存中,以此獲得較高的性能
1.2 原理解析
1.2.1 FastCGI的整個工作流程
一般情況下,FastCGI的整個工作流程是這樣的:
1、Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)
2、FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)並等待WebServer的連接。
3、當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。 Web server將CGI環境變量和標準輸入發送到FastCGI子進程php-cgi。
4、FastCGI子進程完成處理後將標準輸出和錯誤信息從同一連接返回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