第十一章LAMP架構介紹(上)

11.1 LAMP架構介紹
11.2 MySQL、MariaDB介紹
11.3/11.4/11.5 MySQL安裝
11.6 MariaDB安裝
11.7/11.8/11.9 Apache安裝
11.10/11.11/11.12 安裝PHP5
11.13 安裝PHP7
11.14/11.15 Apache和PHP結合
11.16擴展
11.17課堂筆記
 
 
11.1 LAMP架構介紹
LAMP實際上是 Linux+Apache(httpd)+MySQL+PHP
 
三個服務能夠安裝在同一臺機器或者也能夠分開安裝(可是httpd和PHP要在一塊兒)
 
httpd、PHP、MySQL三者之間的工做
注:Apache和PHP是一個總體,由於PHP以模塊的形式跟Apache結合在一塊兒;
可是Apache不能直接跟MySQL打交道,只能經過PHP模塊去MySQL裏面拿數據,而後將結果交給Apache,最後Apache將結果交給用戶(這是動態請求)
 
例如:進入一個PHP網站進行網站登陸,登陸請求先交給Apache,Apache判斷請求是動態仍是靜態,
如果 動態請求,Apache拿着用戶的登陸帳號和密碼經過PHP模塊對比MySQL保存的用戶密碼是否正確,而後Apache返回給用戶一個登陸的狀態;
如果 靜態請求,登陸網站時有圖片須要加載,也是向Apache發送請求,Apache經過某個目錄拿到這個圖片
,而後返回給用戶
 
 
11.2 MySQL、MariaDB介紹
MySQL是一個關係型數據庫,由mysql ab公司開發,mysql在2008年被sun公司收購(10億刀),2009年sun公司被oracle公司收購(74億刀)
 
MySQL官網 https://www.mysql.com  最新版本5.7GA/8.0DMR
 
MySQL5.6變化比較大,5.7性能上有很大提高
 
Mariadb爲MySQL的一個分支,官網 https://mariadb.com/      最新版本10.2
 
MariaDB主要由SkySQL公司(現改名爲MariaDB公司)維護,SkySQL公司由MySQL原做者帶領大部分原班人馬創立.
 
Mariadb5.5版本對應MySQL的5.5,10.0對應MySQL5.6
 
Community 社區版本,Enterprise 企業版,GA(Generally Available)指通用版本,在生產環境中用的,DMR(Development Milestone Release)開發里程碑發佈版,RC(Release Candidate)發行候選版本,Beta開放測試版本,Alpha內部測試版本
 
 
11.3/11.4/11.5 MySQL安裝
MySQL的幾個經常使用安裝包:rpm、源碼、二進制免編譯
 
二進制免編譯(沒特殊要求時可用這種方法)
一、下載mysql包
cd /usr/local/src
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz 
 
二、解壓包,並將包移動到/usr/local/mysql目錄
tar -zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.39-linux-glibc2.12-x86_64  /usr/local/mysql
 
三、新增長mysql用戶,並在根目錄下建立/data/目錄
cd /usr/local/mysql
useradd mysql        
mkdir /data/         #存放MySQL數據目錄(在根目錄下)
 
四、初始化mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql               #初始化(生成MySQL數據庫)
#--user指定用戶, --datadir指定MySQL數據庫目錄
 
ps:檢查是否初始化成功兩種方法
1、查看是否有兩個ok
2、echo $?  爲0
 
五、拷貝配置文件參考模板到默認的/etc/my.cnf
cp support-files/my-default.cnf  /etc/my.cnf
#my-default.cnf 是mysql配置文件
##默認將my-default.cnf 放在/etc/目錄下
 
六、定義配置文件
vim /etc/my.cnf
#datadir放在/data/mysql;socket放在/tmp/mysql.sock;pid-file和includedir註釋掉:
 
七、拷貝啓動腳本到/etc/init.d/mysqld
cp support-files/mysql.server /etc/init.d/mysqld
 
八、定 義啓動腳本
vi /etc/init.d/mysqld    #啓動腳本,定義basedir和datadir,
內容以下:
basedir=/usr/local/mysql
datadir=/data/mysql
 
#要確保/etc/init.d/mysqld的文件權限是755
 
開啓MySQL的三種方法
1、設置mysql開機自啓
chkconfig --add mysqld
 
2、服務命令啓動
 /etc/init.d/mysqld start  或者  service mysqld  start
 
3、命令行啓動
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf  --user=mysql  --datadir=/data/mysql  &
#--defaults-file=配置文件所在路徑
##適用於你的配置文件所在路徑不在etc目錄或者啓動腳本不在/etc/init.d/目錄,讓mysql正常啓動
 
關閉MySQL
1、服務方式
/etc/init.d/mysqld stop  
 
2、命令行方式
killall mysqld
 
使用kill關閉mysqld時,必定要使用killall mysqld,不能用kill  -9 [pid]
#由於mysqld會實時的讀寫數據,寫數據的速度很快,可能會把寫的數據保存在內存中(緩存中),或許這部分緩存並未同步到磁盤中去,如果直接使用kill -9 pid  ,會形成數據丟失;如果使用killall,會先中止當前的寫讀操做,讓還沒寫入磁盤的數據繼續寫入磁盤,直到全部數據寫完才哦會把進程殺死
##若是遇到mysqld進程始終殺不死,等了一分鐘還沒殺死,ps還會有進程,說明數據量很大,還在慢慢寫入磁盤,這時要等待數據寫入完後再killall進程,不要強制用kill -9,這極可能會形成數據丟失或者損壞數據表
 
錯誤:
1、
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解決:
 yum list |grep perl |grep -i dumper  #查找含有perl和dumper的包
 yum install -y perl-Data-Dumper
 
2、
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解決:
yum install -y libaio-devel
 
11.6 MariaDB安裝
二進制免編譯安裝
1、下載包
cd /usr/local/src
wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz 
 
2、解壓包並移動到/usr/local/目錄下
tar -zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
 
3、初始化
cd /usr/local/mariadb
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
 
4、拷貝配置文件到/usr/local/mariadb目錄(由於/etc/目錄下有mysql了)
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
 
注意:mariadb有多個類型配置文件模板,不一樣之處在於緩存或緩衝的數值大小不同,因此要根據自身內存大小選擇合適的緩存,能讓mysql性能更高效
 
5、定義配置文件
vi /usr/local/mariadb/my.cnf      #定義basedir和datadir  改[mysqld]這部分,添加datadir=/data/mariadb
 
6、拷貝啓動腳本到/etc/init.d/目錄下
cp support-files/mysql.server /etc/init.d/mariadb
#拷貝啓動腳本到/etc/init.d/mariadb目錄
 
7、定義啓動腳本
vim /etc/init.d/mariadb  #定義basedir、datadir、conf以及啓動參數
##若是啓動腳本是放在/etc/目錄下的話,就不用定義conf這個變量
修改內容以下:
basedir=/usr/local/mariadb
datadir=/data/mariadb
conf=/usr/local/mariadb/my.conf
 
還要找到啓動命令那行,將conf添加進去
中間插入添加一句  --default file="$conf"
 
#開啓前要檢查mysql是否中止,由於mysql和mariadb監聽的端口是同樣的
/etc/init.d/mariadb start
 
 
11.7/11.8/11.9 Apache安裝
Apache是一個基金會的名字,httpd纔是咱們要安裝的軟件包,早期它的名字就叫apache
Apache官網www.apache.org
 
源碼包安裝Apache
一、先下載Apache所需的包
wget  http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.tar.gz
wget  http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz
wget  http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
apr和apr-util是一個通用的函數庫,它讓httpd能夠不關心底層的操做系統平臺,能夠很方便地移植(從linux移植到windows)
 
二、解壓包
tar -zxvf httpd-2.4.34.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
tar -zxvf apr-1.6.3.tar.gz
 
三、編譯apr包
cd /usr/local/src/apr-1.6.3
./configure --prefix=/usr/local/apr
 
make && make install
 
四、編譯apr-util包
cd /usr/local/src/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
 
make && make install
 
五、編譯httpd包
cd /usr/local/src/httpd-2.4.34
./configure    --prefix=/usr/local/apache2.4   --with-apr=/usr/local/apr   --with-apr-util=/usr/local/apr-util   --enable-so    --enable-mods-shared=most 
 
--enable-so    #支持動態擴展
 
#make前要把apr和apr-util的目錄放到/usr/local/apache2.4/srclib/目錄下
cp -r /usr/local/src/ apr-1.6.3       srclib/
cp -r  /usr/local/src/ apr-util-1.6.1    srclib/
 
make && make install
 
#most指的是絕大多數經常使用的模塊
 
httpd內的目錄
/bin/目錄         #表示執行可執行文件(命令)
/conf/              #配置文件所在目錄
/htdocs/          #訪問網站所在目錄
/logs/              #日誌所在目錄(幫助文檔、錯誤日誌等)
/modules/       #擴展模塊所在目錄
 
ls /usr/local/apache2.4/modules
 
/usr/local/apache2.4/bin/httpd -M   #查看加載的模塊
 
/usr/local/apache2.4/bin/apachectl   -M  #同等效果,查看加載模塊
#static,表示靜態模塊,直接編譯進了主腳本(/bin/httpd)裏面
#shared,表示擴展模塊,是一個.so結尾的文件,在/modules目錄下
 
啓動httpd
/usr/local/apache2.4/bin/apachectl  start
 
錯誤:
1、
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
解決:
yum install -y gcc
 
2、
config.status: executing libtool commands
rm: cannot remove 'libtoolT': No such file or directory
config.status: executing default commands
解決:
這個錯誤沒有關係,不影響
 
3、
xml/apr_xml.c:35:19: 致命錯誤:expat.h:沒有那個文件或目錄
#include <expat.h>
                   ^
編譯中斷。
make[1]: *** [xml/apr_xml.lo] 錯誤 1
make[1]: 離開目錄「/usr/local/src/apr-util-1.6.1」
make: *** [all-recursive] 錯誤 1
解決:
yum install -y expat-devel
 
4、
checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
解決:
yum install -y pcre-devel
 
5、
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] 錯誤 1
make[2]: 離開目錄「/usr/local/apache2.4/support」
make[1]: *** [all-recursive] 錯誤 1
make[1]: 離開目錄「/usr/local/apache2.4/support」
make: *** [all-recursive] 錯誤 1
解決:
沒有在httpd make前將apr和apr-util目錄拷貝到httpd2.4目錄下的srclib目錄裏面
 
 
11.10/11.11/11.12 安裝PHP5
PHP官網www.php.net
當前主流版本爲5.6/7.1
源碼包安裝
一、下載php5包
cd /usr/local/src/
 
 
二、解壓包
tar -jxvf php-5.6.32.tar.bz2
 
三、編譯包
#由於編譯php時要指定apache的路徑,因此要先安裝apache
cd php-5.6.32
 
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php/etc  --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
 
make && make install
 
/usr/local/php/bin/php  -m     #查看PHP加載的模塊(全是靜態)
 
Apache和PHP5是經過 libphp5.so這個文件才結合起來的
libphp5.so在/usr/loacl/http2.4/modules/目錄下
 
四、拷貝一份配置文件模板到/usr/local/php/etc/(這個目錄默認爲空)
cp php.ini-production  /usr/local/php/etc/php.ini
#php.ini-production適合在 生產環境用的php配置文件;php.ini-development適合在 開發環境用的PHP配置文件
 
 
11.13 安裝PHP7
源碼包安裝
一、下載php7包
cd /usr/local/src/
 
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
 
二、解壓包
tar -jxvf php-7.1.6.tar.bz2
 
三、編譯包
cd php-7.1.6
./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc  --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
 
make && make install
 
ls /usr/local/apache2.4/modules/libphp7.so
#Apache和PHP7是經過 libphp7.so這個文件才結合起來的
 
四、拷貝配置文件到/usr/local/php/etc
cp php.ini-production  /usr/local/php7/etc/php.ini
 
注意:php5和php7能夠在同一臺機器共存,可是Apache使用時須要指定php;安裝php5和php7後, 兩種php都會在Apache配置文件 /usr/local/apache2.4/conf/httpd.conf 內產生 libphp5.so libphp7.so 模塊 將不用的模塊註釋掉便可
 
 
11.14/11.15 Apache和PHP結合
httpd主配置文件 /usr/local/apache2.4/conf/httpd.conf
 
vim /usr/local/apache2.4/conf/httpd.conf 
#修改如下4個地方
一、 ServerName                      #將ServerName前面的#刪掉
這樣啓動httpd服務是就不會提示沒有ServerName
 
二、 Require all denied             #將denied改成 granted
不修改前會出現403 forbidden錯誤,修改後即可以正常訪問
 
三、 AddType application/x-httpd-php .php    #增長這一行
增長這一行能夠後能夠解析php;若是發現網頁顯示的是php的代碼,說明解析不了php
 
四、DirectoryIndex index.html index.php    #在index.html後面增長index.php
增長一個索引頁(默認網址不輸入index.php也能跳轉到index.php)
 
ps:
打開windows系統的telnet客戶端方法
#telnet客戶端用於window鏈接Linux服務器
控制面板--》程序--》啓用或關閉程序功能--》選擇telnet客戶端,而後點擊肯定
 
/usr/local/apache2.4/bin/apachectl -t  #測試配置文件語法是否正確
#每次修改配置文件要檢查
/usr/local/apache2.4/bin/apachectl  graceful  #從新加載配置文件(並不會重啓服務)
 
快捷小技巧:CTRL+R能夠快速訪問命令歷史的命令
按CTRL+R,而後輸入關鍵命令,就會顯示出完整命令
 
/usr/local/apache2.4/bin/apachectl start   #啓動服務
/usr/local/apache2.4/bin/apachectl restart   #從新加載服務
 
 
vim /usr/local/apache2.4/htodcs/test.php   #增長索引頁以下內容
<?php
echo 123;
?>
 
問題:
若是發現網頁顯示的是php的代碼,說明解析不了php
第一步,檢查是否有php模塊
ls  /usr/local/httpd2.4/modules/libphp5.so
 
第二步,若是有文件,可是並無顯示,檢查httpd配置文件有沒有加載libphp5.so模塊
 
第三步,檢查是否有加解析php的語句AddType application/x-httpd-php .php ,並查看句子是否寫對(httpd-php與.php之間有空格)
 
第四步、檢查index.php
 
 
11.16擴展
mysql5.7二進制包安裝(變化較大)   http://www.apelearn.com/bbs/thread-10105-1-1.html
php中mysql,mysqli,mysqlnd,pdo究竟是什麼 http://blog.csdn.net/u013785951/article/details/60876816
 
11.17課堂筆記
1、LAMP的工做原理
瀏覽器向服務器發送http請求,服務器接收請求,因爲php做爲Apache的組件模塊也會一塊兒啓動,它們具備相同的生命週期。Apache會將一些靜態資源保存,而後去調用PHP處理模塊進行php腳本的處理。處理完腳本後,Apache將處理完的信息經過http response的方式發送給瀏覽器,瀏覽器解析,渲染等一些了操做後呈現整個網頁。
#php和mysql之間的聯繫是動態請求
#若是隻是查看圖片就是靜態請求,Apache能夠直接解析。不會用到php和mysql動態請求。(mysql不能存圖片等文件)
 
http抓包工具fiddler
 
 
2、安裝Apache
pcre包   #就是讓Apache支持正則
 
expat-devel  pcre-devel   zlib-devel
 
查看Apache加載了什麼模塊
/usr/local/apache2/bin/httpd -M
 
/usr/local/apache2/bin/httpd -l
 
啓動Apache後要想解析php網頁,先關閉SElinux,要關閉防火牆或者定義規則
一、關閉firewalld,增長iptables規則
iptables -I INPUT  -p  tcp  --dport 80  -j  ACCEPT
 
二、增長firewalld規則
啓動firewalld
而後 firewall-cmd --get-default-zone
firewall-cmd --zone=public --add-service=http-permanent
firewall-cmd --reload
 
 
3、MySQL安裝
一、yum安裝,缺乏定製功能,安裝簡單
2.二進制免編譯安裝,能夠按需定製,
三、源代碼編譯安裝,能夠提供最高的性能
 
建立用戶時指定shell
  •  /bin/bash      普通用戶可登陸
  • /sbin/nologin    不讓普通用戶登陸,FTP可登陸
  • /bin/false     連FTP用戶都登陸不了
 
##MySQL啓動不了,出現錯誤,應該查看mysql的錯誤日誌文件,在/data/mysql/目錄下的主機名.err文件;若是沒有錯誤就是配置文件有誤,檢查配置文件。
[root@xinlinux-03 ~]#  cd /data/
[root@xinlinux-03 data]#  ls
mysql
[root@xinlinux-03 data]#  cd mysql
[root@xinlinux-03 mysql]#  ls
auto.cnf  ib_logfile0  mysql               test             xinlinux-03.pid
ibdata1   ib_logfile1  performance_schema   xinlinux-03.err
 
 
4、安裝PHP5
編譯
--with-apxs2=/usr/loacl/apache2.4/bin/apxs
#apxs工具能夠自動配置libphp5.so這個文件
 
--with-config-file-path=/usr/local/php/etc
#指定php配置文件目錄
 
--with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
#指定mysql、pdo-mysql、mysqli讓mysql能和php進行通訊
 
 
5、myslq5.7版本
1. 下載包
wget   http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
若該連接失效,請到r.aminglinux.com 找最新的下載地址。
 
2. 解壓
tar  xxvf mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
mv  mysql-5.7.12-linux-glibc2.5-x86_64  /usr/local/mysql
 
3. 初始化
useradd -M -s /sbin/nologin  mysql
mkdir -p /data/mysql
chown mysql /data/mysql
cd /usr/local/mysql
 
./bin/mysqld  --initialize --user=mysql --datadir=/data/mysql
注意,這一步最後一行會有一個提示
[Note] A temporary password is generated for root@localhost: B*s1i(*,kXwg
最後面的字符串爲root密碼。
./bin/mysql_ssl_rsa_setup --datadir=/data/mysql
 
4. 拷貝配置文件和啓動腳本
cp support-files/my-default.cnf  /etc/my.cnf  
vim /etc/my.cnf     #編輯或者修改
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
 
cp support-files/mysql.server /etc/init.d/mysqld
vi /etc/init.d/mysqld    #編輯或者修改
basedir=/usr/local/mysql
datadir=/data/mysql
 
5. 啓動服務
/etc/init.d/mysqld start
 
6. 設置root密碼
使用初始化密碼登陸
/usr/local/mysql/bin/mysql -uroot -p'B*s1i(*,kXwg'  #進入後直接設置密碼
mysql>set password = password('mypass');   #必定要設置一下新密碼
退出來,再使用新的密碼登陸就能夠了
 
七、還有一種狀況,就是不知道初始化密碼
vi /etc/my.cnf
在[mysqld]下面增長一行
skip-grant-tables
 
重啓   /etc/init.d/mysqld restart
/usr/local/mysql/bin/mysql -uroot
mysql> update user set authentication_string=password('123333') where user='root';
退出來後,更改my.cnf,去掉剛加的 skip-grant-tables
重啓 /etc/init.d/mysqld restart
此時就可使用新的密碼了。
 
6、Apache的DSO原理
DSO(動態共享目標)()
DSO是Dynamic Shared Objects(動態共享目標)的縮寫,它是現代Unix派生出來的操做系統都存在着的一種動態鏈接機制。它提供了一種在運行時將特殊格式的代碼,在程序運行須要時,將須要的部分從外存調入內存執行的方法。Apache在1.3之後的版本後開始支持它。由於Apache早就使用一個模塊概念來擴展它的功能而且在內部使用一個基於調度的列表來連接擴展模塊到Apache核心模塊.因此,Apache早就註定要使用DSO來在運行時加載它的模塊。
 
 
7、Apache的apxs功能
能夠用來編譯modules中的模塊,生成.so的文件
 
 
8、Apache的三種MPM模式
 Apache 2.X  支持插入式並行處理模塊,稱爲多路處理模塊(MPM)。在編譯apache時必須選擇也只能選擇一個MPM,對類UNIX系統,有幾個不一樣的MPM可供選擇,它們會影響到apache的速度和可伸縮性。
一、prefork MPM    多進程
 
優勢:成熟,兼容全部新老模塊。進程之間徹底獨立,使得它很是穩定。同時,不須要擔憂線程安全的問題。(咱們經常使用的mod_php,PHP的拓展不須要支持線程安全)
缺點:一個進程相對佔用更多的系統資源,消耗更多的內存。並且,它並不擅長處理高併發請求,在這種場景下,它會將請求放進隊列中,一直等到有可用進程,請求才會被處理。
 
二、worker MPM    多進程+多線程
優勢:佔據更少的內存,高併發下表現更優秀。
缺點:必須考慮線程安全的問題,由於多個子線程是共享父進程的內存地址的。若是使用keep-alive的長鏈接方式,也許中間幾乎沒有請求,這時就會發生阻塞,線程被掛起,須要一直等待到超時纔會被釋放。若是過多的線程,被這樣佔據,也會致使在高併發場景下的無服務線程可用。(該問題在prefork模式下,一樣會發生)
 
三、event  MPM  多進程+多線程+epoll
keep-alive   #手拉手,表示兩邊一直鏈接着不斷開,即便交流完也不斷開
它解決了 keep-alive 場景下 ,長期被佔用的線程的資源浪費問題(某些線程由於被keep-alive,掛在那裏等待,中間幾乎沒有請求過來,一直等到超時)。
 
 
9、mysql、mysqli、pdo
MYSQL 也叫 Original MySQL,PHP4版本的MYSQL擴展,從PHP5起已經被廢棄,並別從PHP7開始已經被移除。
 
MYSQLI 叫作 「MySQL加強擴展」。
 
MYSQLND MYSQL NATIVE DIRVER 叫作MYSQL 「官方驅動」或者更加直接點的叫作「原生驅動」
 
PDO PHP Data Objects PHP數據對象,是PHP應用中的一個數據庫抽象層規範。
 
 
10、查看Nginx、Apache、MYSQL和PHP的編譯參數
Linux下查看Nginx、Napache、MySQL、PHP的編譯參數的命令以下:
 
一、nginx編譯參數:
# /usr/local/nginx/sbin/nginx -V
 
二、apache編譯參數:
# cat /usr/local/apache/build/config.nice
 
三、php編譯參數:
# /usr/local/php/bin/php -i |grep configure
 
四、mysql編譯參數:
# cat /usr/local/mysql/bin/mysqlbug|grep configure
 
 
11.1 LAMP架構介紹
11.2 MySQL、MariaDB介紹
11.3/11.4/11.5 MySQL安裝
11.6 MariaDB安裝
11.7/11.8/11.9 Apache安裝
11.10/11.11/11.12 安裝PHP5
11.13 安裝PHP7
11.14/11.15 Apache和PHP結合
11.16擴展
11.17課堂筆記
 
 
11.1 LAMP架構介紹
LAMP實際上是 Linux+Apache(httpd)+MySQL+PHP
 
三個服務能夠安裝在同一臺機器或者也能夠分開安裝(可是httpd和PHP要在一塊兒)
 
httpd、PHP、MySQL三者之間的工做
注:Apache和PHP是一個總體,由於PHP以模塊的形式跟Apache結合在一塊兒;
可是Apache不能直接跟MySQL打交道,只能經過PHP模塊去MySQL裏面拿數據,而後將結果交給Apache,最後Apache將結果交給用戶(這是動態請求)
 
例如:進入一個PHP網站進行網站登陸,登陸請求先交給Apache,Apache判斷請求是動態仍是靜態,
如果 動態請求,Apache拿着用戶的登陸帳號和密碼經過PHP模塊對比MySQL保存的用戶密碼是否正確,而後Apache返回給用戶一個登陸的狀態;
如果 靜態請求,登陸網站時有圖片須要加載,也是向Apache發送請求,Apache經過某個目錄拿到這個圖片
,而後返回給用戶
 
 
11.2 MySQL、MariaDB介紹
MySQL是一個關係型數據庫,由mysql ab公司開發,mysql在2008年被sun公司收購(10億刀),2009年sun公司被oracle公司收購(74億刀)
 
MySQL官網 https://www.mysql.com  最新版本5.7GA/8.0DMR
 
MySQL5.6變化比較大,5.7性能上有很大提高
 
Mariadb爲MySQL的一個分支,官網 https://mariadb.com/      最新版本10.2
 
MariaDB主要由SkySQL公司(現改名爲MariaDB公司)維護,SkySQL公司由MySQL原做者帶領大部分原班人馬創立.
 
Mariadb5.5版本對應MySQL的5.5,10.0對應MySQL5.6
 
Community 社區版本,Enterprise 企業版,GA(Generally Available)指通用版本,在生產環境中用的,DMR(Development Milestone Release)開發里程碑發佈版,RC(Release Candidate)發行候選版本,Beta開放測試版本,Alpha內部測試版本
 
 
11.3/11.4/11.5 MySQL安裝
MySQL的幾個經常使用安裝包:rpm、源碼、二進制免編譯
 
二進制免編譯(沒特殊要求時可用這種方法)
一、下載mysql包
cd /usr/local/src
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz 
 
二、解壓包,並將包移動到/usr/local/mysql目錄
tar -zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.39-linux-glibc2.12-x86_64  /usr/local/mysql
 
三、新增長mysql用戶,並在根目錄下建立/data/目錄
cd /usr/local/mysql
useradd mysql        
mkdir /data/         #存放MySQL數據目錄(在根目錄下)
 
四、初始化mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql               #初始化(生成MySQL數據庫)
#--user指定用戶, --datadir指定MySQL數據庫目錄
 
ps:檢查是否初始化成功兩種方法
1、查看是否有兩個ok
2、echo $?  爲0
 
五、拷貝配置文件參考模板到默認的/etc/my.cnf
cp support-files/my-default.cnf  /etc/my.cnf
#my-default.cnf 是mysql配置文件
##默認將my-default.cnf 放在/etc/目錄下
 
六、定義配置文件
vim /etc/my.cnf
#datadir放在/data/mysql;socket放在/tmp/mysql.sock;pid-file和includedir註釋掉:
 
七、拷貝啓動腳本到/etc/init.d/mysqld
cp support-files/mysql.server /etc/init.d/mysqld
 
八、定 義啓動腳本
vi /etc/init.d/mysqld    #啓動腳本,定義basedir和datadir,
內容以下:
basedir=/usr/local/mysql
datadir=/data/mysql
 
#要確保/etc/init.d/mysqld的文件權限是755
 
開啓MySQL的三種方法
1、設置mysql開機自啓
chkconfig --add mysqld
 
2、服務命令啓動
 /etc/init.d/mysqld start  或者  service mysqld  start
 
3、命令行啓動
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf  --user=mysql  --datadir=/data/mysql  &
#--defaults-file=配置文件所在路徑
##適用於你的配置文件所在路徑不在etc目錄或者啓動腳本不在/etc/init.d/目錄,讓mysql正常啓動
 
關閉MySQL
1、服務方式
/etc/init.d/mysqld stop  
 
2、命令行方式
killall mysqld
 
使用kill關閉mysqld時,必定要使用killall mysqld,不能用kill  -9 [pid]
#由於mysqld會實時的讀寫數據,寫數據的速度很快,可能會把寫的數據保存在內存中(緩存中),或許這部分緩存並未同步到磁盤中去,如果直接使用kill -9 pid  ,會形成數據丟失;如果使用killall,會先中止當前的寫讀操做,讓還沒寫入磁盤的數據繼續寫入磁盤,直到全部數據寫完才哦會把進程殺死
##若是遇到mysqld進程始終殺不死,等了一分鐘還沒殺死,ps還會有進程,說明數據量很大,還在慢慢寫入磁盤,這時要等待數據寫入完後再killall進程,不要強制用kill -9,這極可能會形成數據丟失或者損壞數據表
 
錯誤:
1、
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解決:
 yum list |grep perl |grep -i dumper  #查找含有perl和dumper的包
 yum install -y perl-Data-Dumper
 
2、
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解決:
yum install -y libaio-devel
 
 
11.6 MariaDB安裝
二進制免編譯安裝
1、下載包
cd /usr/local/src
wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz 
 
2、解壓包並移動到/usr/local/目錄下
tar -zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
 
3、初始化
cd /usr/local/mariadb
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
 
4、拷貝配置文件到/usr/local/mariadb目錄(由於/etc/目錄下有mysql了)
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
 
注意:mariadb有多個類型配置文件模板,不一樣之處在於緩存或緩衝的數值大小不同,因此要根據自身內存大小選擇合適的緩存,能讓mysql性能更高效
 
5、定義配置文件
vi /usr/local/mariadb/my.cnf      #定義basedir和datadir  改[mysqld]這部分,添加datadir=/data/mariadb
 
6、拷貝啓動腳本到/etc/init.d/目錄下
cp support-files/mysql.server /etc/init.d/mariadb
#拷貝啓動腳本到/etc/init.d/mariadb目錄
 
7、定義啓動腳本
vim /etc/init.d/mariadb  #定義basedir、datadir、conf以及啓動參數
##若是啓動腳本是放在/etc/目錄下的話,就不用定義conf這個變量
修改內容以下:
basedir=/usr/local/mariadb
datadir=/data/mariadb
conf=/usr/local/mariadb/my.conf
 
還要找到啓動命令那行,將conf添加進去
中間插入添加一句  --default file="$conf"
 
#開啓前要檢查mysql是否中止,由於mysql和mariadb監聽的端口是同樣的
/etc/init.d/mariadb start
相關文章
相關標籤/搜索