大約在2010年以前,互聯網公司最常用的經典web服務環境組合就是LAMP(即Linux,apache,mysql,PHP),近幾年隨著Nginx web 服務的逐漸流行,又出現了新的web服務環境組合----LNMP或LEMP,其中LNMP為Linux,nginx,Mysql,PHP等首字母的縮寫,而LEMP中E表示Nginx,,LNMP已經逐漸成為國內大中型互聯網公司網站的主流組合環境。
LNMP代表的就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構。Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器。Mysql是一個小型關系型數據庫管理系統。PHP是一種在服務器端執行的嵌入HTML文檔的腳本語言。這四種軟件均為免費開源軟件,組合到一起,成為一個免費、高效、擴展性強的網站服務系統。
1.作為 Web 服務器:相比 Apache,Nginx 使用更少的資源,支持更多的并發連接,體現更高的效率。
2.作為負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP,也可以支持作為 HTTP代理服務器對外進行服務。Nginx用C編寫,不論是系統資源開銷還是CPU使用效率都比Perlbal要好的多。
3.作為郵件代理服務器:Nginx同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last/fm 描述了成功并且美妙的使用經驗。
4.Nginx 安裝非常的簡單:配置文件非常簡潔(還能夠支持perl語法)。Nginx支持平滑加載新的配置,還能夠在不間斷服務的情況下進行軟件版本的升級。
當LNMP組合工作時,首先是用戶通過瀏覽器輸入域名請求Nginx web服務,如果請求時靜態資源,則有Nginx解析返回給用戶;如果是動態請求(.php結尾),那么就會把它通過fastCGI接口(生產常用方法)發送給PHP引擎服務(fastCGI進程php-fpm)進行解析,如果這個動態請求要讀取數據庫數據,那么PHP就會繼續向后請求MYSQL數據庫,讀取需要的數據,并最終通過Nginx服務把獲得額數據返回給用戶,這就是LNMP環境的基本請求順序流程
最早的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 的一個進程則處理完一個請求后退出,下一個請求來時再創建新進程。當然,這樣在訪問量很少沒有并發的情況也行??墒钱斣L問量增大,并發存在,這種方式就不適合了。于是就有了fastcgi。
FASTCGI:WEB服務器與處理程序之間通信的一種協議,是CGI的改進方案。CGI程序反復加載是CGI性能低下的主要原因,如果CGI程序保持在內存中并接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail-Over特性等。
FASTCGI是常駐型的CGI,它可以一直運行,在請求到達時,不會花費時間去fork一個進程來處理。FastCGI是語言無關的、可伸縮架構的CGI開放擴展,將CGI解釋器進程保持在內存中,以此獲得較高的性能
一般情況下,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在此便退出了。
mysql是互聯網領域里非常重要的,深受廣大用戶歡迎的一款開源關系型數據庫軟件,由瑞典mysql AB公司開發與維護。2006年,mysql AB公司被SUN公司收購,2008年,SUN公司又被傳統數據庫領域老大甲骨文(oracle)公司收購,因此,mysql數據庫目前屬于oracle公司,但仍然是開源的。
mysql是一種關系型數據庫管理軟件,關系數據型數據庫的特點是將數據保存在不同的二位表中,并且將這些表放入不同的數據庫中,而不是把所有的數據統一放到一個大倉庫中,這樣的設計增加了MYSQL的讀取速度,靈活性和可管理性。
mysql軟件下載地址信息: www.mysql.com mirrors.sohu.com
mysql軟件下載完畢后,查看mysql解壓后目錄文件大小
序號 | mysql安裝方式 | 特點說明 |
1 | yum/rpm包安裝 | 特點是簡單,速度快,但是沒法定制安裝,入門新手常用這種方式 |
2 | 二進制安裝 | 解壓軟件,簡單配置后就可以使用,不用安裝,速度較快,專業的DBA喜歡這種方式。 |
3 | 源碼編譯安裝 | 特點是可以定制安裝,但是安裝時間長,列如:字符集安裝路徑 |
4 | 源碼軟件結合yum/rpm安裝 | 把源碼軟件制作成符合要求的rpm,放到yum倉庫里,然后通過yum安裝,優點是安裝快捷,可任意制定參數,但是安裝者需要具備更深能力。 |
[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
[root@web02 tools]# mv mysql-5.6.34-linux-glibc2.5-x86_64/application/mysql-5.6.34
[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
useradd -s /sbin/nologin -M mysql
chown -R mysql.mysql /application/mysql
/application/mysql/scripts/mysql_install_db--basedir=/application/mysql --datadir=/application/mysql/data/ --user=mysql
[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
[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]#
[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!
[root@web02 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
[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后面不能有空格。
####11.加入開機自啟動
chkconfig --add mysqld
chkconfig mysqld on
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;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.03 sec)
mysql>
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() |
+----------------+
| 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>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。