1. 程式人生 > >9月8號上課筆記

9月8號上課筆記

LAMP架構介紹

LAMP是 linux Apache MySQL PHP的簡寫,即把Apache MySQL PHP 安裝在linux系統上,組成一個環境來執行PHP網站。這裡的Apache是httpd服務。這些可以安裝在一個機器上,也可以安裝在多臺機器上,但是httpd和PHP安裝在一臺機器上(php作為httpd的一個模組存在的。 他們兩者必須要在一起,才能實現效果)。

httpd,MySQL,PHP三者如何工作 這裡寫圖片描述

靜態,就是直接由webserver處理的請求,比如圖片,js,css等,而動態的是需要和資料庫打交道的請求,比如你現在訪問ask.apelearn.com,登入使用者,發帖子,看帖子,這些都是需要和資料庫打交道的。這樣的就是動態。

這裡寫圖片描述

安裝MySQL步驟:

這裡寫圖片描述

安裝時在那個目錄下操作很重要,決定著你能否安裝成功。

下載MySQL到指定目錄下(/usr/local/src).

  1. [[email protected] ~]# cd /usr/local/src/

  2. [[email protected] src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

解壓包:

[[email protected] local]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz

將解壓的包移動並重命名為/usr/local/mysql

  1. [[email protected] local]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql

  2. [[email protected] mysql]# ls

  3. bin data include man mysql-test scripts sql-bench

  4. COPYING docs lib my.cnf README share support-files

建立MySQL使用者,建立/data/目錄:

  1. [[email protected]

    local]# useradd mysql

  2. [[email protected] local]# mkdir /data/

安裝MySQL,指定使用者,指定目錄:

[[email protected] local]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

這時如果出現錯誤,如下圖:

這裡寫圖片描述

少了一個模組,模組名字dumper,少什麼安裝什麼。

搜尋模組包名:

  1. [[email protected] ~]yum list |grep perl |grep -i dumper

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

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

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

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

搜出來四個,安裝完一個包後再安裝MySQL,還出錯,安裝下一個包,四個都安裝完肯定能安裝MySQL。其實它是靠perl-Data-Dumper.x86_64這個包。

安裝這個包:

[[email protected] ~]# yum install -y perl-Data-Dumper

錯誤2:./scripts/mysql_install_db –user=mysql –datadir=/data/mysql  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 -y install libaio-devel

安裝完成後就能安裝MySQL了。

[[email protected] ~]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

安裝完成後,檢驗是否安裝成功,沒有錯誤。  安裝MySQL後,立馬執行echo $? 顯示是0,就表示安裝成功,沒有問題。

[[email protected] ~]# echo $?

其實,echo $? 是檢測上一條命令是否執行成功

拷貝配置檔案(/support-files/my-large.cnf):

[[email protected] mysql]# cp support-files/my-large.cnf /etc/my.cnf

mysql的配置檔案就叫/etc/my.cnf 就在/etc下。

也可能你的/etc/my.cnf這個檔案本來就有了,被其他的包裝的時候帶過來了。

檢視是哪個包安裝的/etc/my.cnf

  1. [[email protected] mysql]# rpm -qf /etc/my.cnf

  2. mariadb-libs-5.5.52-1.el7.x86_64

這個也可以使用,不過要改一下檔案。

  1. [mysqld]

  2. datadir=/data/mysql

  3. socket=/tmp/mysql.sock

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

  5. symbolic-links=0

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

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

  8. # customize your systemd unit file for mariadb according to the

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

  10. [mysqld_safe]

  11. #log-error=/var/log/mariadb/mariadb.log

  12. #pid-file=/var/run/mariadb/mariadb.pid

  13. #

  14. # include all files from the config directory

  15. #

  16. #!includedir /etc/my.cnf.d

複製啟動指令碼並修改屬性:

[[email protected] mysql]# support-files/mysql.server /etc/init.d/mysqld

修改啟動指令碼:  basedir=/usr/local/mysql  datadir=/data/mysql

  1. # If you change base dir, you must also change datadir. These may get

  2. # overwritten by settings in the MySQL configuration files.

  3. basedir=/usr/local/mysql

  4. datadir=/data/mysql

  5. # Default value, in seconds, afterwhich the script should timeout waiting

  6. # for server start.

修改啟動指令碼檔案許可權:

[[email protected] mysql]# chmod 755 /etc/init.d/mysqld

設定開機啟動:

[[email protected] ~]# chkconfig --add mysqld

也可以手動啟動:

[[email protected] ~]# service mysqld start

啟動起來了:

  1. [[email protected] mysql]# ps aux |grep mysql

  2. root 1535 0.0 0.1 115392 1688 ? S 19:07 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/shuai-01.pid

  3. mysql 1863 0.1 45.2 1300784 452380 ? Sl 19:07 0:08 /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/shuai-01.err --pid-file=/data/mysql/shuai-01.pid --socket=/tmp/mysql.sock

  4. root 3473 0.0 0.0 112680 976 pts/0 S+ 21:00 0:00 grep --color=auto mysql

監聽埠(3306):

  1. [[email protected] mysql]# netstat -lntp

  2. Active Internet connections (only servers)

  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

  4. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1516/sshd

  5. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2168/master

  6. tcp6 0 0 :::3306 :::* LISTEN 1863/mysqld

  7. tcp6 0 0 :::22 :::* LISTEN 1516/sshd

  8. tcp6 0 0 ::1:25 :::* LISTEN 2168/master

如果沒有啟動指令碼,可以用命令列啟動:

命令列,指定配置檔案路徑,指定使用者,指定/datadir 加&丟入後臺。

  1. [[email protected] mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &

  2. [2] 3723

  3. [[email protected] mysql]# 171214 21:10:07 mysqld_safe Logging to '/data/mysql/shuai-01.err'.

  4. 171214 21:10:07 mysqld_safe Starting mysqld daemon with databases from /data/mysql

  5. [[email protected] mysql]# !ps

  6. ps aux |grep mysql

  7. root 3545 0.0 0.1 113264 1612 pts/0 T 21:08 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql

  8. mysql 3670 11.1 0.0 0 0 pts/0 Z 21:08 0:20 [mysqld] <defunct>

  9. root 3723 0.0 0.1 113264 1612 pts/0 S 21:10 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql

  10. mysql 3848 1.6 45.1 1300788 451364 pts/0 Sl 21:10 0:01 /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/shuai-01.err --pid-file=/data/mysql/shuai-01.pid --socket=/tmpmysql.sock

  11. root 3872 0.0 0.0 112676 976 pts/0 R+ 21:11 0:00 grep --color=auto mysql

關閉時就只能killall:

[[email protected] mysql]# killall mysqld

killall會先停止讀寫操作,把已有的寫完後,就殺死MySQL服務。  而kill -9 pid 會啥都不管,直接殺掉程序。這樣做很可能導致資料的丟失甚至損壞表

MySQL有兩個引擎:innodb (小), myisam(大)

1、安裝MariaDB

安裝命令

yum -y install mariadb mariadb-server

安裝完成MariaDB,首先啟動MariaDB

systemctl start mariadb

設定開機啟動

systemctl enable mariadb

接下來進行MariaDB的相關簡單配置

mysql_secure_installation

首先是設定密碼,會提示先輸入密碼

Enter current password for root (enter for none):<–初次執行直接回車

設定密碼

Set root password? [Y/n] <– 是否設定root使用者密碼,輸入y並回車或直接回車 New password: <– 設定root使用者的密碼 Re-enter new password: <– 再輸入一次你設定的密碼

其他配置

Remove anonymous users? [Y/n] <– 是否刪除匿名使用者,回車

Disallow root login remotely? [Y/n] <–是否禁止root遠端登入,回車,

Remove test database and access to it? [Y/n] <– 是否刪除test資料庫,回車

Reload privilege tables now? [Y/n] <– 是否重新載入許可權表,回車

初始化MariaDB完成,接下來測試登入

mysql -uroot -ppassword

完成。

[[email protected] ~]# rpm -qa | grep mysql

[[email protected] ~]# rpm -qa | grep mariadb mariadb-libs-5.5.56-2.el7.x86_64 [[email protected] ~]# find / -name mariadb-libs-5.5.56-2.el7.x86_64 find: ‘/run/user/1000/gvfs’: 許可權不夠 [[email protected] ~]# find . -name mariadb-libs-5.5.56-2.el7.x86_64 [[email protected] ~]#  [[email protected] ~]# yum -y install mariadb mariadb-server 已載入外掛:fastestmirror, langpacks Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was 12: Timeout on http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds') base | 3.6 kB 00:00:00  Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=extras&infra=stock error was 12: Timeout on http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=extras&infra=stock: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds') extras | 3.4 kB 00:00:00  Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=stock error was 12: Timeout on http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates&infra=stock: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds') updates | 3.4 kB 00:00:00  Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 正在解決依賴關係 --> 正在檢查事務 ---> 軟體包 mariadb.x86_64.1.5.5.56-2.el7 將被 安裝 ---> 軟體包 mariadb-server.x86_64.1.5.5.56-2.el7 將被 安裝 --> 正在處理依賴關係 perl-DBI,它被軟體包 1:mariadb-server-5.5.56-2.el7.x86_64 需要 --> 正在處理依賴關係 perl-DBD-MySQL,它被軟體包 1:mariadb-server-5.5.56-2.el7.x86_64 需要 --> 正在處理依賴關係 perl(Data::Dumper),它被軟體包 1:mariadb-server-5.5.56-2.el7.x86_64 需要 --> 正在處理依賴關係 perl(DBI),它被軟體包 1:mariadb-server-5.5.56-2.el7.x86_64 需要 --> 正在檢查事務 ---> 軟體包 perl-DBD-MySQL.x86_64.0.4.023-5.el7 將被 安裝 ---> 軟體包 perl-DBI.x86_64.0.1.627-4.el7 將被 安裝 --> 正在處理依賴關係 perl(RPC::PlServer) >= 0.2001,它被軟體包 perl-DBI-1.627-4.el7.x86_64 需要 --> 正在處理依賴關係 perl(RPC::PlClient) >= 0.2000,它被軟體包 perl-DBI-1.627-4.el7.x86_64 需要 ---> 軟體包 perl-Data-Dumper.x86_64.0.2.145-3.el7 將被 安裝 --> 正在檢查事務 ---> 軟體包 perl-PlRPC.noarch.0.0.2020-14.el7 將被 安裝 --> 正在處理依賴關係 perl(Net::Daemon) >= 0.13,它被軟體包 perl-PlRPC-0.2020-14.el7.noarch 需要 --> 正在處理依賴關係 perl(Net::Daemon::Test),它被軟體包 perl-PlRPC-0.2020-14.el7.noarch 需要 --> 正在處理依賴關係 perl(Net::Daemon::Log),它被軟體包 perl-PlRPC-0.2020-14.el7.noarch 需要 --> 正在處理依賴關係 perl(Compress::Zlib),它被軟體包 perl-PlRPC-0.2020-14.el7.noarch 需要 --> 正在檢查事務 ---> 軟體包 perl-IO-Compress.noarch.0.2.061-2.el7 將被 安裝 --> 正在處理依賴關係 perl(Compress::Raw::Zlib) >= 2.061,它被軟體包 perl-IO-Compress-2.061-2.el7.noarch 需要 --> 正在處理依賴關係 perl(Compress::Raw::Bzip2) >= 2.061,它被軟體包 perl-IO-Compress-2.061-2.el7.noarch 需要 ---> 軟體包 perl-Net-Daemon.noarch.0.0.48-5.el7 將被 安裝 --> 正在檢查事務 ---> 軟體包 perl-Compress-Raw-Bzip2.x86_64.0.2.061-3.el7 將被 安裝 ---> 軟體包 perl-Compress-Raw-Zlib.x86_64.1.2.061-4.el7 將被 安裝 --> 解決依賴關係完成

依賴關係解決

======================================================================================== Package 架構 版本 源 大小 ======================================================================================== 正在安裝: mariadb x86_64 1:5.5.56-2.el7 base 8.7 M mariadb-server x86_64 1:5.5.56-2.el7 base 11 M 為依賴而安裝: perl-Compress-Raw-Bzip2 x86_64 2.061-3.el7 base 32 k perl-Compress-Raw-Zlib x86_64 1:2.061-4.el7 base 57 k perl-DBD-MySQL x86_64 4.023-5.el7 base 140 k perl-DBI x86_64 1.627-4.el7 base 802 k perl-Data-Dumper x86_64 2.145-3.el7 base 47 k perl-IO-Compress noarch 2.061-2.el7 base 260 k perl-Net-Daemon noarch 0.48-5.el7 base 51 k perl-PlRPC noarch 0.2020-14.el7 base 36 k

事務概要 ======================================================================================== 安裝 2 軟體包 (+8 依賴軟體包)

總下載量:21 M 安裝大小:110 M Downloading packages: 警告:/var/cache/yum/x86_64/7/base/packages/mariadb-server-5.5.56-2.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 金鑰 ID f4a80eb5: NOKEY mariadb-server-5.5.56-2.el7.x86_64.rpm 的公鑰尚未安裝 (1/10): mariadb-server-5.5.56-2.el7.x86_64.rpm | 11 MB 00:00:02  (2/10): mariadb-5.5.56-2.el7.x86_64.rpm | 8.7 MB 00:00:02  (3/10): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm | 32 kB 00:00:00  (4/10): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm | 57 kB 00:00:00  (5/10): perl-DBD-MySQL-4.023-5.el7.x86_64.rpm | 140 kB 00:00:00  (6/10): perl-Data-Dumper-2.145-3.el7.x86_64.rpm | 47 kB 00:00:00  (7/10): perl-IO-Compress-2.061-2.el7.noarch.rpm | 260 kB 00:00:00  (8/10): perl-Net-Daemon-0.48-5.el7.noarch.rpm | 51 kB 00:00:00  (9/10): perl-PlRPC-0.2020-14.el7.noarch.rpm | 36 kB 00:00:00  (10/10): perl-DBI-1.627-4.el7.x86_64.rpm | 802 kB 00:00:00  ---------------------------------------------------------------------------------------- 總計 8.1 MB/s | 21 MB 00:02  從 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 檢索金鑰 匯入 GPG key 0xF4A80EB5: 使用者ID : "CentOS-7 Key (CentOS 7 Official Signing Key) <[email protected]>" 指紋 : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 軟體包 : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda) 來自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction 正在安裝 : perl-Data-Dumper-2.145-3.el7.x86_64 1/10  正在安裝 : 1:mariadb-5.5.56-2.el7.x86_64 2/10  正在安裝 : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 3/10  正在安裝 : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 4/10  正在安裝 : perl-IO-Compress-2.061-2.el7.noarch 5/10  正在安裝 : perl-Net-Daemon-0.48-5.el7.noarch 6/10  正在安裝 : perl-PlRPC-0.2020-14.el7.noarch 7/10  正在安裝 : perl-DBI-1.627-4.el7.x86_64 8/10  正在安裝 : perl-DBD-MySQL-4.023-5.el7.x86_64 9/10  正在安裝 : 1:mariadb-server-5.5.56-2.el7.x86_64 10/10  驗證中 : perl-DBI-1.627-4.el7.x86_64 1/10  驗證中 : perl-Net-Daemon-0.48-5.el7.noarch 2/10  驗證中 : perl-Data-Dumper-2.145-3.el7.x86_64 3/10  驗證中 : perl-PlRPC-0.2020-14.el7.noarch 4/10  驗證中 : 1:perl-Compress-Raw-Zlib-2.061-4.el7.x86_64 5/10  驗證中 : perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64 6/10  驗證中 : 1:mariadb-server-5.5.56-2.el7.x86_64 7/10  驗證中 : perl-IO-Compress-2.061-2.el7.noarch 8/10  驗證中 : perl-DBD-MySQL-4.023-5.el7.x86_64 9/10  驗證中 : 1:mariadb-5.5.56-2.el7.x86_64 10/10

已安裝: