繼Nginx和MySQL的部署腳本之后,相信只要你跟著寫了,那么里面的很多關鍵精髓你已經知曉,今天就來練習一個寫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 ## 創建conf和log目錄 sudo mkdir /usr/local/redis/{conf,log} ## 創建數據目錄 sudo mkdir -p /data/redis ##創建redis服務的用戶,并更改目錄屬主 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服務管理腳本
sudo vi /lib/systemd/system/redis.service ##內容如下 [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)啟動redis服務
## 更改內核參數 sudo vi /etc/sysctl.conf #加入兩行 net.core.somaxconn = 2048 vm.overcommit_memory = 1 ##使內核參數生效 sudo sysctl -p ##加載redis服務 sudo systemctl daemon-reload ##開啟開機自啟 sudo systemctl enable redis ##啟動服務 sudo systemctl start redis
把部署步驟寫成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 "當前目錄已存在redis-7.0.4.tar.gz" echo "檢測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 "系統已經存在redis用戶,跳過創建" else echo "創建redis用戶" sudo useradd -s /sbin/nologin redis fi ck_ok "創建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 <
說明:幾個關鍵要領
1)下載之前要先判斷本地是否已經下載過該包,如果本地已經有包,還需要判斷該包的md5是否符合預期;
2)解壓后和make以及make install后都要做判斷,這是關鍵操作,如果這個沒做對,后面的步驟沒必要執行;
3)創建用戶之前先做判斷,看看用戶是否已經存在;
4)啟動完服務還要檢查服務到底有沒有起來。
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
MYSQL數據庫
+關注
關注
0文章
96瀏覽量
9390 -
Redis
+關注
關注
0文章
375瀏覽量
10878
原文標題:快來檢驗一下你到底有沒有掌握這些腳本精髓吧
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
給你一篇部署文檔,你能不能寫一個腳本出來
誰一開始寫shell腳本不是從流水賬開始的?寫著寫著你就會發現,需要在哪里加判斷,在哪里拋出異常。寫著寫著就知道何時用函數,何時用變量。寫著寫著你就會說,shell腳本也就那么回事。
發表于 11-23 09:07
?201次閱讀
Redis Stream應用案例
的消息。如果要基于Redis來構建一個IRC系統,那我們不由自主的會想到使用Redis的PUB/SUB功能,可以看到,基于PUB/SUB,只
發表于 06-26 17:15
記一次寫shell腳本的經歷記錄
#cluster_known_nodes不為1,cluster_state為ok時才認為集群正常,才能重啟#下一個pod,改健康檢查腳本旨在維護升級時redis集群狀態,不在operator中維護# 利用好statefulset
發表于 10-31 18:15
如何使用redis實現分布式鎖的lua腳本出現和資料說明
Redis 使用單個 Lua 解釋器去運行所有腳本,并且, Redis 也保證腳本會以原子性(atomic)的方式執行:當某個腳本正在運行的
一個比Redis性能更強的數據:KeyDB
KeyDB與Redis協議、模塊和腳本保持完全兼容。這包括對腳本和事務的原子性保證。因為KeyDB與Redis開發保持同步,所以KeyDB是Redi
Redis的主從、哨兵、Redis Cluster集群
+ MyBatis Plus + Vue 另外一個就是保證 Redis服務不中斷 。 對于盡量減少數據丟失,可以通過AOF和RDB保證。 對于保證服務不中斷的話,Redis就不能單點
redis查看主從節點命令
服務器的數據復制到其他 Redis 服務器的過程。其中一個 Redis 服務器作為主服務器,其他 Redis 服務器則作為從服務器。主服務
redis容器部署并用編程演示sb整合
Redis 是一個開源的高性能的內存數據庫,常用于緩存、會話管理和消息隊列的存儲。在容器化的架構中,使用容器部署 Redis 可以減輕運維負
評論