1. 程式人生 > >三十七、LAMP架構、MySQL-MariaDB介紹、MySQL安裝、

三十七、LAMP架構、MySQL-MariaDB介紹、MySQL安裝、

LAMP MariaDB MySQL安裝

三十七、LAMP架構、MySQL-MariaDB介紹、MySQL安裝、

一、LAMP架構

LAMP=Linux+Apache(httpd)+MySQL+PHP

即把Apache、MySQL、PHP安裝在Linux上,組成一個環境來運行PHP的腳本語言,通常是網站。

Linux:操作系統。centos、烏班圖就是Linux操作系統。

Apache:提供外部服務的軟件,真名叫httpd,常用的web服務軟件。

MySQL:數據庫軟件。存的不是圖片文件那些,存的是數據、字符串。

PHP:腳本語言。和shell類似,但比shell復雜。通常以做網站為主。

可以Apache+PHP安裝在一臺機器上,MySQL安裝在另一臺機器上;也 可以三個都安裝在一臺機器上,但是

Apache和PHP需要裝在同一臺機器上,因為PHP是作為Apache的一個模塊存在,它們必須安裝在一起。

技術分享圖片技術分享圖片

Apache不能和MySQL打交道,只能通過PHP模塊交換數據,Apache再交給用戶。這個取數據的行為叫做“動態請求”。

動態請求,解析:比如登錄一個網站,輸入用戶名和密碼,然後Apache去數據庫比對,此時就是通過PHP和MySQL打交道比對數據,先查到數據庫裏你的密碼是什麽,然後PHP再對比,然後Apache再反饋給你一個登錄狀態。

靜態文件,解析:比如網站內的logo,也是去Apache請求,這個logo是存在Linux服務器上的一個目錄下,拿到圖片然後反饋給用戶。該過程並沒有和MySQL打交道。

二、MySQL-MariaDB介紹

MySQL:一個關系型數據庫,由mysql ab公司開發,2008年被sun公司收購(10億刀),2009年被Oracle公司收購(74億刀)。

MySQL官網:https://www.mysql.com

MariaDB為MySQL的一個分支,官網https://mariadb.com

MariaDB主要由SkySQL公司(現更名為MariaDB公司)維護,SkySQL公司由MYSQL原作者帶領大部分原班人馬創立。

MariaDB5.5版本對應MySQL的5.5,MariaDB10.0對應MySQL的5.6。

Community社區版;Enterprise企業版;

GA(Generally Available)通用版,生產環境中用;

DMR(Development Milestone Release)開發裏程碑發布版;

RC(Release Candidate)發行候選版本;

Beta開放測試版本;Alpha內部測試版本。

三、MySQL安裝

MySQL的常用安裝包:rpm、源碼、二進制免編譯。

二進制免編譯包的好處:不用花太多時間配置編譯,可以直接用。可以指定安裝路徑,rpm包不支持。

如果要追求性能,就自己編譯,若工作中無特殊要求,就安裝這種二進制免編譯的包就可以了。

# cd /usr/local/src

5.6_64位二進制包:http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

# tar zvxf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql

# cd /usr/local/mysql

# useradd mysql

# mkdir /data/ 存放mysql的數據,ls可以查看到有這個目錄,就可以省略這步了。

# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:

Data::Dumper 初始化,實際上就是為了生成/data/mysql這個目錄。這個就是mysql的數據庫目錄,就好比keepass的存密碼的數據庫一樣。此時提示少了一個模塊,模塊名叫Dumper。

解決思路:當少了包或者模塊,又不知道模塊的名字,先模糊搜索一下:# yum list |grep perl |grep -i dumper,不知道dumper是大寫還是小寫,就加-i不區分大小寫,此方法不一定行得通但要試一下,如果行不通,就把這一段到www.bing.com、www.google.com(谷歌打不開)、http://coderschool.cn/1853.html(谷歌的鏡像,可以到這裏面的網站裏搜索)

# yum list |grep perl |grep -i dumper

perl-Data-Dumper.x86_64 2.145-3.el7 base

perl-Data-Dumper-Concise.noarch 2.020-6.el7 epel

perl-Data-Dumper-Names.noarch 0.03-17.el7 epel

perl-XML-Dumper.noarch 0.81-17.el7 base

此時搜出來四個,如果不知道哪一個,就一個個都試一下,此處需要安裝的第1個。

# yum install -y perl-Data-Dumper.x86_64

# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 再進行初始化

當你不知道這步有沒有執行成功時,第一種方法,看有沒有兩個ok,第二種,echo $?(必須是在剛敲完上面的那條命令時隨後就輸,對了就是0)

/usr/local/mysql/support-files/my-default.cnf 模板配置文件

# cp support-files/my-default.cnf /etc/my.cnf 實際上/etc/下有這個my.cnf,這是centos7默認安裝的,可以使用,但是要改一下配置。

# vim /etc/my.cnf

[mysqld]

datadir=/data/mysql 修改為/data/mysql

socket=/tmp/mysql.sock 修改為/tmp/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Settings user and group are ignored when systemd is used.

# If you need to run mysqld under a different user or group,

# customize your systemd unit file for mariadb according to the

# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]

#log-error=/var/log/mariadb/mariadb.log 註釋掉,沒什麽用

#pid-file=/var/run/mariadb/mariadb.pid 註釋掉,沒什麽用

#

# include all files from the config directory

#

#!includedir /etc/my.cnf.d

# cp support-files/mysql.server /etc/init.d/mysqld 把啟動腳本模板拷貝過去

自定義啟動腳本,第一步就是放到/etc/init.d/下,然後再配置。

# vim /etc/init.d/mysqld 按下方向鍵找到下面兩項

basedir=/usr/local/mysql 設置base地址

datadir=/data/mysql 設置數據庫目錄

其他不需要修改,改完這兩項保存即可。

# chmod 755 /etc/init.d/mysqld 此處因為它默認是755,所以不用修改。

# chkconfig --add mysqld 如果想讓它開機啟動,就把它放到系統服務列表裏去。

# chkconfig --list 可以查看到

同樣也可以用命令讓它啟動:/etc/init.d/mysqld start、service mysqld start

假如沒有把啟動的腳本或者沒有放到/etc/init.d/下,可以通過下例方法去啟動:

用命令行的方式啟動

# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &

--defaults-file=/etc/my.cnf 指定配置文件所在的路徑

如何停止這個mysql的服務:

# /etc/init.d/mysqld stop

如果以命令行開啟的,就只能# killall mysqld

killall:殺進程的命令,更安全,比如在實時的讀寫數據,寫入的數據保存在內存,還沒緩存到磁盤裏去,killall會先停止當前的操作,等數據全寫到磁盤裏去了再殺死這個進程。

經驗分享:如果mysqld的進程殺不死,ps還有進程,說明數據量很大,還在慢慢的寫入磁盤,此時不要用kill -9去殺進程,否則可能會丟數據和損壞你的表,慢慢等就可以了。

關於mysql有兩個常用的引擎:innodb(存儲量大,和Oracle類似)、myisam(存儲量比較小)


三十七、LAMP架構、MySQL-MariaDB介紹、MySQL安裝、