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
下一篇 2016-11-07

相關推薦

  • Linux中的軟鏈接/硬鏈接

    Linux鏈接概念Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認情況下,ln命令產生硬鏈接。 【硬連接】硬連接指通過索引節點來進行連接。在Linux的文件系統中,保存在磁盤分區中的文件不管是什么類型都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個文件名指…

    Linux干貨 2016-10-20
  • 文件查找(Find和Locate)常用用法及摩根定律趣解(重要)

    文件查找(Find和Locate)常用用法及摩根定律趣解(重要) 摩根定律: 非(A 且 B)=(非 A)或(非 B) 非(A 或 B)=(非 A)且(非 B) 這樣看起來不是很好理解下面通過一些列圖片給大家展示; 圖(1)  圖(2)  圖二中的黑色就A且B,A且B的反面三種情況(如圖1)即為(非A)或(非B)。因此…

    Linux干貨 2016-08-21
  • Linux系統的磁盤管理

    linux磁盤及文件系統管理 磁盤分區及文件系統管理 RAID設備 LVM: 磁盤的動態編輯管理 CPU, memory(RAM), I/O I/O設備: Disks, Ethercard (網卡) Disks: 實現持久存數數據 接口類型: IDE(ata): 并口  理論速度: 133MB/s SCSI: 并口 640MB/s SATA: 串口…

    Linux干貨 2016-08-29
  • 第五周

      第五周 1 顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行;      grep "^[[:space:]]\+" /boot/grub/grub.conf 2 顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至…

    Linux干貨 2017-01-02
  • LAMP 編譯安裝基于2.4

    一 安裝前準備 說明:     操作系統:CentOS 6.7 64位     MySQL數據庫版本:mariadb-5.5.48-linux-x86_64.tar.gz     Apache 版本:httpd-2.4.12.tar.bz2…

    Linux干貨 2016-11-21
  • 系統基礎之shell腳本編程詳解3(函數)

    shell腳本編程詳解3:    在前兩節我們分別介紹了shell腳本編程的基礎和循環,判斷的知識,今天我們分享腳本的另一種用法,函數. 概論:     函數function是由若干條shell命令組成的語句塊,實現代碼重用和模塊化編程。    它與shell…

    Linux干貨 2016-08-22
欧美性久久久久