LAMP架構介紹MySQL安裝

[toc]php

LAMP架構介紹MySQL安裝

1、 LAMP架構介紹

1.Linux+Apache(httpd)+MySQL+PHP

Appache是最經常使用的web服務軟件,而MYSQL是比較小型的數據庫軟件,這兩個軟件及PHP均可以安裝到windows機器上 markhtml

1.1 經常使用的PHP網站(Google、淘寶、百度、51cto博客、猿課論壇)

擴展:mysql

什麼是腳本語言?,爲何php語言是腳本語言 問:一、腳本語言和編程語言和html是否是計算機語言的主要的分類?區別在什麼地方?關鍵是php是腳本語言這個怎麼理解?——由於我纔剛開始學php語言,因此請大俠們說得儘可能通俗易懂些。linux

二、我要作功能比較全的網站,用的是自主建站系統,可是是否是最好也學點php語言?c++

答1:編程語言通常用來編寫應用程序,像C,C++,VB,DEPHI,JAVA等,功能強大,學習難度也較大。 腳本語言通常用來編寫一些簡單的應用,像JS,VBS,JSP,ASP,PHP等,宏程序也能夠算是腳本語言。腳本語言比起編程語言來講最大的缺點是執行效率低,但編寫要容易點。程序員

HTML不算是語言,雖然它叫超文本標記語言,其實只能算是一些控制標記,寫出來的也不稱爲程序。 靜態網頁中也能夠有VBS或JS腳本,它們只是前臺的。web

ASP中既能夠用VBS也能夠JS,只不過一般大部分人用VBS罷了,它們是後臺的。 PHP與C語法幾乎相同,其實與JS也幾乎相同,都很接近面試

你要作網站要學習ASP(有點落後了,不過入門較容易)或PHP或JSP或ASP.net(能夠學VB.net也能夠學C#.net)中的至少同樣。 免費的整站系統能夠無償使用修改,但大多不容許商業使用,你能夠去相應的官方網站查看受權文件。sql

答二:c;c++;perl;vb;彙編等等這些屬於編程語言 腳本語言主要是咱們常見的asp;php等 asp從屬於vb,是vb的一個子集 php是使用c開發的 不論是asp仍是php都是須要服務器解析執行,可是html和他們是不一樣的,html不須要服務器解析執行,他只須要直接輸出就好了,因此咱們叫html是超文本.數據庫

若是你使用的自助建站系統是php開發的,那麼假若你想開發複雜的網站你最好學一下PHP,這樣你就能夠改寫建站系統的核心,可是若是你只用它來作普通的企業站,php你學不學都不要緊.

1.2 三個角色能夠在一臺機器、也能夠分開(httpd和PHP要在一塊兒)???Apache和PHP須要安裝到同一臺機器上,由於PHP是做爲Apache的一個模塊存在的,兩個必須在一塊兒

2.httpd、PHP、MySQL三者如何工做

mark MySQL存儲用戶名;密碼和數據、圖片之類的放在靜態文件裏

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.4 MySQL安裝

cd /usr/local/src
 wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 
 tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
 mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
 cd /usr/local/mysql
 useradd mysql
 mkdir /data/
 ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
 cp support-files/my-default.cnf  /etc/my.cnf 
 cp support-files/mysql.server /etc/init.d/mysqld
 vi /etc/init.d/mysqld
定義basedir和datadir
 /etc/init.d/mysqld start

1.下載MySQL軟件包,MySQL的幾個經常使用安裝包:rpm、源碼、二進制免編譯

擴展MySQL三種安裝包的區別:
  • [ ] rpm格式: xxxx-devel-6b-33.x86_64.rpm #rpm格式很好區分,

  • [ ] 二進制包: xxxxx-3.23.58-pc-linux-i686.tar.gz #二進制格式的包名字很長,有版本號、適應平臺、適應的硬件類型等,格式:mysql-<版本>-<OS>-tar.gz

  • [ ] 源碼包: php-5.2.14.tar.gz #而源碼格式僅僅就是一個版本號的tar包。#cj 安裝區別:解壓、./config、make、make install

1.1查看系統版本:uname -i

[root@localhost src]# uname -i
x86_64

1.2 下載源碼包前指定一個通用目錄,該目錄保存全部軟件包

什麼是源碼包:源碼包都是能夠更改的C或者C++語言編寫的源碼文件,而免編譯的二進制包就是已經編譯過的文件再打包後提供給咱們.好比windows上安裝的QQ,360都是這種安裝包.

[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

2.初始化

2.1 解壓軟件包

[root@localhost src]#tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

2.2 挪動位置將解壓文件放在/usr/local/mysql/目錄下

[root@localhost src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql

擴展:若是已經存在,是覆蓋更新mysql軟件版本的狀況

# [ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old

相似一條if判斷,意思是若是/usr/local/mysql目錄存在,就改一下名字,以避免影響後面的操做,若是不更改原有的路徑名稱,新安裝的mysql步驟會失敗

2.3 檢查/usr/local/mysql/目錄是否正確,有無多餘的文件,避免誤操做

[root@localhost src]# cd /usr/local/mysql/
[root@localhost mysql]# ls
bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files

2.4 建立mysql用戶,由於啓動MySQL須要該用戶

[root@localhost mysql]# useradd mysql

在書中的建立方式爲:# useradd -s /sbin/nologin mysql

2.5 建立/data/目錄並更改權限,用於存放mysql的數據文件,爲下一步的datadir準備

[root@localhost mysql]# mkdir /data/ 若data已經存在,無需再新建
# chown -R mysql:mysql /data/mysql //給/data/mysql這個文件夾服務mysql用戶的執行權限

2.6 初始化mysql:./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //創建mysql庫

--user 定義數據庫的所屬主, --datadir 定義數據庫安裝到哪裏,建議放到大空間的分區上,這個目錄須要自行建立。

初始化的時候,可能回出現以下問題:

[root@localhost mysql]# ./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

2.7如何判斷確實安裝包或模塊:缺乏Perl模塊,缺乏Dumper的支持

yum list | grep perl | grep -i dumper

那麼怎麼解決呢? 使用模糊搜索,過濾關鍵來嘗試解決:

[root@localhost mysql]# 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

搜索完成後出現以上四個安裝包,沒法肯定須要哪一個安裝包的時候,能夠嘗試每一個安裝包都試下。

[root@localhost mysql]# yum install -y perl-Data-Dumper.x86_64

2.8 找到安裝包,從新初始化mysql

執行:

[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
第一種,看到兩個OK,確認下

mark

第二種,執行 echo $?,查看上一條命令是否有問題
[root@localhost mysql]# echo $?
0

3. 配置MySQL

3.1 首先複製配置文件my-default.cnf

[root@xavi mysql]# ls support-files/my-default.cnf
support-files/my-default.cnf
[root@xavi mysql]# cp support-files/my-default.cnf /etc/my.cnf

編輯配置文件my.cnf,socket定義MySQL服務監聽的套接字地址,在Linux系統下面,不少服務不只能夠監聽一個端口(經過TCP/IP的方式通訊),也能夠監聽socket,兩個進程就能夠經過這個socket文件通訊.

延伸閱讀:socket

絡上的兩個程序經過一個雙向的通訊鏈接實現數據的交換,這個鏈接的一端稱爲一個socket。 創建網絡通訊鏈接至少要一對端口號(socket)。socket本質是編程接口(API),對TCP/IP的封裝,TCP/IP也要提供可供程序員作網絡開發所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通訊的能力。 Socket的英文原義是「孔」或「插座」。做爲BSD UNIX的進程通訊機制,取後一種意思。一般也稱做"套接字",用於描述IP地址和端口,是一個通訊鏈的句柄,能夠用來實現不一樣虛擬機或不一樣計算機之間的通訊。在Internet上的主機通常運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,並綁定到一個端口上,不一樣的端口對應於不一樣的服務。Socket正如其英文原義那樣,像一個多孔插座。一臺主機猶如佈滿各類插座的房間,每一個插座有一個編號,有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節目。 客戶軟件將插頭插到不一樣編號的插座,就能夠獲得不一樣的服務。

vim編輯my.cnf,修改datadir,socket路徑

# *** upgrade to a newer version of MySQL.

[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
# Remove leading # and set to the amount of RAM for the most important data

rpm -qf查詢某文件來自哪安裝包

[root@xavi mysql]# ls /etc/my.cnf
/etc/my.cnf
[root@xavi mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.52-1.el7.x86_64

3.2 爲了在啓動項中完成mysql配置,須要將mysql.server腳本 放到/etc/init.d/mysqld目錄下,並編輯修改,這裏是啓動腳本

[root@localhost mysql]# ls support-files/
binary-configure  magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server

[root@localhost mysql]#  cp support-files/mysql.server /etc/init.d/mysqld

3.3 修改腳本權限和屬性:chmod 755 /etc/init.d/mysqld

[root@localhost mysql]# chmod 755 /etc/init.d/mysqld
[root@localhost mysql]# ls -l //查看呢修改事後的權限
/etc/init.d/mysqld
-rwxr-xr-x 1 root root 10594 2月  28 11:41 /etc/init.d/mysqld

3.4 編輯複製後的腳本文件vim /etc/init.d/mysqld

增長如下兩句:

basedir=/usr/local/mysql//MySQL包所在路徑

datadir=/data/mysql //定義數據存放的地方

mark

mark 定義路徑是不要留空格會報錯。

3.4 用chkconfig把mysql添加到開機啓動項中,設定開機啓動並啓動mysql

[root@localhost mysql]# chkconfig --add mysqld
[root@localhost mysql]# chkconfig --list

注意:該輸出結果只顯示 SysV 服務,並不包含原生 systemd 服務。SysV 配置數據可能被原生 systemd 配置覆蓋。 
      若是您想列出 systemd 服務,請執行 'systemctl list-unit-files'。
      欲查看對特定 target 啓用的服務請執行
      'systemctl list-dependencies [target]'。

mysqld         	0:關	1:關	2:開	3:開	4:開	5:開	6:關
netconsole     	0:關	1:關	2:關	3:關	4:關	5:關	6:關
network        	0:關	1:關	2:開	3:關	4:關	5:關	6:關

[root@localhost mysql]# chkconfig --add mysqld      //把mysqld服務加入到系統服務列表中
[root@localhost mysql]# chkconfig mysqld on          //開機啓動mysqld
[root@localhost mysql]# service mysqld start           //啓動mysqld
Starting MySQL.Logging to '/data/mysql/zlinux.err'.
. SUCCESS!

若是啓動不了,請到 /data/mysql/ 下查看錯誤日誌,這個日誌一般是主機名.err.。 檢查mysql是否啓動的命令爲:

[root@localhost mysql]# ps aux |grep mysql
root       5505  0.0  0.0  11776  1568 pts/0    S    11:46   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/localhost.localdomain.pid
mysql      5612  0.1 24.8 1302876 464396 pts/0  Sl   11:46   0:04 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/localhost.localdomain.err --pid-file=/data/mysql/localhost.localdomain.pid
root       6527  0.0  0.0 112676   976 pts/0    S+   12:47   0:00 grep --color=auto mysql

3.5查看監聽端口:netstat -lntp,有沒有3306端口

[root@localhost mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1744/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1069/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1067/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1580/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      5612/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1069/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1067/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1580

4.用命令行的形式啓動mysql, &//指定文件路徑,添加命令,用&轉到後臺運行

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

[root@localhost mysql]# service mysqld stop
Shutting down MySQL.. SUCCESS! 
[root@localhost mysql]# !ps
ps aux |grep mysql
root       6653  0.0  0.0 112676   972 pts/0    S+   12:55   0:00 grep --color=auto mysql
[root@localhost mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
[1] 6683
[root@localhost mysql]# 180228 12:58:11 mysqld_safe Logging to '/data/mysql/localhost.localdomain.err'.
180228 12:58:11 mysqld_safe Starting mysqld daemon with databases from /data/mysql
^C

ps查看是否啓動

[root@localhost mysql]# !ps
ps aux |grep mysql
root       6683  0.0  0.0 113264  1596 pts/0    S    12:58   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql      6778  1.0 24.4 1302876 455756 pts/0  Sl   12:58   0:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/localhost.localdomain.err --pid-file=/data/mysql/localhost.localdomain.pid
root       6809  0.0  0.0 112676   976 pts/0    S+   12:58   0:00 grep --color=auto mysql

查看端口

[root@localhost mysql]# !net
netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1744/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1069/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1067/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1580/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      6778/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1069/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1067/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1580/master

4.kill命令

必須以killall命令殺掉進程,比較安全。 killall 命令會先把程序執行完畢,才殺掉進程。 若是killall等了好久都沒有殺死,說明數據量很大,須要寫到磁盤中完畢後,慢慢殺死; 若是強制殺死kill+PID,可能致使數據丟失或表的損壞。

4.1上述一命令行形式來啓動的mysql,無法用service mysqld stop來關閉,只能用killall命令

4.2 這裏仍是建議開啓和關閉mysql使用的方法是

  • [ ] service mysqld start

  • [ ] service mysqld stop

[root@localhost mysql]# killall mysqld
[root@localhost mysql]# 180228 13:05:00 mysqld_safe mysqld from pid file /data/mysql/localhost.localdomain.pid ended
^C
[1]+  完成                  /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
[root@localhost mysql]# !ps
ps aux |grep mysql
root       6941  0.0  0.0 112676   976 pts/0    S+   13:06   0:00 grep --color=auto mysql

kill-9 +PID的方法不可取,容易丟數據或表格

4.2 mysql的引擎innodb和 myisam 面試前講解??

相關文章
相關標籤/搜索