在CentOS7上部署Memcached主主复制+Keepalived高可用架构

原理:

Memcached主主复制是指在任意一台Memcached服务器修改数据都会被同步到另外一台,但是Memcached API客户端是无法判断连接到哪一台Memcached服务器的,所以需要设置VIP地址,提供给Memcached API客户端进行连接。可以使用Keepalived产生的VIP地址连接主Memcached服务器,并且提供高可用架构。

使用两台Memcached服务器,一台客户机来完成,实验环境表如下:

未分类

1.配置memcached主缓存节点和从缓存节点—–两台配置相同

 [root@localhost ~]# tar zxvf libevent-2.1.8-stable.tar.gz -C /opt/   //解包//
 [root@localhost ~]# tar zxvf memcached-1.5.6.tar.gz -C /opt/
 [root@localhost ~]# mkdir /opt/magent
 [root@localhost ~]# tar zxvf magent-0.5.tar.gz -C /opt/magent/ 
 [root@localhost opt]#cd libevent-2.1.8-stable/
 [root@localhost libevent-2.1.8-stable]# yum install gcc gcc-c++ make -y
 [root@localhost libevent-2.1.8-stable]# ./configure --prefix=/usr
 [root@localhost libevent-2.1.8-stable]# make && make install
 [root@localhost libevent-2.1.8-stable]# cd ../memcached-1.5.6/
 [root@localhost memcached-1.5.6]# ./configure --with-libevent=/usr

 [root@localhost memcached-1.5.6]# ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6    //软链接//

2.关闭防火墙并开启memcached服务

[root@localhost memcached-1.5.6]# systemctl stop firewalld.service 
[root@localhost memcached-1.5.6]# setenforce 0
[root@localhost memcached-1.5.6]# memcached -d -m 32m -p 11211 -u root
[root@localhost memcached-1.5.6]# netstat -ntap | grep 11211
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      11224/memcached     
tcp6       0      0 :::11211                :::*                    LISTEN      11224/memcached

3.在主服务器上安装magent

[root@localhost memcached-1.5.6]# cd /opt/magent/
[root@localhost magent]# ls
ketama.c  ketama.h  magent.c  Makefile
[root@localhost magent]# vim ketama.h

#ifndef SSIZE_MAX
#define SSIZE_MAX 32767
#endif
[root@localhost magent]# vim Makefile 
LIBS = -levent -lm //第一行末尾加-lm (不是数字1
LIBS = -levent -lm
CFLAGS = -Wall -O2 -g

[root@localhost magent]# make
gcc -Wall -O2 -g  -c -o magent.o magent.c
gcc -Wall -O2 -g  -c -o ketama.o ketama.c
gcc -Wall -O2 -g -o magent magent.o ketama.o -levent -lm

4.把生成的mgent程序让系统识别

ls一下可看到magent可执行程序
[root@localhost magent]# ls
ketama.c  ketama.h  ketama.o  magent  magent.c  magent.o  Makefile
[root@localhost magent]# cp magent /usr/bin/

5.把产生的magent文件直接复制到从服务器。

[root@localhost bin]# yum install openssh-clients -y
[root@localhost bin]# scp magent [email protected]:/usr/bin/ 

6.安装keepalived,修改默认配置文件。

[root@localhost bin]# yum install keepalived -y
[root@localhost bin]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
vrrp_script magent {
        script "/opt/shell/magent.sh"
        interval 2
}

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MAGENT_HA    //主服务器名称//
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33     //网卡名称//
    virtual_router_id 51
    priority 100    //优先级//
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111   
    }
    virtual_ipaddress {
        192.168.126.188     //虚拟IP//
    }
track_script {
        magent     //函数//
}
}

7.从服务器上安装keepalived,配置文件进行修改。

[root@localhost bin]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
vi keepalived.conf
vrrp_script magent {
        script "/opt/shell/magent.sh"
        interval 2
}

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id MAGENT_HB      //从服务器的名称//
}

vrrp_instance VI_1 {
    state BACKUP            //从服务器的热备状态要修改成BACKUP//
    interface ens33  //网卡名称//
    virtual_router_id 52    //不能与主服务器相同//
    priority 90       //从调度器的优先级要小于主的//
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.126.188     //虚拟IP//
    }
track_script {        //函数//
        magent  
}
}

8.在主服务器上设置magent管理脚本

[root@localhost bin]# mkdir /opt/shell
[root@localhost bin]# vim /opt/shell/magent.sh

#!/bin/bash
K=`ps -ef | grep keepalived | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.126.188 -p 12000 -s 192.168.126.138:11211 -b 192.168.126.166:11211
else
pkill -9 magent
fi

参数注解:
-n 51200 //定义用户最大连接数
-l 192.168.126.188 //指定虚拟IP
-p 12000  //指定端口号
-s //指定主缓存服务器
-b //指定从缓存服务器

[root@localhost shell]# chmod +x magent.sh   // 增加执行权限//

9.在从服务器上操作

[root@localhost bin]# mkdir /opt/shell
[root@localhost bin]# cd /opt/shell/
[root@localhost shell]# vim magent.sh
[root@localhost shell]# vim magent.sh
脚本内容如下,与主服务器脚本有区别!
#!/bin/bash
K=`ip addr | grep 192.168.126.188 | grep -v grep | wc -l`
if [ $K -gt 0 ]; then
        magent -u root -n 51200 -l 192.168.126.188 -p 12000 -s 192.168.126.138:11211 -b 192.168.126.166:11211
else
pkill -9 magent
fi  
[root@localhost shell]# chmod +x magent.sh 

10.开始验证

1)启动主服务器

[root@localhost shell]# systemctl start keepalived.service 
[root@localhost shell]# netstat -ntap | grep 12000  //确认magent运行//
tcp        0      0 192.168.126.188:12000   0.0.0.0:*               LISTEN      12422/magent 

2)启动从服务器

[root@localhost shell]# systemctl start keepalived.service 
[root@localhost shell]# netstat -ntap | grep 12000
tcp        0      0 192.168.126.188:12000   0.0.0.0:*               LISTEN      11716/magent  

3)在主服务器上使用telnet进行简单验证复制功能

[root@localhost shell]# telnet 192.168.126.188 12000  //用漂移地址登陆服务//
Trying 192.168.126.188...
Connected to 192.168.126.188.
Escape character is '^]'.
add username 0 0 7      //添加一条键值数据//
1234567
STORED

在从服务器上查看
[root@localhost shell]# telnet 192.168.126.188 12000 
Trying 192.168.126.188...
Connected to 192.168.126.188.
Escape character is '^]'.
get username    //查看键值数据
VALUE username 0 7
1234567         //内容存在,写入成功//
END

11.在客户端用漂移地址登陆服务

[root@localhost ~]# yum install telnet -y
[root@localhost ~]# telnet 192.168.126.188 12000 
Trying 192.168.126.188...
Connected to 192.168.126.188.
Escape character is '^]'.
add username 0 0 8    //添加一条键值数据//
12345678
STORED

1)在主服务器和从服务器上查看是否写入成功。

主服务器
get username
VALUE username 0 8
12345678
END

从服务器
get username
VALUE username 0 8
12345678
END

2)把主服务器停了业务不影响

[root@localhost shell]# systemctl stop keepalived.service
[root@localhost shell]# ip addr
inet 192.168.126.138/24 brd 192.168.126.255 scope global dynamic ens33

3)在从服务器上查看

[root@localhost shell]# ip addr
inet 192.168.126.166/24 brd 192.168.126.255 scope global dynamic ens33
       valid_lft 1146sec preferred_lft 1146sec
    inet 192.168.126.188/32 scope global ens33
可以看到漂移地址已经转移到从服务器上了,说明从已接受工作。

4)再把主服务器开启

[root@localhost shell]# systemctl start keepalived.service 
[root@localhost shell]# ip addr
inet 192.168.126.138/24 brd 192.168.126.255 scope global dynamic ens33
       valid_lft 1145sec preferred_lft 1145sec
    inet 192.168.126.188/32 scope global ens33
       valid_lft forever preferred_lft forever
漂移地址再次转移到主服务器上,接手地址,服务依然不受影响。

实验成功

CentOS LVM卷转变成普通卷操作步骤

CentOS LVM卷转变成普通卷操作步骤

1.系统信息

lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.2.1511 (Core)
Release:    7.2.1511
Codename:   Core

2.背景

公司线上服务器要上线大数据平台,使用LVM卷对生产上业务有
一定的影响。新机器的部署我都是使用的自动化部署脚本进行的,
脚本中对数据盘使用的LVM格式,因此,我需要手动更改
磁盘卷的类型。

3.具体实施步骤

#操作前请做好数据的备份
#卸载逻辑卷之前的文件系统
df -h
文件系统                    容量  已用  可用 已用% 挂载点
/dev/mapper/vgdata-lvdata1  197G   61M  187G    1% /data
#umount文件系统
umount /data
#lvremove操作
lvremove /dev/vgdata/lvdata1
Do you really want to remove active logical volume vgdata/lvdata1? [y/n]: y
Logical volume "lvdata1" successfully removed
#vgremove操作
vgremove vgdata
Volume group "vgdata" successfully removed
#pvremove操作
pvremove /dev/vdb1
Labels on physical volume "/dev/vdb1" successfully wiped.
#fdisk磁盘分区
##查看下当前lvm的分区
fdisk -l
设备 Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048   419430399   209714176   8e  Linux LVM
#重新进行磁盘分区
fdisk /dev/vdb
d --> p --> n --> 三次enter默认 --> p --> w
#对刚分好分区的磁盘格式化
mkfs.ext4 /dev/vdb1
#查看UUID
blkid
/dev/vdb1: UUID="456b88bf-19fe-4b80-b408-13451d10e78w" TYPE="ext4"
#更改/etc/fstab文件
sed -i 's#/dev/vgdata/lvdata1   /data    ext4    defaults        1 1 #UUID="456b88bf-19fe-4b80-b408-13451d10e78w"  /data                ext4    defaults        1 1#g'
#挂载分区
mount -a

centos7上测试部署kvm虚拟机

华为的云计算已经摒弃xen架构了,使用kvm。目前kvm已经是一种主流虚拟化架构,所以学习kvm是很有必要的。

一、部署环境

使用vmware workstation部署centos7虚拟机,采用最小化安装,硬盘50G,内存2G,开启cpu虚拟化。网络模式采用桥接,ip地址192.168.3.1,kvm
对虚拟机进行初始化操作,包括关闭selinux 等

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
systemctl disable firewalld
systemctl stop firewalld

二、安装kvm

验证cpu是否支持kvm,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的

egrep '(vmx|svm)' /proc/cpuinfo

未分类

2.最小化安装依赖包

yum install epel-release net-tools vim unzip zip wget ftp -y

3.安装kvm及依赖项

yum install qemu-kvm libvirt virt-install bridge-utils -y

4.验证安装结果

lsmod | grep kvm

未分类

5.开启kvm服务

systemctl start libvirtd

systemctl enable libvirtd

6.确认服务运行

systemctl status libvirtd

未分类

7.配置网桥模式
先将 /etc/sysconfig/network-scripts/ 目录下的网卡配置文件备份一份(不要备在当前目录以及子目录下,其他目录随意)

cp ifcfg-ens33 /root/   #这里物理网卡配置名称为ens33,复制到/root/

创建 ifcfg-br0 文件,内容如下

cat >>ifcfg-br0 <<EOF
BOOTPROTO=static
DEVICE=br0
TYPE=Bridge
NM_CONTROLLED=no
IPADDR=192.168.3.50
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=202.103.24.68
DNS2=202.103.44.150
EOF

未分类

移除掉原来的 ifcfg-ens33 ,重新创建该文件,内容如下:

BOOTPROTO=none
DEVICE=ens33
NM_CONTROLLED=no
ONBOOT=yes
BRIDGE=br0

未分类

重启网络服务

systemctl restart network

使用ifconfig查看,此时多了块网卡br0

未分类

注意virbr0是kvm内部作为nat使用的,没有配置则自动分配192.168.122.1地址,暂时不用管

三、安装虚拟机

准备操作系统,kvm可以很好的支持linux虚拟机,windows虚拟机需要另外装驱动。创建/home/iso目录,使用xftp上传镜像centos7镜像

未分类

未分类

上传完毕后如下图所示

未分类

2.创建虚拟机存放文件目录

mkdir -p /home/kvm

3.使用virt-install创建虚拟机

virt-install --name centos7_kvm --memory 512 --vcpus=1 --disk /home/kvm/centos7_kvm.img,format=qcow2,size=20 --network bridge=br0 --os-type=linux --os-variant=rhel7.3 --cdrom /home/iso/CentOS-7-x86_64-Minimal-1611.iso --noautoconsole --vnc --vncport=5910 --vnclisten=0.0.0.0

未分类

注意,这里参数最好加上–noautoconsole,不然本tty就会一直被占用,会误以为失败死机
检查虚拟机状态,确认运行

virsh list

未分类

virsh工具的相关选项说明
--name 虚拟机名称
--memory 内存大小
--vcpus= vcpu
--disk 创建硬盘 制定硬盘路径,格式,大小
--network 指定网络
--os-type 指定操作系统类型
--os-variant= 指定操作系统版本
--cdrom 指定光驱安装操作系统
--noautoconsosle 虚拟机创建完毕后不会自动切换tty
--vnc 使用vnc
--vncport vnc端口

4.使用vnc登录虚拟机安装操作系统

未分类

安装操作系统

未分类

因为连接br0,虚拟机可以使用dhcp获取ip地址

未分类

kvm中虚拟机创建成功,可以直接使用ssh连接kvm虚拟机进行配置

vagrant + centos/7 搭建自己的本地开发环境

作为前端的童鞋们,也许很少接触到服务器相关的知识,但是要做一名合格的软件工程师,就不得不用到这些『软技能』啦,在踩了无数次坑后,终于搭建好属于自己的开发环境,成就感妥妥的。

简单介绍

  • 本文基于MacOS High Sierra 10.13.3 系统,系统的差异可能导致搭建过程中出现不同问题,请自行Google哦。
  • vagrant是一款利器,利用 vagrant + vitualBox 可以搭建虚拟开发环境并且把代码同步共享到linux虚拟机,你可以把这个虚拟机配成和生产环境一样的。还可以将自己的系统打包成虚拟机镜像,发给小伙伴们使用。
  • vagrant 常用来做开发环境的部署工具,而 docker 是一种虚拟化技术,生产环境上基本上使用docker,并且更轻量级 ,当然你也可以折腾一下docker。
  • centos 与 ubuntu 都是 linux 发型版本之一,
    但通常来说公司都是使用centos作为自己生产环境的系统。

工具及要安装的软件

  • Mac
  • vitualBox
  • vagrant
  • centos/7
  • 宝塔面板(简单好用的服务器管理面板工具)
  • SwitchHosts(好用的hosts管理工具)

安装

到官网下载并安装vitualBox,我下载的是OS X 版的,版本号是 5.2.12
再安装vagrant,此处选择Mac os 版本,以上就根据安装器的提示进行安装即可。
打开终端进到mac系统的宿主目录,创建一个存放你的配置的文件夹, 名字最好取得简单易懂,此处取为centos_vagrant:

$  ~mkdir centos_vagrant

复制代码去网上查找可用的 box , 可以把box理解为类似于iso的镜像文件,搭载了你需要的系统,这里我们去官网查看:

未分类

找到要下载的镜像,点进去,发现可以用vagrant 命令下载并且初始化box:

未分类

但是由于网速原因,在终端下载安装简直比龟速还龟速,这里提供其他两种方法下载:

  1. 去网上找找别人分享的 box文件,这里分享了一个,下载到一开始创建的文件夹centos_vagrant中,但是分享的可能与官网版本有差异,这一点需要注意。

  2. 依然在终端运行vagrant init centos/7 命令,但是在运行过程中会发现终端将box文件原地址打印了出来,见下图, 一出现该地址,即可按 ctrl + c 退出
    将该地址复制出来去浏览器里访问下载,比在终端通过命令行下载快得多,当然这些都需要科学上网才能完成。

未分类

搭建环境

了解vagrant常用命令

$ vagrant

未分类

安装 box

进入到刚刚创建的centos_vagrant文件夹,如果里面有vagrantfile文件, 先删除它,刚刚下载好的box文件,也放到这个文件夹,重命名一下,这里命名为centos-7.box
打开终端,进入到centos_vagrant文件夹,使用以下命令:

$ vagrant box add centos-7.box
$ vagrant init centos-7
$ vagrant up

这个过程最好保证你的应用 vitualBox 是开着的

设置文件及目录共享

  • 可以将常用的命令加入到alias 里,在全局使用,因为我安装了zsh,所以编辑.zshrc并保存,没有安装的同学找到.bashrc或.bash_profile进行编辑。
#vagrant-centos
alias centos_up='cd ~/centos_vagrant && vagrant up'
alias centos_status='cd ~/centos_vagrant && vagrant status'
alias centos_ssh='cd ~/centos_vagrant && vagrant ssh'
alias centos_halt='cd ~/centos_vagrant && vagrant halt'
alias centos_reload='cd ~/centos_vagrant && vagrant reload --provision'
alias centos_vi='cd ~/centos_vagrant && vi Vagrantfile'
  • 修改vagrantfile
    在本地随意建一个文件夹,假设为centos_vagrant_project,使用 centos_ssh或者vagrant ssh(后面默认使用centos_xxx),登录到虚拟机
    使用 ls -al命令,会发现虚拟环境里只有.ssh、.bashrc等文件

在虚拟机也创建一个,最好是同名的文件夹,方便管理

$ mkdir centos_vagrant_project

重开终端,使用 centos_vi对vagrantfile进行编辑,并且一定要去掉前面的#号注释!!( 不会使用vim 命令的也可使用文本编辑),
修改如下:

未分类

第一个文件夹目录是你本机要映射到虚拟机的目录,第二个是你虚拟机上的目录,第二句config.vm.synced…是将原本的默认路径禁止掉
但是这里有个坑,在我以为配置完成后,centos_reload重启后,在本机的centos_vagrant_project文件夹中做了一些改动,发现在虚拟机里并没有任何变化,经过排查,发现是虚拟机映射的那个目录(后面那个)路径不对,应该是:/home/vagrant/centos_vagrant_project ,即这个路径是绝对路径, pwd命令可以查看文件路径
需要注意的是,前面的本机的目录 ~/centos_vagrant_project里面的波浪线代表的是宿主目录,即 /users/username
这样目录映射共享就做好了,在本机的文件夹下,添加一个文件,会发现在虚拟机里的文件也同步了。

外部访问与端口转发

  • 自己安装Nginx去做域名映射太复杂,这里推荐一个简便的工具——宝塔面板,当然你也可以自己安装Nginx去折腾…
  • 登录到虚拟机,使用 root 账户
$ centos_ssh
$ sudo su - 

使用以下命令安装:

$ yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh

安装完成后,会分配一个账户及密码给你,一定要记好

未分类

如果之前你已经装了Nginx,可以使用命令删除它

$ yum remove nginx
  • 修改vagrantfile做端口转发与外部访问
    centos_vi打开并编辑vagrantfile文件,配置如下

未分类

简单说一下,guest是虚拟机上对应的端口,host是本机对应的端口,由于我本机80端口常用来做项目,避免哪天不小心开着虚拟机,端口被占用,还一直找不到原因,所以选择了不常用的8089
本机的8888端口也对应虚拟机的8888端口,即之前安装宝塔的时候它需要的端口。配置好后重启虚拟机,浏览器里输入127.0.0.1:8888,使用之前分配给你的账户和密码,登录到宝塔面板,登录后最好改个好记的账户名和密码

域名映射

  • 打开宝塔面板,在 “软件管理” 中安装你需要的,比如:Nginx、PHP、Mysql…
  • 在 “网站” 中可以添加站点,但是使用宝塔面板建站的时候默认给你建到了 www/wwwroot目录下,不过问题也不大
  • 推荐使用 SwitchHosts 软件管理你本地的hosts

域名映射示例

  • 在本地创建test_erp文件夹,路径为’~/my-pro/test_erp’
  • 新建站点时,路径为/www/wwwroot/test_erp,域名为test-erp.com
  • 建好站点不用再进到虚拟机建目录,宝塔会帮你创建好
  • 使用SwitchHosts配置hosts站点:127.0.0.1 test-erp.com
  • 增加vagrantfile的配置,做好目录映射,重启虚拟机
  • 浏览器中使用 test-erp.com:8089访问

宝塔域名配置:

未分类

页面如下:

未分类

本机文件路径:

未分类

虚拟机文件路径:

未分类

vagrantfile文件配置:

未分类

打包镜像

$ vagrant package --output centos-7-ydj.box --vagrantfile Vagrantfile

输出结果:

➜  centos_vagrant vagrant package --output centos-7-ydj.box --vagrantfile Vagrantfile
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: /Users/zhangyilan/centos_vagrant/centos-7-ydj.box
==> default: Packaging additional file: Vagrantfile
➜  centos_vagrant ls
Vagrantfile      centos-7-ydj.box centos-7.box

打包完成!!

tips

  • 每次修改完vagrantfile文件或者对虚拟机做了操作,一定要reload重启!!
  • Nginx配置易出现403 Forbbiden 权限问题,涉及到linux 的 目录/用户/权限 等系列问题
  • 端口、文件名等等,主机和虚拟机最好保持一致,不然会很头疼的
  • 涉及到服务器等相关的,不学点 linux、vim 命令,几乎动不了手…

结语

折腾服务器,搭建环境是一个需要耐心、恒心的过程,会遇到各种各样的问题,这个时候就需要去google,不断排查bug,并且要记录,免得再次掉坑里。
合理使用工具也很重要,毕竟咱不是专业的运维er…
Finally , 小哥哥小姐姐们,如果觉得OK,不要吝啬你的小心心咯 (´▽`ʃ♡ƪ),躁起来吧!

Centos7防火墙firewalld配置常用命令

1. firewalld的基本使用方法

启动命令如下

systemctl start firewalld

状态查看

systemctl status firewalld

停止运行

systemctl stop firewalld

禁止开机运行

systemctl disable firewalld

允许开机允许

systemctl enable firewalld

2. 配置firewalld-cmd

查看版本

firewall-cmd --version

查看帮助

firewall-cmd --help

显示状态

firewall-cmd --state

查看所有打开的端口

firewall-cmd --zone=public --list-ports

更新防火墙规则

firewall-cmd --reload

查看区域信息

firewall-cmd --get-active-zones

查看指定接口所属区域

firewall-cmd --get-zone-of-interface=eth0

拒绝所有包

firewall-cmd --panic-on

取消拒绝状态

firewall-cmd --panic-off

查看是否拒绝

firewall-cmd --query-panic

3. 规则添加

单端口添加如下

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=80/udp --permanent

端口范围添加如下

firewall-cmd --zone=public --add-port=80-100/tcp --permanent
firewall-cmd --zone=public --add-port=80-100/udp --permanent

添加完毕,请执行如下命令,重新载入配置

firewall-cmd --reload

Ubuntu/Debian/CentOS系统安装Node.js软件教程

老蒋在”Ubuntu 18.04 LTS系统安装Node.js运行环境”文章中有分享到在Ubuntu环境中安装Node.js,且顺带一并安装NPM工具的教程。但是今天在给一个网友解决问题的时候,其需要在CentOS中安装Node.js,因为其默认的CentOS7版本Node.js低于5.0的,且某个软件是需要在高版本中运行。

所以,在这篇文章中,直接整理比较全的Ubuntu/Debian/CentOS系统,安装最新版本Node.js的教程,目前最新的版本是10.0,但是一般我们也不要太追求最新,我们可以安装8.0或者9.0差不多。

第一、Ubuntu

curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
apt-get install -y nodejs

第二、Debian

curl -sL https://deb.nodesource.com/setup_9.x | bash -
apt-get install -y nodejs

第三、CentOS

curl -sL https://rpm.nodesource.com/setup_9.x | bash -
yum install nodejs -y

安装过程都是差不多的。

未分类

看到如图,然后会指示我们下面执行哪个命令。

未分类

我们可以看到最新版本Node.JS和npm。

Centos实现端口转发:Rinetd部署笔记

前言

虽然Linux本身自带的iptables可以实现端口转发功能,但其配置相对复杂。因此本文介绍另一个端口转发工具Rinetd,其安装和配置都更为简单。

Rinetd部署环境

本文是基于Centos7系统部署Rinetd端口转发工具。

Rinetd安装

到官网下载最新版,得到安装包rinetd.tar.gz :

官网地址:https://boutell.com/rinetd/

上传到Linux,本文上传位置为:

/usr/local/

解压安装包:

tar -zxvf rinetd.tar.gz

由于Rinetd需要编译安装,先安装gcc编译环境:

yum install gcc

进入Rinetd安装目录:

cd /usr/local/rinetd

检查安装配置文件:

vi Makefile

注意配置文件中涉及到两处安装路径,一般情况下保持默认值即可:

CFLAGS=-DLINUX -g

rinetd: rinetd.o match.o
        gcc rinetd.o match.o -o rinetd

install: rinetd
        install -m 700 rinetd /usr/sbin
        install -m 644 rinetd.8 /usr/man/man8

但是若 /usr/man/man8 目录不存在,需要先手建:

mkdir -p /usr/man/man8

编译并安装:

make && make install

至此Rinetd安装完成。

Rinetd配置

配置端口转发规则(该文件可能不存在,直接创建即可):

vi /etc/rinetd.conf

该文件每行一个转发规则,配置格式为:

[source_address] [source_port] [destination_address] [destination_port]

即:

[本机IP(若非多网卡直接设为0.0.0.0)] [转发端口] [服务IP] [服务端口]

如:

0.0.0.0 9527 192.168.64.22 9527

Rinetd使用

Rinetd的启动需要指定规则配置文件,而停止需要杀掉进程:

启动:rinetd -c /etc/rinetd.conf
停止:killall rinetd

查看端口转发状态:

netstat -tanulp|grep rinetd

资源下载

https://download.csdn.net/download/lyy289065406/10551468

CentOS 7安装MariaDB 10详解以及相关配置

第一步:添加 MariaDB yum 仓库

首先在CentOS操作系统中/etc/yum.repos.d/目录下添加 MariaDB 的YUM配置文件MariaDB.repo文件。

vim /etc/yum.repos.d/MariaDB.repo

在该文件中添加以下内容保存:

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.2/centos7-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

第二步:安装 MariaDB

通过yum命令轻松安装 MariaDB。

yum install MariaDB-server MariaDB-client -y

MariaDB 安装完毕后,立即启动数据库服务守护进程。

systemctl start mariadb

设置 MariaDB 在操作系统重启后自动启动服务。

systemctl enable mariadb

查看 MariaDB 服务当前状态。

systemctl status mariadb

第三步:对 MariaDB 进行安全配置

通过以下命令进行安全配置,根据实际情况用Y/N回复以下问题:设置 MariaDB 的 root 账户密码,删除匿名用户,禁用 root 远程登录,删除测试数据库,重新加载权限表。

mysql_secure_installation

本人全都是选择了Y,然后按回车。

在配置完数据库的安全配置后,可以通过以下命令查看版本,确认 MariaDB已安装成功。

mysql –version

可以通过 MariaDB 命令行登录,然后对数据库进行sql查询操作。

mysql -u root -p

第四步:为 MariaDB 配置远程访问权限

在第三步中如果禁用 root 远程登录选择 Y 的话就不能在别的电脑通过navicat等工具连接到数据库,这时就需要给对应的 MariaDB 账户分配权限,允许使用该账户远程连接到MariaDB。可以输入以下命令查看账号信息:

select User, host from mysql.user;

root账户中的host项是localhost表示该账号只能进行本地登录,我们需要修改权限,输入命令:

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;        

修改权限。%表示针对所有IP,password表示将用这个密码登录root用户,如果想只让某个IP段的主机连接,可以修改为:

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.71.%’ IDENTIFIED BY ‘my-new-password’ WITH GRANT OPTION;

最后别忘了:

FLUSH PRIVILEGES;

保存更改后,再看看用户账号信息:

这个时候发现相比之前多了一项,它的host项是%,这个时候说明配置成功了,我们可以用该账号进行远程访问了。

第五步:CentOS 7 开放防火墙端口

在第四步后如果还是不能远程连上数据库的话应该就是3306端口被防火墙拦截了,这时我们就需要关闭防火墙或者开放防火墙端口。

关闭防火墙:

systemctl stop firewalld.service            #停止firewall

systemctl disable firewalld.service        #禁止firewall开机启动

开放防火墙端口,开启后要重启防火墙:

firewall-cmd –zone=public –add-port=3306/tcp –permanent

firewall-cmd –reload

第六步:设置数据库字母大小写不敏感

vim /etc/my.cnf.d/server.cnf

在[mysqld]下加上】

lower_case_table_names=1

默认是等于0的,即大小写敏感。改成1就OK了。如果之前已经建了数据库要把之前建立的数据库删除,重建才生效。

第七步:设置MariaDB数据库默认编码

MariaDB的默认编码是latin1,插入中文会乱码,因此需要将编码改为utf8。

1.登录,使用以下命令查看当前使用的字符集,应该有好几个不是utf8格式。

SHOW VARIABLES LIKE ‘character%’;

2.修改的配置文件

vim /etc/my.cnf.d/client.cnf

在[client]字段里加入

default-character-set=utf8
vim /etc/my.cnf.d/server.cnf

在[mysqld]字段里加入

character-set-server=utf83

重启 MariaDB 配置生效。

systemctl restart mariadb

CentOS 7 直接安装 gcc 7

在一台没有安装过低版本gcc的系统里,如何安装gcc 7 ?以下是详细步骤。

使用开发工具集安装:

sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
which gcc
gcc --version

这种方法同样适用于安装gcc6,只需要将上面命令中7改成6即可。详情请参考: https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/

CentOS安装tshark抓包工具

准备在服务器上用tshark抓包,分析一下数据。直接yum install tshark却发现没有这个包。网上搜索一下,各种奇葩安装方式,又是安装apt?又是安装各种环境?我相信既然CentOS已经有了yum这么好的包管理工具,那么一定有更简单的方式。
最后只好在Google上直接用我这蹩脚的英文搜索一下。果然,一句how to install tshark on centos顺利解决了我的问题。
原来一直是自己对yum这个命令了解太少了,平时只会yum install,yum update :first_quarter_moon_with_face: 。那么到底故事如何,客官且听我细细道来。
当我试图直接安装时:

$ yum install tshark
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
没有可用软件包 tshark。
错误:无须任何处理

那么,该怎么办呢? 原来yum提供了搜索功能。

$ yum whatprovides *tshark*
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
base/7/x86_64/filelists_db                                                    | 6.9 MB  00:00:00
epel/x86_64/filelists                                                         |  10 MB  00:00:00
extras/7/x86_64/filelists_db                                                  | 524 kB  00:00:00
updates/7/x86_64/filelists_db                                                 | 2.1 MB  00:00:00
1:bash-completion-extras-2.1-11.el7.noarch : Additional programmable completions for Bash
源    :epel
匹配来源:
文件名    :/usr/share/bash-completion/completions/tshark

wireshark-1.10.14-14.el7.i686 : Network traffic analyzer
源    :base
匹配来源:
文件名    :/usr/sbin/tshark
文件名    :/usr/share/wireshark/tshark.html
文件名    :/usr/share/man/man1/tshark.1.gz

wireshark-1.10.14-14.el7.x86_64 : Network traffic analyzer
源    :base
匹配来源:
文件名    :/usr/sbin/tshark
文件名    :/usr/share/wireshark/tshark.html
文件名    :/usr/share/man/man1/tshark.1.gz

我们可以看到wireshark包已经包含了tshark包。

接下来就是我们熟悉的步骤了==。

$ yum install wireshark
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 wireshark.x86_64.0.1.10.14-14.el7 将被 安装
--> 正在处理依赖关系 libsmi.so.2()(64bit),它被软件包 wireshark-1.10.14-14.el7.x86_64 需要
--> 正在处理依赖关系 libcares.so.2()(64bit),它被软件包 wireshark-1.10.14-14.el7.x86_64 需要
--> 正在检查事务
---> 软件包 c-ares.x86_64.0.1.10.0-3.el7 将被 安装
---> 软件包 libsmi.x86_64.0.0.4.8-13.el7 将被 安装
--> 解决依赖关系完成

...

已安装:
  wireshark.x86_64 0:1.10.14-14.el7

作为依赖被安装:
    c-ares.x86_64 0:1.10.0-3.el7                                                                        libsmi.x86_64 0:0.4.8-13.el7

完毕!

最后我们验证一下:

 $ tshark -v
TShark 1.10.14 (Git Rev Unknown from unknown)

Copyright 1998-2015 Gerald Combs <[email protected]> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiled (64-bit) with GLib 2.50.3, with libpcap, with libz 1.2.7, with POSIX
capabilities (Linux), without libnl, with SMI 0.4.8, with c-ares 1.10.0, with
Lua 5.1, without Python, with GnuTLS 3.3.26, with Gcrypt 1.5.3, with MIT
Kerberos, without GeoIP.

Running on Linux 3.10.0-693.11.1.el7.x86_64, with locale zh_CN.UTF-8, with
libpcap version 1.5.3, with libz 1.2.7.
Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz

Built using gcc 4.8.5 20150623 (Red Hat 4.8.5-16).

写这边文章并不只是只是为了说明tshark怎么在centos怎么安装,更多的是有时候我们需要扩展自己的知识面,避免重复造轮子。