0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

來(lái)練習(xí)一個(gè)寫(xiě)Redis部署的腳本

阿銘linux ? 來(lái)源:阿銘linux ? 作者:阿銘 ? 2022-12-01 09:16 ? 次閱讀

繼Nginx和MySQL的部署腳本之后,相信只要你跟著寫(xiě)了,那么里面的很多關(guān)鍵精髓你已經(jīng)知曉,今天就來(lái)練習(xí)一個(gè)寫(xiě)Redis部署的腳本吧。

同樣地,先給出部署步驟:

1)下載

cd /usr/local/src
sudo wget -O redis-7.0.4.tar.gz  https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.4

2)安裝

#解壓
sudo tar zxvf redis-7.0.4.tar.gz
cd redis-7.0.4/


## 編譯,安裝并指定路徑
sudo make
sudomakePREFIX=/usr/local/redisinstall


## 創(chuàng)建conf和log目錄
sudo mkdir /usr/local/redis/{conf,log}


## 創(chuàng)建數(shù)據(jù)目錄
sudo mkdir -p /data/redis


##創(chuàng)建redis服務(wù)的用戶,并更改目錄屬主
sudo useradd -s /sbin/nologin redis
sudo chown redis /data/redis /usr/local/redis/log

3)修改配置文件

sudo cp redis.conf /usr/local/redis/conf/
sudo vi /usr/local/redis/conf/redis.conf #修改如下


daemonize no  改為  daemonize yes


logfile ""  改為  logfile "/usr/local/redis/log/redis.log"


dir ./  改為 dir /data/redis


pidfile /var/run/redis_6379.pid 改為  pidfile /usr/local/redis/log/redis_6379.pid


在# requirepass foobared  下面增加一行
requirepass aminglinux.Com

4)定義systemd服務(wù)管理腳本

sudo vi /lib/systemd/system/redis.service ##內(nèi)容如下
[Unit]
Description=redis
After=network.target
[Service]
User=redis
Type=forking
TimeoutSec=0
PIDFile=/usr/local/redis/log/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

5)啟動(dòng)redis服務(wù)

## 更改內(nèi)核參數(shù)
sudo vi /etc/sysctl.conf  #加入兩行
net.core.somaxconn = 2048
vm.overcommit_memory = 1


##使內(nèi)核參數(shù)生效
sudo sysctl -p


##加載redis服務(wù)
sudo systemctl daemon-reload


##開(kāi)啟開(kāi)機(jī)自啟
sudo systemctl enable redis


##啟動(dòng)服務(wù)
sudo systemctl start redis

把部署步驟寫(xiě)成shell腳本:

#!/bin/bash


ck_ok()
{
        if [ $? -ne 0 ]
        then
                echo "$1 error."
                exit 1
        fi
}




download_redis()
{
    cd /usr/local/src
    if [ -f redis-7.0.4.tar.gz ]
    then
        echo "當(dāng)前目錄已存在redis-7.0.4.tar.gz"
        echo "檢測(cè)MD5"
        file_md5=`md5sum redis-7.0.4.tar.gz | awk '{print $1}'`
        if [ ${file_md5} == '3a2ce76ef8f5ca3cc6463c487f2d532c' ]
        then
            return 0
        else
            echo "file redis-7.0.4.tar.gz md5 check failed"
            /bin/mv redis-7.0.4.tar.gz redis-7.0.4.tar.gz.old
        fi
    fi
    sudo wget -O redis-7.0.4.tar.gz  https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.4
    ck_ok "下載redis"
}




install_redis()
{
    cd /usr/local/src
    sudo tar zxf redis-7.0.4.tar.gz
    ck_ok "解壓redis源碼包"
    cd redis-7.0.4/
    sudo make && sudo make PREFIX=/usr/local/redis install
    ck_ok "編譯和安裝redis"




    sudo mkdir -p /usr/local/redis/{conf,log}
    sudo mkdir -p /data/redis
    if id redis &>/dev/null
    then
            echo "系統(tǒng)已經(jīng)存在redis用戶,跳過(guò)創(chuàng)建"
    else
            echo "創(chuàng)建redis用戶"
            sudo useradd -s /sbin/nologin  redis
    fi
    ck_ok "創(chuàng)建redis用戶"
    sudo chown -R redis /data/redis /usr/local/redis/log
}




config_redis()
{
    echo "配置redis.conf"
    sudo /bin/cp /usr/local/src/redis-7.0.4/redis.conf /usr/local/redis/conf/redis.conf
    sudo sed -i 's/daemonize no/daemonize yes/' /usr/local/redis/conf/redis.conf
    sudo sed -i 's@logfile ""@logfile "/usr/local/redis/log/redis.log"@' /usr/local/redis/conf/redis.conf
    sudo sed -i 's@dir ./@dir /data/redis@' /usr/local/redis/conf/redis.conf
    sudo sed -i 's@pidfile /var/run/redis_6379.pid@pidfile /usr/local/redis/log/redis_6379.pid@' /usr/local/redis/conf/redis.conf
    sudo sed -i '/# requirepass foobared/a requirepass aminglinux.Com' /usr/local/redis/conf/redis.conf




    echo "配置systemd service"
    cat >/lib/systemd/system/redis.service <

說(shuō)明:幾個(gè)關(guān)鍵要領(lǐng)

1)下載之前要先判斷本地是否已經(jīng)下載過(guò)該包,如果本地已經(jīng)有包,還需要判斷該包的md5是否符合預(yù)期;

2)解壓后和make以及make install后都要做判斷,這是關(guān)鍵操作,如果這個(gè)沒(méi)做對(duì),后面的步驟沒(méi)必要執(zhí)行;

3)創(chuàng)建用戶之前先做判斷,看看用戶是否已經(jīng)存在;

4)啟動(dòng)完服務(wù)還要檢查服務(wù)到底有沒(méi)有起來(lái)。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • MYSQL數(shù)據(jù)庫(kù)

    關(guān)注

    0

    文章

    95

    瀏覽量

    9372
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    370

    瀏覽量

    10810

原文標(biāo)題:快來(lái)檢驗(yàn)一下你到底有沒(méi)有掌握這些腳本精髓吧

文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    給你部署文檔,你能不能寫(xiě)個(gè)腳本出來(lái)

    誰(shuí)開(kāi)始寫(xiě)shell腳本不是從流水賬開(kāi)始的?寫(xiě)著寫(xiě)著你就會(huì)發(fā)現(xiàn),需要在哪里加判斷,在哪里拋出異常。寫(xiě)著寫(xiě)著就知道何時(shí)用函數(shù),何時(shí)用變量。寫(xiě)著寫(xiě)著你就會(huì)說(shuō),shell腳本也就那么回事。
    發(fā)表于 11-23 09:07 ?187次閱讀

    通過(guò)這個(gè)部署腳本看看能否提升你的shell能力

    前幾天給了個(gè)Nginx部署腳本,今天再來(lái)一個(gè)MySQL的部署
    發(fā)表于 11-29 08:59 ?378次閱讀

    Redis Stream應(yīng)用案例

    的消息。如果要基于Redis來(lái)構(gòu)建個(gè)IRC系統(tǒng),那我們不由自主的會(huì)想到使用Redis的PUB/SUB功能,可以看到,基于PUB/SUB,只
    發(fā)表于 06-26 17:15

    基于shell腳本鍵安裝redis

    linux系統(tǒng)環(huán)境使用shell腳本鍵安裝redis的方法
    發(fā)表于 08-28 09:07

    redis解決多寫(xiě)的競(jìng)爭(zhēng)問(wèn)題總結(jié)

    redis應(yīng)該中如何解決多寫(xiě)的競(jìng)爭(zhēng)問(wèn)題
    發(fā)表于 10-08 15:35

    redis集群的如何部署

    redis集群的部署(偽分布式)
    發(fā)表于 05-29 17:13

    Docker部署Redis服務(wù)器集群的方法

    Docker部署Redis服務(wù)器集群
    發(fā)表于 06-13 09:12

    寫(xiě)shell腳本的經(jīng)歷記錄

    #cluster_known_nodes不為1,cluster_state為ok時(shí)才認(rèn)為集群正常,才能重啟#下一個(gè)pod,改健康檢查腳本旨在維護(hù)升級(jí)時(shí)redis集群狀態(tài),不在operator中維護(hù)# 利用好statefulset
    發(fā)表于 10-31 18:15

    如何使用redis實(shí)現(xiàn)分布式鎖的lua腳本出現(xiàn)和資料說(shuō)明

    Redis 使用單個(gè) Lua 解釋器去運(yùn)行所有腳本,并且, Redis 也保證腳本會(huì)以原子性(atomic)的方式執(zhí)行:當(dāng)某個(gè)腳本正在運(yùn)行的
    的頭像 發(fā)表于 12-01 11:00 ?3579次閱讀

    寫(xiě)個(gè)自動(dòng)化重啟服務(wù)腳本

    腳本可以每分鐘執(zhí)行次,腳本執(zhí)行時(shí)截取上分鐘的日志,可以計(jì)算總?cè)罩拘袛?shù),和出現(xiàn)502的行數(shù),計(jì)算比例,這里我給大家定
    的頭像 發(fā)表于 11-22 10:12 ?1175次閱讀

    個(gè)Redis性能更強(qiáng)的數(shù)據(jù):KeyDB

    KeyDB與Redis協(xié)議、模塊和腳本保持完全兼容。這包括對(duì)腳本和事務(wù)的原子性保證。因?yàn)镵eyDB與Redis開(kāi)發(fā)保持同步,所以KeyDB是Redi
    的頭像 發(fā)表于 03-13 10:55 ?1532次閱讀

    Redis的主從、哨兵、Redis Cluster集群

    + MyBatis Plus + Vue 另外個(gè)就是保證 Redis服務(wù)不中斷 。 對(duì)于盡量減少數(shù)據(jù)丟失,可以通過(guò)AOF和RDB保證。 對(duì)于保證服務(wù)不中斷的話,Redis就不能單點(diǎn)
    的頭像 發(fā)表于 06-12 14:58 ?748次閱讀
    <b class='flag-5'>Redis</b>的主從、哨兵、<b class='flag-5'>Redis</b> Cluster集群

    Windows Docker部署Redis的流程

    由于 Docker 部署 Redis 后,Redis 容器中默認(rèn)是沒(méi)有 redis.conf 配置文件的,需要自己手動(dòng)掛在進(jìn)去。
    的頭像 發(fā)表于 11-27 10:02 ?778次閱讀
    Windows Docker<b class='flag-5'>部署</b><b class='flag-5'>Redis</b>的流程

    redis查看主從節(jié)點(diǎn)命令

    服務(wù)器的數(shù)據(jù)復(fù)制到其他 Redis 服務(wù)器的過(guò)程。其中個(gè) Redis 服務(wù)器作為主服務(wù)器,其他 Redis 服務(wù)器則作為從服務(wù)器。主服務(wù)
    的頭像 發(fā)表于 12-04 11:44 ?1133次閱讀

    redis容器部署并用編程演示sb整合

    Redis個(gè)開(kāi)源的高性能的內(nèi)存數(shù)據(jù)庫(kù),常用于緩存、會(huì)話管理和消息隊(duì)列的存儲(chǔ)。在容器化的架構(gòu)中,使用容器部署 Redis 可以減輕運(yùn)維負(fù)
    的頭像 發(fā)表于 12-05 10:08 ?350次閱讀