lamp
構建一個有著動態服務器端技術的網站
LAMP基礎
1)開源領域LAMP組成:
L:Linux;A:apache (httpd);M:mysql, mariadb;P:php, perl, python httpd:接收用戶的web請求;靜態資源則直接響應;動態資源為php腳本交由php來運行; php:運行php程序; MariaDB:數據管理系統;
2)CGI:Common Gateway Interface,通用網關接口
CGI描述了客戶端和服務器程序之間傳輸的一種標準;可以讓一個客戶端,從網頁瀏覽器向執行在網絡服務器上的程序傳輸數據;
3)請求流程
Client -- (http協議) --> httpd -- (cgi協議) --> application server (program file) -- (mysql) --> mysql 客戶端瀏覽器發出請求,通過http協議發向Web服務器,若為靜態請求則httpd發起系統調用,磁盤IO調用數據,返回給用戶; 若為動態請求,則通過CGI通用網關接口協議發送給應用程序服務器,通過 如php腳本等動態執行通過mysql協議調用mysql程序查詢結果,并返回。 靜態資源:Client -- http --> httpd 動態資源:Client -- http --> httpd --> libphp5.so () -- mysql --> MySQL serve
PHP
php: 腳本編程語言
嵌入到html中的嵌入式web程序開發語言,高度模塊化(extensions),無需編譯;大多數情況無需用到管理員權限運行,更加安全 基于zend編譯成opcode(二進制格式的字節碼,重復運行可省略編譯環境) Scanning(掃描) --> Parsing(分析) --> Compilation(編譯) --> Execution(執行)
httpd與php結合的方式
1)CGI:最傳統方式,必要時需要創建和銷毀子進程 2)FastCGI:將php運行成一個服務監聽在套接字,有主進程和空閑進程,獨立的服務進程;工作模式類似于httpd的prefork; 注意: 1)需要安裝php-fpm程序包,非php程序包 2)httpd2.2不支持FastCGI協議功能需自己編譯;CentOS 7的httpd2.4將其加入成為模塊 3)modules (把php編譯成為httpd的模塊):當請求動態請求時無需再啟動一個新的進程,默認結合方式基于MPM相關的php所編譯的模塊: prefork: libphp5.so; event, worker: libphp5-zts.so
php服務配置文件
1)/etc/php.ini, /etc/php.d/*.ini ,一般由php-common程序包提供php相關所有配置文件 2)php配置文件在php解釋器啟動時被讀取,修改配置文件后重啟httpd服務或重啟php-fpm服務; 3)通過配置段[*]配置,directive = value方式配置每段內部信息 [php]表示核心配置信息,其他[ ]為單獨安裝包組件配置信息 4)注釋符:較新的版本中,已經完全使用;進行注釋; #:純粹的注釋信息 ;:用于注釋可啟用的directive 5)相關官方文檔 php.ini的核心配置選項文檔: http://php.net/manual/zh/ini.core.php php.ini配置選項列表:http://php.net/manual/zh/ini.list.php
php應用程序:
開源代表:wordpress, discuzX, phpwind, drupal...
示例:安裝測試php
]# yum install php ]# systemctl reload http.service ]# vim /var/www/html/phpinfo.php 編輯測試主頁:如下寫入一個php能調用自己的內建函數;這個函數可以提供一個php服務與當前系統環境的測試頁面 <?php phpinfo{}; ?> http://IP/phpinfo 瀏覽器訪問進行測試
數據庫簡介
MySQL:支持插件式存儲引擎
MySQL是一個多用戶,多線程SQL數據庫服務器 C/S:MySQL是CS架構的,所要人要與其打教道都應該通過MySQL所監聽在套接字上的MySQL協議進行 Server: mysqld, mysqld_safe, mysqld_multi Client:mysql MySQL: Community Edtion Enterprise Edtion CentOS 6: mysql-server, mysql 額外添加的配置項: [mysqld] ... skip_name_resolve :跳過主機名解析 innodb_file_per_table=ON :每表單獨的表空間
MariaDB:
CentOS 7: 服務器端程序包:mariadb-server, 客戶端程序包mariadb 配置文件:/etc/my.cnf, /etc/my.cnf.d/*.cnf 經常使用要額外添加的配置項: [mysql] skip_name_resolve = ON :跳過主機名解析 innodb_file_per_table = ON :每表單獨的表空間 centos7示例: ]# vim /etc/my.cnf 加入配置項 skip_name_resolve = ON innodb_file_per_table = ON ]# systemctl start mariadb.service 配置后啟動,初次啟動比較耗時 此時使用mysql命令就可以登錄到mysql服務上去了;mysql是需要認證授權以后才允許用戶訪問數據庫的,不過不指定連接的服務器時默認連接的就是本機的mysql server, 所以連接的時候需要用戶名和密碼,如果用戶名不指; 默認的管理員用戶為:root,密碼為空;首次安裝后建議使用mysql_secure_installation命令進行安全設定; 客戶端連接mysql server: mysql --> mysql protocol --> mysql server 語法:mysql [options] db_name 選項 -hHOST -uUSERNAME -pPASSWORD mysql的用戶賬號: username@host username:用戶名 host:此用戶可通過哪些客戶端主機登錄當前服務器上的mysql服務;主機名和IP地址屬性于不同的主機; 可使用通配符: _:任意單個字符; %:任意長度以的任意字符; root@'10.1.%.%' 首次安裝后建議使用mysql_secure_installation命令進行安全設定 進入mysql后會處于mysql命令行界面下,此時可以使用mysql命令; mysql> 可接受輸入mysql命令,分兩類 客戶端命令: help可獲取命令列表 服務端命令:SQL語句,必須使用語句結束符,默認為分號; DDL(數據定義語言):CREATE(創建), ALTER(修改), DROP(刪除) DML:INSERT(增), DELETE(刪), UPDATE(改), SELECT(查) GRANT/REVOKE:授權和取消授權命令 授權命令: GRANT ALL [PRIVILEGES] ON db.tbl TO 'username'@'host' IDENTIFIED BY 'password'; db:數據庫的名字,可以使用*通配; tbl:表的名稱,可以使用*通配; 例:mydb.*, *.*, mydb.tbl1 FLUSH PRIVILEGES:重載授權表 數據庫的基本操作: CREATE DATABASE db_name;:創建數據庫 DROP DATABASE db_name; :刪除數據庫
快速部署lamp環境:
CentOS 7: # yum install mariadb-server httpd php php-mysql # systemctl start httpd.service mariadb.service CentOS 6: # yum install httpd php php-mysql mysql-server # service httpd start # service mysqld start
原創文章,作者:M20-1馬星,如若轉載,請注明出處:http://www.www58058.com/58130