lamp簡介

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

(1)
M20-1馬星M20-1馬星
上一篇 2016-11-07 09:44
下一篇 2016-11-07 10:02

相關推薦

  • 文本處理grep

    grep:文本過濾(模式:pattern)工具grep, egrep, fgrep【適合處理比較大的文本】(不支持正則表達式搜索) sed:stream editor,文本編輯工具 awk:Linux上的實現gawk,文本報告生成器 grep(Global search 全局搜索 Regular expression 正則表達式 and Print out …

    Linux干貨 2017-05-09
  • 馬哥linux課堂筆記

    0805課堂筆記 基本權限 讀,寫,執行   對于文件的讀權限,能否查看文件內容.(文件內容需不需要看,如果是文本就需要看,如果是二進制就不需要看) 對于文件的寫權限,能否修改文件內容,不能修改文件名,不能刪除文件.(如果需要修改文件內容和文件名,必須在其父目錄增加寫權限和執行權限) 對于文件的執行權限,能否運行他.   對于目錄的讀權限…

    Linux干貨 2016-08-15
  • linux 文件管理命令

    cp 復制文件或者路徑 單源復制: cp [OPTION]…[-T] SOUTCE DEST 如果DEST不存在:則事先創建此文件,并復制源文件的數據流到DEST中 如果DEST存在:   如果DEST是非目錄文件:則覆蓋目標文件; 如果DEST是目錄,就在這個目錄中創建一個同名的文件,把源數據復制到這個文件中。 多源復制: cp [O…

    Linux干貨 2017-08-28
  • http和apache服務器

    超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。 http/1.1 :1997年1月 引入了持久連接(persistent connection) , tcp連接默認不關閉,可以被多個請…

    2017-12-05
  • ArchSummit 2017全球架構師峰會100余位國內外技術專家北京等你!

    ArchSummit全球架構師峰會是InfoQ中國團隊推出的面向高端技術管理者、架構師的技術大會,參會者中超過50%擁有8年以上的工作經驗。

    2017-11-13
  • 常用磁盤陣列說明

    一.什么是磁盤陣列     磁盤陣列英文全名為RedundantArrays of Inexpensive Disks(RAID),即容錯廉價磁盤陣列。     RAID可以將一些容量較小的磁盤通技術手段組成一個容量較大的磁盤設備,而且不只是容量上的提升,RAID還可以提供數據?!?/p>

    Linux干貨 2015-04-02
欧美性久久久久