centos7redis啟動腳本
① centos怎麼啟動redis
1.從官網下載redis-2.8.9.tar.gz之後,將redis解壓在/usr/local下,目錄是redis-2.8.9,然後按照官網給出的辦法安裝redis即可。 2.安裝完在redis-2.8.9目塵滑瞎錄下執行src/redis-server, 然後在另一讓備個shell窗派空口執行src/redis-cli,可以正確運行。 但...
② 如何在 CentOS 7 上安裝 Redis 伺服器
一、安裝redis
a、在redis官網下載redis:
$ wget http://download.redis.io/releases/redis-3.2.6.tar.gz
$ tar xzf redis-3.2.6.tar.gz
$ cd redis-3.2.6
$ make
b、在redis安裝目錄下進入utils目錄,執行自動安裝腳本
cd utils/
./install_server.sh
一路回車都按照默認設置執行
//執行完腳本後,會出現以下提示:
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
c、添加redis開機自啟動
//修改文件許可權
chmod 755 /etc/init.d/redis_6379
//添加自啟動
chkconfig --add redis_6379
chkconfig --level 345 redis_6379on
d、檢查遠程伺服器的6379埠是否被防火牆攔截。假如未開啟,則添加
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/init.d/iptables restart(視伺服器情況而定,如果不知道的話可以選擇重啟伺服器)
也可以在wdcp的後台系統管理--iptables添加規則
使用安騎士等防火牆軟體的自行添加6379埠訪問通過的規則
e、通過客戶端命令行連接redis
//在本地連接
redis-cli -h 127.0.0.1 -p 6379
二、添加phpredis擴展
獲取並解壓安裝包
cd
wget https://github.com/phpredis/phpredis/archive/develop.zip
unzip develop.zip
注意:若提示未找到「unzip」命令
解決辦法:運行 yum install unzip -y
//進入目錄
cd phpredis-develop
使用phpize命令添加擴展,phpize命令所在路徑根據實際情況修改
/www/wdlinux/nginx_php/bin/phpize
注意:可能會有「Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.」錯誤
解決辦法:運行 yum install -y autoconf
再重新運行前面的phpize命令
出現類似下圖的提示,則代表成功
代表生成redis.so成功,可以進到該目錄去查看是否有生成。該路徑也是視實際情況而定。
//php.ini中加入redis.so擴展
//加入這一行,保存退出。路徑要使用上面裝完redis生成redis.so的路徑
extension=/www/wdlinux/nginx_php/lib/php/extensions/no-debug-non-zts-20121212/redis.so
重啟web服務(重點是重啟php)
通過phpinfo查看是否添加了redis擴展
③ 求教關於Centos 7開機自動啟動腳本 問題。
Centos 7 中 /etc/rc.d/rc.local 這個文件許可權降低了。你可以看下 ll /etc/rc.d/rc.local 看他的許可權。
你可以試著加下許可權。
chmod +x /etc/rc.d/rc.local
④ CentOS7 設置開機自啟動腳本
兩種實現方式:
方法一: (rc.local)
1、因為在 centos7 中 /etc/rc.d/rc.local 的許可權被降低了,所以需要賦予其可執行權
2、賦予腳本可執行許可權
假設 /usr/local/sca/start.sh 是你的腳本路徑,給予執行許可權
3、打開 /etc/rc.d/rc.local 文件,在末尾增加如下內容
方法二: (chkconfig)
1、將腳本移動到 /etc/rc.d/init.d 目錄下
2、增加腳本的可執行許可權
3、添加腳本到開機自動啟動項目中
chkconfig 啟動腳本規范 在腳本開頭加入下面內容:
注意:不添加以上內容的話添加啟動項時會提示service myservice does not support chkconfig
Linux啟動優先順序:
⑤ centos 安裝 redis 怎麼配置文件
Redis是一個開源的使用ANSI C語言編寫、支持網路、可基於內存亦可持久化的日誌型、Key-Value資料庫舉帆帆,並提供多種語言的API。
下載
官網下載:http://redis.io/download
安裝
tar zxvf redis-2.8.9.tar.gz #解壓
cd redis-2.8.9 #進入目錄
make #直接make 編譯
make install #可使用root用戶執行`make install`,將可執行文件拷貝到/usr/local/bin目錄下,這樣就可以直接敲名字運行程序了
啟動(有三種方式)
直接啟動
1、執行命令:
./redis-server & #加上`&`號使redis以後台程序方式運行
2、檢測
ps -ef |grep redis #檢測後台進程是否存在
netstat -lntp | grep 6379 #檢測6379埠是否在監聽
./redis-cli #使用`redis-cli`客戶端檢測連接是否正常
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key "hello world"
OK
127.0.0.1:6379> get key
"hello world"
3、停止
redis-cli shutdown #使用客戶端
kill -9 PID #因為Redis可以妥善處理SIGTERM信號,所以直接kill -9也是可以的
通過指定配置文件啟動
1、配置文件
可為redis服務啟動指定配置文件,配置文件 redis.conf 在Redis根目錄下:
daemonize yes #修改daemonize為yes,即默認以後台程序方式運行
port 6380 #可修改默認監聽埠,原始為6379,我們修改成了6380
logfile "/home/futeng/logs/redis.log" #修改生成默認日誌文件位置#修改生成默認日誌文件位置
dir /home/futeng/data/redisData #修改生成默認日誌文件位置
2、啟動時指定配置文件
redis-server ./redis.conf #指定目錄中某個配置文件
redis-cli -p 6380 #如果更改了埠,使用`redis-cli`客戶端連接時,也需要指定埠
其他啟停同 直接啟動 方式。配置文件是非常重要的配置工具,隨著使用的逐漸轎隱深入將顯得尤為重要,推薦在一開始就使用配置文件。
使用Redis啟動腳本設置開機自啟動正雹
1、啟動腳本
推薦在生產環境中使用啟動腳本方式啟動redis服務,啟動腳本redis_init_script 位於位於Redis的 /utils/ 目錄下:
#大致瀏覽下該啟動腳本,發現redis習慣性用監聽的埠名作為配置文件等命名,我們後面也遵循這個約定。#redis伺服器監聽的埠
REDISPORT=6379
#服務端所處位置,在make install後默認存放與`/usr/local/bin/redis-server`,如果未make install則需要修改該路徑,下同。
EXEC=/usr/local/bin/redis-server
#客戶端位置
CLIEXEC=/usr/local/bin/redis-cli
#Redis的PID文件位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
#配置文件位置,需要修改
CONF="/etc/redis/${REDISPORT}.conf"
2、配置環境
根據啟動腳本要求,將修改好的配置文件以埠為名復制一份到指定目錄,需使用root用戶:
mkdir /etc/redis
cp redis.conf /etc/redis/6379.conf
將啟動腳本復制到/etc/init.d目錄下,本例將啟動腳本命名為redisd(通常都以d結尾表示是後台自啟動服務):
cp redis_init_script /etc/init.d/redisd
設置為開機自啟動,此處直接配置開啟自啟動
chkconfig redisd on
將報錯誤: service redisd does not support chkconfig ,需要我們在啟動腳本開頭添加如下兩行注釋以修改其運行級別:
#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
#
再設置即可成功。
chkconfig redisd on #設置為開機自啟動伺服器
service redisd start #打開服務
service redisd stop #關閉服務
更清晰的話可以看下這篇哦http://www.linuxprobe.com/initial-installation-of-redis.html
⑥ 求教關於Centos 7開機自動啟動腳本 問題
1. 自己新建一個腳本,如centnet-service.sh
經過後面的幾個步驟後,這個腳本在開機的時候會執行,在這個腳本裡面可以寫你開機的時候想執行的命令,如啟動tomcat,oracle等服務
2. 在腳本中輸入啟動服務的命令,如(開機啟動tomcat):
#!/bin/bashexport JDK_HOME=/home/java/jdk1.8.0_91export JAVA_HOME=/home/java/jdk1.8.0_91/home/tomcat/apache-tomcat-8.0.36/bin/startup.sh
3. 執行如下命令,將該腳本標記為可執行文件(添加可執行的許可權)
chmod +x /home/centnet/centnet-service.sh
4. 執行如下命令將/etc/rc.d/rc.local文標記為可執行文件
在centos7中,/etc/rc.d/rc.local文件的許可權被降低了,開機的時候執行在自己的腳本是不能起動一些服務的,執行下面的命令可以文件標記為可執行的文件
chmod +x /etc/rc.d/rc.local
5. 打開/etc/rc.d/rc.local文件,在最後面添加如下腳本
/home/centnet/centnet-service.sh
這樣,centnet-service.sh這個腳本在開機的時候就會被執行了,以後再這裡面寫啟動服務的命令就可以了
⑦ 緩存-redis 三種模式搭建和運行原理
標簽: redis 緩存 主從 哨兵 集群
本文簡單的介紹redis三種模式在linux的安裝部署和數據存儲的總結,希望可以相互交流相互提升。
對於Centos7在安裝redis之前需要進行一些常用工具的安裝:
關閉防火牆
正式安裝redis
在redis進行maketest時候會出現一系列的異常,有如下解決方案:
用redis-server啟動一下redis,做一些實驗沒什麼意義。
要把redis作為一個系統的daemon進程去運行的,每次系統啟動,redis進程一起啟動,操作不走如下:
RDB和AOF是redis的一種數據持久化的機制。 持久化 是為了避免系統在發生災難性的系統故障時導致的系統數據丟失。我們一般會將數據存放在本地磁碟,還會定期的將數據上傳到雲伺服器。
RDB 是redis的snapshotting,通過redis.conf中的save配置進行設置,如 save 60 1000:
AOF 是以appendonly方式進行數據的儲存的,開啟AOF模式後,所有存進redis內存的數據都會進入os cache中,然後默認1秒執行一次fsync寫入追加到appendonly.aof文件中。一般我們配置redis.conf中的一下指令:
AOF和RDB模式我們一般在生產環境都會打開,一般而言,redis服務掛掉後進行重啟會優先家在aof中的文件。
當啟動一個slave node的時候,它會發送一個PSYNC命令給master node,如果這是slave node重新連接master node,那麼master node僅僅會復制給slave部分缺少的數據;否則如果是slave node第一次連接master node,那麼會觸發一次full resynchronization;
開始full resynchronization的時候,master會啟動一個後台線程,開始生成一份RDB快照文件,同時還會將從客戶端收到的所有寫命令緩存在內存中。RDB文件生成完畢之後,master會將這個RDB發送給slave,slave會先寫入本地磁碟,然後再從本地磁碟載入到內存中。然後master會將內存中緩存的寫命令發送給slave,slave也會同步這些數據。
slave node如果跟master node有網路故障,斷開了連接,會自動重連。master如果發現有多個slave node都來重新連接,僅僅會啟動一個rdb save操作,用一份數據服務所有slave node。
從redis 2.8開始,就支持主從復制的斷點續傳,如果主從復制過程中,網路連接斷掉了,那麼可以接著上次復制的地方,繼續復制下去,而不是從頭開始復制一份。
master node會在內存中常見一個backlog,master和slave都會保存一個replica offset還有一個master id,offset就是保存在backlog中的。如果master和slave網路連接斷掉了,slave會讓master從上次的replica offset開始繼續復制,但是如果沒有找到對應的offset,那麼就會執行一次resynchronization。
master在內存中直接創建rdb,然後發送給slave,不會在自己本地落地磁碟了,可以有如下配置:
slave不會過期key,只會等待master過期key。如果master過期了一個key,或者通過LRU淘汰了一個key,那麼會模擬一條del命令發送給slave。
在redis.conf配置文件中,上面的參數代表至少需要3個slaves節點與master節點進行連接,並且master和每個slave的數據同步延遲不能超過10秒。一旦上面的設定沒有匹配上,則master不在提供相應的服務。
sdown達成的條件很簡單,如果一個哨兵ping一個master,超過了 is-master-down-after-milliseconds 指定的毫秒數之後,就主觀認為master宕機
sdown到odown轉換的條件很簡單,如果一個哨兵在指定時間內,收到了 quorum 指定數量的其他哨兵也認為那個master是sdown了,那麼就認為是odown了,客觀認為master宕機
如果一個slave跟master斷開連接已經超過了down-after-milliseconds的10倍,外加master宕機的時長,那麼slave就被認為不適合選舉為master
(down-after-milliseconds * 10) + milliseconds_since_master_is_in_SDOWN_state
每次一個哨兵要做主備切換,首先需要quorum數量的哨兵認為odown,然後選舉出一個slave來做切換,這個slave還得得到majority哨兵的授權,才能正式執行切換;
(2)SENTINEL RESET *,在所有sentinal上執行,清理所有的master狀態
(3)SENTINEL MASTER mastername,在所有sentinal上執行,查看所有sentinal對數量是否達成了一致
4.3.2 slave的永久下線
讓master摘除某個已經下線的slave:SENTINEL RESET mastername,在所有的哨兵上面執行.
redis的集群模式為了解決系統的橫向擴展以及海量數據的存儲問題,如果你的數據量很大,那麼就可以用redis cluster。
redis cluster可以支撐N個redis master,一個master上面可以掛載多個slave,一般情況我門掛載一個到兩個slave,master在掛掉以後會主動切換到slave上面,或者當一個master上面的slave都掛掉後,集群會從其他master上面找到冗餘的slave掛載到這個master上面,達到了系統的高可用性。
2.1 redis cluster的重要配置
2.2 在三台機器上啟動6個redis實例
將上面的配置文件,在/etc/redis下放6個,分別為: 7001.conf,7002.conf,7003.conf,7004.conf,7005.conf,7006.conf
每個啟動腳本內,都修改對應的埠號
2.3 創建集群
解決辦法是 先安裝rvm,再把ruby版本提升至2.3.3
使用redis-trib.rb命令創建集群
--replicas: 表示每個master有幾個slave
redis-trib.rb check 192.168.31.187:7001 查看狀體
3.1 加入新master
以上相同配置完成後,設置啟動腳本進行啟動;然後用如下命令進行node節點添加:
3.2 reshard一些數據過去
3.3 添加node作為slave
3.4 刪除node
⑧ CentOS7設置Redis開機啟動
記下坑的流水賬
安裝都完成了,redis我安裝在單獨的redis用戶里;
所以安裝目錄就是/home/redis/redis-6.0.8/
配置文件的方式來做開機啟動;
/home/redis/redis-6.0.8/utils/redis_init_script 使用redis自己的啟動腳本,將該腳本cp到/etc/init.d/中,順便改名redisd,d結尾的表示自啟動服務(大概);
腳本裡面部分內容需要做修改:
EXEC= 是伺服器程序位置+程序名稱,位置改成自己的:
/home/redis/redis-6.0.8/src/redis-server
CLIEXEC= 是客頌飢戶端的,同樣有必要的話就修改/home/redis/redis-6.0.8/src/redis-cli
CONF=配置文件位置,的安裝目錄里redis.conf到這里指定的位置,順便改名字成敗櫻絕默認埠號,或者設置自己想要的目錄也行:/etc/redis/6379.conf。
配置文件內容要改,比如:
是否守護進程daemonize no改成yes
屏蔽 bind 127.0.0.1
這圖
chkconfig --list 查看自啟動服務
chkconfig --add redisd 把redis加入其中
chkconfig redisd on 開
reboot 重啟
ps -ef|grep redis看看成功沒察姿有
service redisd start 直接開起服務
service redisd stop 關閉redis
有設置密碼會報錯(error) NOAUTH Authentication required
那麼網上有教:在啟動腳本里改一下加入密碼變數
那麼,就是不安全,自己練習機無所謂了
⑨ CENTOS7開機自啟動腳本
1、因為在centos7中 /etc/rc.d/rc.local 的許可權被降低了,所以需要賦予其可執行權
2、賦予腳本可執行許可權
假設 /usr/local/script/autostart.sh 是你的腳本路徑,給予執行許可權
3、打開 /etc/rc.d/rc.local 文件,在末尾增加如下內容
1、將腳本移動到 /etc/rc.d/init.d 目錄下
2、增加腳本的可執行許可權
3、添加腳本到開機自動啟動項目中
chkconfig啟動腳本規范 在腳本開頭加入下面內容:
說明:chkonfig後面是啟動級別和優先順序,description後面是服務描述。如上面腳本意思是,
服務必須在運行級2,3,4,5下被啟動或關閉,啟動的優先順序是90,停止的優先順序是10。
優先順序范圍是0-100,數字越大,優先順序越低。
Linux啟動優先順序
運行級別就是操作系統當前正在運行的功能級別。這個級別從0到6 ,具有不同的功能。
這些級別在/etc/inittab文件里指定。這個文件是init程序尋找的主要文件,最先運行的服務是那些放在/etc/rc.d 目錄下的文件。
不同的運行級定義如下:(可以參考Linux裡面的/etc/inittab)
⑩ Centos7.x Redis6.2.5 Cluster搭建
官方地址:
前提條件:
Redis Cluster 不使用一致性哈希,而是使用不同形式的分片 每個鍵在概念上都是我們所謂的 哈希槽的一部分 。
Redis Cluster 有 16384 個哈希槽,計冊清算哈希值是多少 給定密鑰的插槽,我們只需取密鑰的 CRC16 模 16384。
Redis 集群中的每個節點都負責哈希槽的一個子集, 例如,您可能有一個包含 3 個節點的集群,其中:
節點 A 包含從 0 到 5500 的哈希槽。
節點 B 包含從 5501 到 11000 的哈希槽。
節點 C 包含從 11001 到 16383 的哈希槽。
如果報錯 ERR This instance has cluster support disabled 的話,說明集群未開啟。
本例子是在一台伺服器上面做的實驗,只是創建了6個目錄,啟了6個redis-server而已。
創建一個 redis.conf每個目錄中的文件,從 7000 到 7005。 作為配置文件的模板,只需使用上面的小示例, 但一定要更換埠號 7000使用正確的埠號 根據目錄名。
通過 ps aux|grep redis 查看redis的啟動情況。
如果不想通過配置和執行來創建Redis集群 如上所述,手動單個實例,有一個更簡單的 系統(但您不會了解相同數量的操作細節)。
只需檢查 utils/create-clusterRedis 發行版中的目錄。 有一個腳本叫做 create-cluster裡面(與目錄同名 它包含在)中,它是一個簡單的 bash 腳本。 為了開始 一個有 3 個主節點和 3 個從節點的 6 節點集群只需輸入以下內容 命令:
回復 yes在第 2 步中,當 redis-cli實用程序要你接受 集群布局。
您現在可以與集群交互,第一個節點將從埠 30001 開始 默認情況下。 完成後,使用以下命令停止集群:
請閱讀 README在此目錄中以獲取有關如何操作的更多信息 運行腳本。
create-cluster.sh
集群信息
集群節點
我上面的例子我們可以看出,設置的key會被分配到不同的實例去。
現在很多的sdk都支持move,例如:phpredis。
我們先查看州指前下當前的集群情況。
目前 7000 , 7001 , 7002 是 master 角色, 7003 , 7004 , 7005 是 slave 角色。
然後我們將 7001 這個埠的redis服務的進程殺掉。
7004.log 日誌,發現 7001 主掛了,然後將自己升級為master。
查詢當前的集群狀態如下:
我們可以看出, 7004 升級了 master , 7001 是 fail 狀態。
啟動 7001 的redis服務。
7001.log 中可以發現,自己變成了 slave 。
此時我們再來看下集群情況:
目前 7000 , 7002 , 7004 是 master角色, 7001 , 7003 , 7005 是 slave角色,自動進行了故障切換。
如果配置了 requirepass 的話, masterauth 必須需要配置,不然 master 與 slave 不能自動切換。
修改配置文件 redis.conf 中的 cluster-enabled 參數的值為 yes 並把參數前#去除,重啟Redis伺服器。
在命令尾部追加 2>/dev/null 即可。
我們繼續在 cluster-test 目錄下,創建 7006 目錄,配置和之前的一樣,不同就是埠以及日誌路徑,然後啟動服務即可。
看下最新的集群情況
添加一個 7006 的從節點。
在 cluster-test 目錄下,創建 7007 目錄,配置和之前的一樣,不同就是埠以及日誌路徑,然後逗鋒啟動服務即可。
看下最新的集群情況
從上面集群情況可以看出了問題,新增加的 7006 , 7007 的雖然增加到了集群裡面,但是沒有分配slot。
分配後的集群情況
縮容前:
將 7006 的slot給了 7000 。
縮容後:
刪除了 7006 , 7007 後的集群情況