1. 程式人生 > >常用服務安裝部署

常用服務安裝部署

公司收購 編譯安裝 pat gpo 必須 先後 repl turn str

學了前面的Linux基礎,想必童鞋們是不是更感興趣了?接下來就學習常用服務部署吧!

技術分享圖片

安裝環境:

centos7 + vmware + xshell

即將登場的是:

  • mysql(mariadb)
  • redis
  • python
  • nginx
  • saltstack

MYSQL(mariadb)

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可。
開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,因此社區采用分支的方式來避開這個風險。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。

方法1:yum安裝mariadb

技術分享圖片

yum install mariadb-server mariadb 

相關命令

技術分享圖片
mariadb數據庫的相關命令是:

systemctl start mariadb  #啟動MariaDB

systemctl stop mariadb  #停止MariaDB

systemctl restart mariadb  #重啟MariaDB

systemctl enable mariadb  #設置開機啟動
技術分享圖片

啟動後正常使用mysql

systemctl start mariadb

#進入mysql
mysql -uroot -p

方法2:官網下載mysql-server包(rpm)

# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server

配置mysql

1.中文編碼設置

技術分享圖片
編輯mysql配置文件/etc/my.cnf
[mysqld]
character-set-server=utf8
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
collation-server=utf8_general_ci

security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
技術分享圖片

2.授權配置

技術分享圖片
遠程連接設置哦設置所有庫,所有表的所有權限,賦值權限給所有ip地址的root用戶
mysql > grant all privileges on *.* to root@‘%‘ identified by ‘password‘;
#創建用戶
mysql > create user ‘username‘@‘%‘ identified by ‘password‘;
#刷新權限
flush privileges;
技術分享圖片

MYSQL主從復制

主從機制實現原理

技術分享圖片

(1) master將改變記錄到二進制日誌(binary log)中(這些記錄叫做二進制日誌事件,binary log events); 
(2) slave將master的binary log events拷貝到它的中繼日誌(relay log); 
(3) slave重做中繼日誌中的事件,將改變反映它自己的數據。

master主庫配置

技術分享圖片
#查看數據庫狀態
systemctl status mariadb
#停mariadb
systemctl stop mariadb

#修改配置文件
vim /etc/my.cnf
#修改內容
#解釋:server-id服務的唯一標識(主從之間都必須不同);log-bin啟動二進制日誌名稱為mysql-bin

  [mysqld]
  server-id=1
  log-bin=mysql-bin

#重啟mariadb
systemctl start mariadb
技術分享圖片

master主庫添加從庫賬號

技術分享圖片
1.新建用於主從同步的用戶chaoge,允許登錄的從庫是‘192.168.178.130‘
create user ‘chaoge‘@‘192.168.178.130‘ identified by ‘redhat‘;

2.#題外話:如果提示密碼太簡單不復合策略加在前面加這句
mysql> set global validate_password_policy=0;

3.給從庫賬號授權,說明給chaoge從庫復制的權限,在192.168.178.130機器上復制
grant replication slave on *.* to ‘chaoge‘@‘192.168.178.130‘;

4.檢查主庫的狀態

MariaDB [(none)]> show master status
-> ;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 575 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

File是二進制日誌文件名,Position 是日誌開始的位置。後面從庫會用到 後面從庫會用到 後面從庫會用到!!!!!!

技術分享圖片

slave從庫配置

技術分享圖片
1.檢查slave數據庫狀態
systemctl status mariadb

2.停止mariadb
systemctl stop mariadb

3.修改配置文件my.cnf
[mysqld]
server-id=2 #一定要和主庫區別開

4.重啟mariadb
systemctl start mariadb

5.登錄mariadb
mysql -uroot -p

6.使用主庫授權的賬號

mysql > change master to master_host=‘192.168.178.129‘,
master_user=‘chaoge‘,
master_password=‘redhat‘,
master_log_file=‘mysql-bin.000001‘,
master_log_pos=575;

 7.重啟數據庫

systemctl restart mariadb

技術分享圖片

redis

Redis 是一個開源(BSD許可)的,內存中的數據結構存儲系統,它可以用作數據庫、緩存和消息中間件

技術分享圖片

yum安裝redis

1.yum安裝

技術分享圖片
#前提得配置好阿裏雲yum源,epel源
#查看是否有redis包
yum list redis
#安裝redis
yum install redis -y
#安裝好,啟動redis
systemctl start redis
技術分享圖片

2.檢測redis是否工作

redis-cli    #redis 客戶端工具
#進入交互式環境後,執行ping,返回pong表示安裝成功
127.0.0.1:6379> ping
PONG

源碼安裝redis,編譯安裝

大家用過yum,是相當省事好用吧,為什麽還要學習源碼安裝?技術分享圖片

有人說編譯安裝性能好?錯

編譯安裝的優勢是:

  • 編譯安裝時可以指定擴展的module(模塊),php、apache、nginx都是一樣有很多第三方擴展模塊,如mysql,編譯安裝時候,如果需要就定制存儲引擎(innodb,還是MyIASM)
  • 編譯安裝可以統一安裝路徑,linux軟件約定安裝目錄在/opt/下面
  • 軟件倉庫版本一般比較低,編譯源碼安裝可以根據需求,安裝最新的版本
技術分享圖片
1.下載redis源碼
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
2.解壓縮
tar -zxf redis-4.0.10.tar.gz
3.切換redis源碼目錄
cd redis-4.0.10.tar.gz
4.編譯源文件
make
5.編譯好後,src/目錄下有編譯好的redis指令
6.make install 安裝到指定目錄,默認在/usr/local/bin
技術分享圖片

redis可執行文件

技術分享圖片
./redis-benchmark //用於進行redis性能測試的工具
./redis-check-dump //用於修復出問題的dump.rdb文件
./redis-cli //redis的客戶端
./redis-server //redis的服務端
./redis-check-aof //用於修復出問題的AOF文件
./redis-sentinel //用於集群管理
技術分享圖片

啟動redis服務端

啟動redis非常簡單,直接./redis-server就可以啟動服務端了,還可以用下面的方法指定要加載的配置文件:
./redis-server ../redis.conf
默認情況下,redis-server會以非daemon的方式來運行,且默認服務端口為6379。

使用redis客戶端

技術分享圖片
#執行客戶端命令即可進入
./redis-cli  
#測試是否連接上redis
127.0.0.1:6379 > ping
返回pong代表連接上了

//用set來設置key、value
127.0.0.1:6379 > set name "chaoge"
OK
//get獲取name的值
127.0.0.1:6379 > get name
"chaoge"
技術分享圖片

redis數據結構

技術分享圖片
redis是一種高級的key:value存儲系統,其中value支持五種數據類型
字符串(strings)
散列(hashes)
列表(lists)
集合(sets)
有序集合(sorted sets)
技術分享圖片

數據結構示例

1.strings類型
技術分享圖片
set name "chaoge66" //設置name
get name    //讀取name

strings類型支持數值操作
set age "17" //設置key age
get age        //讀取age
incr age      //數值+1,遇見數值操作時,redis會將字符串類型轉成數值
get age        //此時age是18,value仍然是字符串
type age    //查看鍵的類型
技術分享圖片
2.list類型
技術分享圖片
redis的另外一個數據結構叫做lists,中文叫列表
lists常用操作包括
LPUSH   在lists左側插入一個新元素 
RPUSH   在lists右側插入一個新元素
LRANGE  在lists指定範圍提取元素
LPOP 左側刪除
RPOP  右側刪除

示例:

lpush mylist "1" //新建一個mylist,在頭部插入元素"1"
(integer) 1 //返回mylist元素個數

rpush mylist "2" //在mylist右側插入元素"2"

(INTEGER) 2 //返回mylist元素個數

127.0.0.1:6379> lpush mylist "0" //在mylist左側插入元素"0"

(integer) 3 //返回mylist元素個數

//列出mylist中從編號0到編號1的元素

127.0.0.1:6379> lrange mylist 0 -1
1) "0"
2) "1"
3) "2"

lists類型常用在,消息隊列、實現分頁功能、存儲文章評論

技術分享圖片

3.sets集合類型

redis的集合,是一種無序的集合,集合中的元素沒有先後順序。

集合相關的操作也很豐富,如添加新元素、刪除已有元素、取交集、取並集、取差集等。我們來看例子:

技術分享圖片
//向集合myset中加入一個新元素"one"
127.0.0.1:6379> sadd myset "one" 
(integer) 1
127.0.0.1:6379> sadd myset "two"
(integer) 1
//列出集合myset中的所有元素
127.0.0.1:6379> smembers myset 
1) "one"
2) "two"
//判斷元素1是否在集合myset中,返回1表示存在
127.0.0.1:6379> sismember myset "one" 
(integer) 1
//判斷元素3是否在集合myset中,返回0表示不存在
127.0.0.1:6379> sismember myset "three" 
(integer) 0
//新建一個新的集合yourset
127.0.0.1:6379> sadd yourset "1" 
(integer) 1
127.0.0.1:6379> sadd yourset "2"
(integer) 1
127.0.0.1:6379> smembers yourset
1) "1"
2) "2"
//對兩個集合求並集
127.0.0.1:6379> sunion myset yourset 
1) "1"
2) "one"
3) "2"
4) "two"

集合的使用比如QQ社交功能中的“好友標簽”,朋友給你的好友標簽“sb”,“dsb”等等,就可以吧每一個用戶的標簽存儲在集合裏
技術分享圖片

4.sorted sets有序集合

redis不但提供了無需集合(sets),還很體貼的提供了有序集合(sorted sets)。有序集合中的每個元素都關聯一個序號(score),這便是排序的依據。

很多時候,我們都將redis中的有序集合叫做zsets,這是因為在redis中,有序集合相關的操作指令都是以z開頭的,比如zrange、zadd、zrevrange、zrangebyscore等等

技術分享圖片
127.0.0.1:6379> zadd myzset 1 baidu.com 
(integer) 1
//向myzset中新增一個元素360.com,賦予它的序號是3
127.0.0.1:6379> zadd myzset 3 360.com 
(integer) 1
//向myzset中新增一個元素google.com,賦予它的序號是2
127.0.0.1:6379> zadd myzset 2 google.com 
(integer) 1
//列出myzset的所有元素,同時列出其序號,可以看出myzset已經是有序的了。
127.0.0.1:6379> zrange myzset 0 -1 with scores 
1) "baidu.com"
2) "1"
3) "google.com"
4) "2"
5) "360.com"
6) "3"
//只列出myzset的元素
127.0.0.1:6379> zrange myzset 0 -1 
1) "baidu.com"
2) "google.com"
3) "360.com"
技術分享圖片

5.哈希數據結構

hashes即哈希。哈希是從redis-2.0.0版本之後才有的數據結構。

hashes存的是字符串和字符串值之間的映射,比如一個用戶要存儲其全名、姓氏、年齡等等,就很適合使用哈希。

技術分享圖片
//建立哈希,並賦值
127.0.0.1:6379> HMSET user:001 username antirez password P1pp0 age 34 
OK
//列出哈希的內容
127.0.0.1:6379> HGETALL user:001 
1) "username"
2) "antirez"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
//更改哈希中的某一個值
127.0.0.1:6379> HSET user:001 password 12345 
(integer) 0
//再次列出哈希的內容
127.0.0.1:6379> HGETALL user:001 
1) "username"
2) "antirez"
3) "password"
4) "12345"
5) "age"
6) "34"
技術分享圖片

Python編譯安裝

先放個龜叔再說

技術分享圖片

centos7默認是裝有python的,咱們先看一下

#檢查python版本
[root@oldboy_python ~ 17:23:54]#python -V
Python 2.7.5

再放一張圖,《震驚,python2.7不再維護!》

技術分享圖片

好了,咱們開始python3之旅。

編譯環境準備

技術分享圖片
1、./configure 是用來檢測你的安裝平臺的目標特征的。比如它會檢測你是不是有CC或GCC,並不是需要CC或GCC,它是個shell腳本。
2、make 是用來編譯的,它從Makefile中讀取指令,然後編譯。
3、make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。
4.解決依賴關系
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel -y
技術分享圖片

這裏看超哥另外一篇文章:https://www.cnblogs.com/pyyu/p/7402145.html

技術分享圖片
1.下載python3版本
curl -O https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
2.解壓縮源碼
tar -zxvf Python-3.7.0.tgz
3.編譯三部曲
./configure –prefix=/opt/python3.7/ #指定編譯裝到/opt/python3.7/下
make && make install #編譯和安裝
技術分享圖片

NGINX

技術分享圖片

nginx [engine x]是Igor Sysoev編寫的一個HTTP和反向代理服務器,另外它也可以作為郵件代理服務器。 它已經在眾多流量很大的俄羅斯網站上使用了很長時間,這些網站包括Yandex、Mail.Ru、VKontakte,以及Rambler。據Netcraft統計,在2012年8月份,世界上最繁忙的網站中有11.48%使用Nginx作為其服務器或者代理服務器。

技術分享圖片

Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。

從2011年12月開始,Tengine成為一個開源項目,Tengine團隊在積極地開發和維護著它。Tengine團隊的核心成員來自於淘寶、搜狗等互聯網企業。Tengine是社區合作的成果,我們歡迎大家參與其中,貢獻自己的力量。

安裝環境準備

技術分享圖片
一. gcc 安裝
安裝 nginx 需要先將官網下載的源碼進行編譯,編譯依賴 gcc 環境,如果沒有 gcc 環境,則需要安裝:

yum install gcc-c++
二. PCRE pcre-devel 安裝
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式,所以需要在 linux 上安裝 pcre 庫,pcre-devel 是使用 pcre 開發的一個二次開發庫。nginx也需要此庫。命令:

yum install -y pcre pcre-devel
三. zlib 安裝
zlib 庫提供了很多種壓縮和解壓縮的方式, nginx 使用 zlib 對 http 包的內容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫。

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

yum install -y openssl openssl-devel
技術分享圖片

安裝,啟動nginx

技術分享圖片
1.下載源碼包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.解壓縮源碼
tar -zxvf nginx-1.12.0.tar.gz
3.配置,編譯安裝
.configure --prefix=/opt/nginx1-12/
make && make install
4.啟動nginx,進入sbin目錄,找到nginx啟動命令
cd sbin
./nginx #啟動
./nginx -s stop #關閉
./nginx -s reload #重新加載
技術分享圖片

uWSGI+NGINX+Django部署應用

經過上續的nginx,python安裝,還得提前安裝好virtualenv(超哥博客)

安裝uWSGI

技術分享圖片
後續都得在虛擬環境下配置,
(venv)pip3 install uwsgi 安裝uwsgi
安裝好後,編寫一個
test.py def application(env,start_response): start_response(‘200 OK‘,[(‘Content-Type‘,‘text/html‘)]) return [b‘Hello world!‘]
技術分享圖片

開啟uWSGI服務

uwsgi --http :8000 --wsgi-file test.py 

saltstack

對於運維人員來說,反復復雜的工作很煩,效率低,還容易出錯。而傳統運維也想著自動化運維的方向進行發展,

而saltstack則是在自動化運維上非常好用的工具,saltstack是python開發的一款自動化運維工具,可以批量管理操作主機,

遠程執行腳本等功能。完全開源,還可以設置web管理界面,更簡單的管理大量服務器。

基本原理:

技術分享圖片
基本原理
SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ消息隊列通信 minion上線後先與master端聯系,把自己的pub key發過去,這時master端通過salt-key -L命令就會看到minion的key,接受該minion-key後,也就是master與minion已經互信
技術分享圖片

安裝準備:

技術分享圖片
1.安裝epel源(同時在master,minion端)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.安裝salt-master,也就是服務端
yum install salt-master -y

3.安裝salt-minion,也就是客戶端
yum install salt-minion -y
技術分享圖片

常用服務安裝部署