第六節:Linux之基於Centos系統安裝Redis、MySQL、Nginx


一. Redis的安裝

1. 准備

(1). 宿主機:centos 8.0

(2). Redis源碼:【壓縮包: redis-5.0.0.tar.gz】 需要自行編譯。 (PS:這個壓縮包可以直接Centos系統中在線下載 或者去Redis官網先下載,然后copy到Centos系統中)

下載地址:

  官網:https://redis.io/

  中文版:http://www.redis.cn/

注:Redis的安裝需要下載源碼,自行准備環境,進行編譯安裝。

(3). gcc環境:redis是C語言開發的,安裝redis需要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境。

2. 安裝步驟

(1). 安裝gcc環境

 通過指令【yum install gcc-c++】安裝gcc環境,安裝過程中需要兩次輸入y,分別是確認下載和確認安裝。

    兩次確認:

 

 最終安裝成功:

(2). 安裝Redis

A. 去Redis官網下載壓縮包,然后Copy到Centos宿主機中,下載地址為:http://download.redis.io/releases/  ,這里我們以 【5.0.0】版本為例進行演示。

 

PS: 這里我們直接在Linux系統中在線下載壓縮包,運行指令:【wget http://download.redis.io/releases/redis-5.0.0.tar.gz

B. 解壓到當前目錄,運行下面指令 ,解壓后的文件如下:

【tar -zxvf redis-5.0.0.tar.gz】

 

 C. 切換到redis目錄,運行make指令進行編譯 。

【cd redis-5.0.0/】

【make】  (ps:make指令可能需要安裝,根據提示,輸入y確認安裝即可)

 

 D. 安裝redis到指令目錄

【cd redis-5.0.0/】

【make PREFIX=/usr/local/redis install  】

PS:make install安裝完成后,會在/usr/local/redis/bin目錄下生成下面幾個可執行文件,它們的作用分別是:

  redis-server:Redis服務器端啟動程序

  redis-cli:Redis客戶端操作工具。也可以用telnet根據其純文本協議來操作

  redis-benchmark:Redis性能測試工具

  redis-check-aof:數據修復工具

  redis-check-dump:檢查導出工具

(3). 配置Redis

  進入redis原先的解壓目錄,把里面的配置文件 【redis.conf】 拷貝到  /usr/local/redis/bin 目錄下。

【cd redis-5.0.0/】

【cp redis.conf /usr/local/redis/bin】

(4). 啟動Redis

 A. 進入到  /usr/local/redis/bin  安裝目錄, 【cd   /usr/local/redis/bin

 B. 修改redis.conf,把daemonize no 改為daemonize yes,改為守護進程,即后台程序啟動,否則關閉窗口redis服務就關閉了 (可選)

 C. 運行指令【./redis-server redis.conf】 進行啟動,如下圖表示啟動成功。PS:   ./表示當前目錄

(5). 復制一個窗口,啟動鏈接客戶端 【./redis-cli】,可以進行redis操作。

(6). 關閉redis服務【./redis-cli shutdown】, 如果有密碼,需要【./redis-cli -a 123456 shutdown】

   進行鏈接,連接失敗;重新啟動redis服務./redis-server redis.conf】,進行鏈接,鏈接成功。

PS:也可以直接通過【ps -ef|grep redids】獲取redis服務的進程號,然后 【kill 進程號】的方式強制關掉redis服務。

如下圖:

3. 測試 

如何在外部鏈接linux上的redis?

(1). 將 bind 127.0.0.1 注釋掉。

(2). 關閉保護模式,即將 protected-mode 改為 no。 

PS:以上兩個指令執行完成后,要重啟一下redis服務。 

(3).首先需要在centos宿主機上關閉防火牆,從而外部可以訪問redis的6379端口。

#添加6379端口永久開放
sudo firewall-cmd --add-port=6379/tcp --permanent
#重啟防火牆
firewall-cmd --reload

(4). 使用客戶端工具進行連接,連接成功。

 

 

4. 其它配置和指令

(1). 設置密碼

 默認鏈接redis是沒有密碼的,我們通過修改 redis.conf 文件中 requirepass 節點,來設置密碼,如下圖:

默認:

修改密碼為123456:

重新鏈接: 

在本地電腦上通過客戶端連接: 【 redis-cli -h 192.168.137.201 -p 6379 -a 123456】

(2). 改為守護進程

 修改redis.conf,把daemonize no 改為daemonize yes,改為守護進程,即后台程序啟動,否則關閉窗口redis服務就關閉了 

 

 

參考文檔:https://blog.csdn.net/lc1010078424/article/details/78295482 (添加服務)

                   https://blog.csdn.net/weixin_40605573/article/details/89324038 

 

二. MySQL的安裝

1. 准備

(1). 宿主機:centos8.0

(2). MySQL安裝包:mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar (這里安裝的是5.7版本)

PS:這里使用的安裝包是針對centos系統特制的RPM包,通過RPM相關指令進行安裝,當然也可以通過其他類型的安裝包進行編譯安裝。

下載地址:https://dev.mysql.com/downloads/mysql/ ,這里演示的是下載整個壓縮包,解壓后有很多組件的rmp包,當然我們也可以根據需要直接下載對應的組件進行安裝,比如我只下載Server的rpm包。

2. 安裝步驟

前提:刪除一下系統自帶的mysql

(1). 把安裝包copy到centos的宿主機中

(2). 在當前目錄下進行解壓,指令如下

【tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar】解壓出來一堆包,我們根據需要安裝即可。

(3). 安裝client端 和 server 端

經驗:server需要依賴client端,所以server端最后安裝,client端還需要依賴common和libs,而且client還需要libncurses和libtinfo相關,所以我們在rmp包的根目錄下運行指令,嚴格按照下面的順序進行。

 【rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm】

 【rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm】

 【yum install libncurses* -y】

 【yum install libtinfo* -y】

 【rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm】

 【rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm】

截止此處全部安裝完成。

(4). 啟動服務並查看狀態

 A. 啟動服務: 【systemctl start mysqld】

 B. 查看狀態:【systemctl status mysqld】

 

(5). 必備的配置

 A. 修改密碼策略,否則無法隨心所以的修改密碼

 找到mysql的配置文件,位於 /etc/my.conf , 在這個配置文件里,還能看見其它幾個配置的路徑,如下圖,然后添加下面代碼,修改完后,重啟一下mysql服務【systemctl restart mysqld】

注:以下兩行代碼任意一行都可以,可以直接關閉密碼策略即可。

#添加validate_password_policy配置 選擇0(LOW)1(MEDIUM)2(STRONG)其中一種
 validate_password_policy=0
#關閉密碼策略
  validate_password = off

 B. 查看隨機密碼

 默認root賬號會生成一個隨機密碼,通過指令【grep "password" /var/log/mysqld.log 】查看,如下圖,密碼為:  wIsu.rk_d74c 

 C. 修改密碼(這里改為123456)

   使用內置客戶端進行登錄,mysql -uroot -p,然后輸入上面密碼:wIsu.rk_d74c ,如下圖說明登錄成功。 或者直接輸入指令:mysql -uroot -pwIsu.rk_d74c】

 

   將root賬號的密碼改為:123456,指令為【set password=password('123456');】 注意在mysql中的指令結尾必須有分號!!   

      或者運行指令:【ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';】進行密碼修改

   輸入指令【exit;】,退出

   重新輸入指令【mysql -uroot -p123456】,如下圖:登錄成功

 

 D. 設置允許遠程訪問

  ①. 運行下面指令,運行所有ip用root賬號,密碼為123456進行訪問mysql。

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges; 

  注:上述指令的本質是在User表中增加了一條新的記錄,Host設置為%,代表運行所有客戶端訪問,實際上可以直接去User表中把原先內置的root用戶的Host字段由Localhost改為%即可。

 ②. 查看防火牆狀態,開發3306端口,或者直接關閉防火牆。

#查看防火牆狀態
service firewalld status 

#方案1,開放3306端口,並重啟
sudo firewall-cmd --add-port=3306/tcp --permanent
#重啟防火牆
firewall-cmd --reload

#方案2:直接關閉防火牆
service firewalld stop 

(6). 測試

 使用客戶端遠程連接,如下圖,連接成功。

(7). 指令總結 

 【systemctl status mysqld】    查看mysql狀態

 【systemctl stop mysqld 】     關閉mysql服務

 【systemctl start mysqld】     開啟mysql服務

 【systemctl restart mysqld】   重啟服務

3.其它配置指令說明

(1). 授權遠程訪問詳解

方法1:授權法

-- 允許特定ip訪問
grant all privileges on *.* to 'root'@'192.168.137.202'identified by '123' with grant option;

--允許所有ip訪問
grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;

--執行完上述后,都要刷新生效
flush privileges; 

 說明:以上指令都是對root賬號授權遠程訪問,登錄密碼為:123,特別注意這個密碼可以和 root本來server端不一樣,比如:本來server端root密碼為123456,這里遠程授權設置的是123,那么遠程客戶端登錄就只能使用123密碼,使用123456密碼無法連接;通過set password把root的服務密碼改為12345678,不影響遠程授權登錄,遠程客戶端仍然可以通過123進行訪問。

 實質:上述操作本質上是在mysql中自帶的一個mysql庫中user表中插入了一條記錄,也就是在User表中對應了多個root賬戶,實際上不建議這樣做,直接把原先的root對應Host改為%即可。如下圖:

方法2:直接操作mysql下的user表

--可以更新字段
--特定ip
update user set host = '192.168.1.49' where user = 'root'; 
--所有ip
update user set host = '%' where user = 'root'; 

--也可以直接插入一條新紀錄 
--刷新生效
flush privileges; 

說明:上述更新字段的那種方式遠程登錄使用的密碼為root自身server的密碼,也可以插入一條記錄,可以使用一個新的密碼,與root原來server端密碼不同。

(2). 配置字符編碼 

 注意:安裝完mysql后,一定要修改編碼,從mysql5.7開始,將編碼都改為utf8mb4。 

 連接上mysql,輸入指令【show variables like '%character%';】 ,查看原來的各種編碼,如下圖,這里我們把 character_set_server 也改成utf8,否則容易亂碼。

 

 修改 /etc/my.cnf, 增加下面代碼,然后重啟mysql服務 【systemctl restart mysqld】,重新查看編碼,設置成功。

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
# 設置client連接mysql時的字符集,防止亂碼
init_connect='SET NAMES utf8mb4'
init_connect='SET collation_connection = utf8mb4_general_ci'

# 數據庫默認字符集
character-set-server=utf8mb4

#數據庫字符集對應一些排序等規則,注意要和character-set-server對應
collation-server=utf8mb4_general_ci

 

 

查看數據庫編碼,如下圖,修改成功。【show variables like '%character%';

(3). 忘記root密碼怎么辦?

    詳見:https://www.cnblogs.com/yaopengfei/p/13798785.html

 

三. Nginx的安裝

1.准備

(1). 宿主機:centos 8.0

(2). Nginx源碼:需要去官網下載源碼copy到centos系統中,自行編譯安裝。這里使用【nginx 1.19.3】版本。

    下載地址:http://www.nginx.org/

(3). 編譯Nginx所需要的的環境:

 A. gcc環境:因為是C語言開發的。

 B. pcre: 是一個 Perl 庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫。

 注:pcre-devel 是使用 pcre 開發的一個二次開發庫,nginx 也需要此庫。

 C. zlib:zlib庫提供了很多種壓縮和解壓縮的方式,nginx 使用 zlib 對 http 包的內容進行 gzip,所以需要在 linux 上安裝 zlib 庫。

 D. OpenSSL: 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協議,並提供豐富的應用程序供測試或其它目的使用。nginx 不僅支持 http 協議,還支持 https(即在 ssl 協議上傳輸 http),所以需要在 linux安裝 openssl 庫。

2. 安裝步驟

(1). 安裝編譯所需的環境

 A. 【yum install -y gcc-c++】

  圖如上面redis安裝一樣。

 B.【yum install -y pcre pcre-devel】

 C. 【yum install -y zlib zlib-devel】

 D. 【yum install -y openssl openssl-devel】

(2). 將下載好的Nginx壓縮包上傳到Centos的工作目錄下,並進行解壓縮 【tar -zxvf  nginx-1.19.3.tar.gz】,解壓后如下圖:

(3). 進入nginx-1.19.3目錄   使用 configure 命令創建1個 MakeFile 文件.

【cd nginx-1.19.3/】,然后運行下面指令,直接copy進去,敲擊回車,執行即可

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

執行完成后,nginx目錄下多了一個MakeFile文件

PS:代碼解釋 

----  知識點小貼士 ----
  Makefile是一種配置文件, Makefile 一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后編譯,
哪些文件需要重新編譯,甚至於進行更復雜的功能操作,因為 makefile就像一個Shell腳本一樣,其中也可以執行操作系統的命令。
---- 知識點小貼士 --- ./configure \ --prefix=/usr \ 指向安裝目錄 --sbin-path=/usr/sbin/nginx \        指向(執行)程序文件(nginx) --conf-path=/etc/nginx/nginx.conf \          指向配置文件 --error-log-path=/var/log/nginx/error.log \            指向log --http-log-path=/var/log/nginx/access.log \             指向http-log --pid-path=/var/run/nginx/nginx.pid \           指向pid --lock-path=/var/lock/nginx.lock \         (安裝文件鎖定,防止安裝文件被別人利用,或自己誤操作。) --user=nginx \ --group=nginx \ --with-http_ssl_module \                啟用ngx_http_ssl_module支持(使支持https請求,需已安裝openssl) --with-http_flv_module \                啟用ngx_http_flv_module支持(提供尋求內存使用基於時間的偏移量文件) --with-http_stub_status_module \                      啟用ngx_http_stub_status_module支持(獲取nginx自上次啟動以來的工作狀態) --with-http_gzip_static_module \                        啟用ngx_http_gzip_static_module支持(在線實時壓縮輸出數據流) --http-client-body-temp-path=/var/tmp/nginx/client/ \             設定http客戶端請求臨時文件路徑 --http-proxy-temp-path=/var/tmp/nginx/proxy/ \                 設定http代理臨時文件路徑 --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \                 設定http fastcgi臨時文件路徑 --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \                  設定http uwsgi臨時文件路徑 --http-scgi-temp-path=/var/tmp/nginx/scgi \                   設定http scgi臨時文件路徑 --with-pcre 啟用pcre庫

(4). 在nginx-1.19.3目錄下,執行 【make】指令,進行編譯。

(5). 安裝Nginx(指定安裝路徑)

 在nginx-1.19.3目錄下執行下面的安裝指令

make PREFIX=/usr/local/nginx install

 如下圖:

(6). 啟動前准備

A. 啟動 nginx 之前,上邊MakeFile溫江將臨時文件目錄指定為/var/temp/nginx/client, 需要在/var 下創建此目錄

mkdir /var/temp/nginx/client -p

B. 進入到Nginx安裝目錄下的sbin命令目錄

cd /usr/local/nginx/sbin

(7). 啟動

./nginx

 如圖:

 (8). 關閉防火牆或者開放80端口

#添加80端口永久開放
sudo firewall-cmd --add-port=80/tcp --permanent
#重啟防火牆
firewall-cmd --reload

(9). 其它指令

A. 查看nginx進程 【ps aux|grep nginx】

B. 關閉Nginx

./nginx -s stop
#或
./nginx -s quit

C. 重啟nginx

./nginx -s reload

3. 測試

 訪問默認的80端口,輸入:http://192.168.137.201

 

4. 常見錯誤處理

(1). 啟動nginx的時候報錯,如下圖,缺少文件了。

解決方案:到對應目錄下創建相應文件即可。

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鵬飛)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 聲     明1 : 如有錯誤,歡迎討論,請勿謾罵^_^。
  • 聲     明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM