微服务部署文档

Posted by 默会 on 11-13,2020

运行环境搭建

CentOS Linux release 7.8.2003 (Core) 、JDK1.8.0_181、MySQL 5.7、nginx 1.18.0、docker 19.03.13、docker-compose 1.25.0

CentOS 7 配置阿里镜像源

阿里镜像官方地址http://mirrors.aliyun.com/

1、点击官方提供的相应系统的帮助 :
_1
2、查看不同版本的系统操作:
_2

一、安装wget

yum install -y wget

二、下载CentOS 7的repo文件

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

三、更新镜像源

清除缓存:yum clean all
生成缓存:yum makecache

四、更改配置文件(很重要)

1、备份CentOS 7系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repo命令:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2、找到yum源的配置路径

cd /etc/yum.repos.d

3、(可以省略该步骤)查看该目录下的所有文件目录:ls
_3

4、打开CentOS-Base.repo文件:

vim CentOS-Base.repo

或者

vi CentOS-Base.repo

5、将文件中的所有http开头的地址更改为https(下图中只是列出部分内容,并不完善):
_4

五、更新yum:

yum update

Linux CentOS 7 安装 JAVA(jdk-8u181-linux-x64)

一、下载JDK

官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

img

将该页面拉至最下方,点击图中Java Archiev栏的download按钮。

img

例如本文要下载linux 64位 JDK1.8版本的,则选择 jdk-8u181-linux-x64.tar.gz,此处按照自己的所需进行选择版本

img

img

登录oracle后下载到本地,然后传到linux服务器上。

也可以用wget命令下载linux最新的版本:

wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie;" 此处加上官网的下载链接

注:当你使用最新的jdk版本时,是不需要登录Oracle就可以直接下载的,那么这时你可以直接拷贝这个不用登录就可以获取到的链接,然后将这个链接替换掉上面命令最后的那条链接(红字部分)!!!!! 然后执行命令即可下载!!!!

二、安装JDK

在安装之前,需要查看Linux系统本身是不是自带了jdk,如果自带jdk,卸载之后再安装,查看是否自带jdk命令如下

echo $JAVA_HOME

新建一个jdk的安装路径,本文是在usr/local目录下新建java目录

mkdir /usr/local/java

把下载的 jdk-8u181-linux-x64.tar.gz包拷贝到新建的java目录下

进入到java目录,解压刚才拷贝的安装包。

cd /usr/local/java
tar xvf jdk-8u181-linux-x64.tar.gz

解压后对jdk文件进行授权

chmod +x /usr/local/java/jdk1.8.0_181/bin/java
chmod +x /usr/local/java/jdk1.8.0_181/bin/javac
chmod +x /usr/local/java/jdk1.8.0_181/jre/bin/java

使用的过程中如果还有什么提示权限不足,则根据实际情况再进行授权即可

三、配置java环境变量

vi /etc/profile

在文件末尾添加:

JAVA_HOME=/usr/local/java/jdk1.8.0_181



JRE_HOME=/usr/local/java/jdk1.8.0_181/jre



CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib



PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin



export JAVA_HOME JRE_HOME CLASS_PATH PATH

使配置生效

source /etc/profile

测试是否安装成功

java -version

CentOS7.4安装配置mysql5.7 TAR免安装版

一、CentOS7.4系统自带mariadb

# 查看系统自带的Mariadb
[[email protected] ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
# 卸载系统自带的Mariadb
[[email protected] ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
# 删除etc目录下的my.cnf
[[email protected] ~]# rm /etc/my.cnf

二、检查mysql是否存在

# 检查mysql是否存在
[[email protected] ~]# rpm -qa | grep mysql
[[email protected]28l7rgZ ~]#

三、查看用户和组是否存在

1)检查mysql组合用户是否存在

# 检查mysql组和用户是否存在,如无则创建
[[email protected] ~]# cat /etc/group | grep mysql
[[email protected] ~]# cat /etc/passwd | grep mysql
# 查询全部用户(只是做记录,没必要执行)
[[email protected] ~]# cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F ":" '{print $1 "|" $3 "1" $4}' | more
root|010
sync|510
mysql|99711001

2)若不存在,则创建mysql组和用户

# 创建mysql用户组
[[email protected] ~]# groupadd mysql
# 创建一个用户名为mysql的用户,并加入mysql用户组
[[email protected] ~]# useradd -g mysql mysql
# 制定password 为111111
[[email protected] ~]# passwd mysql
Changing password for user mysql.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.

四、下载mysql的tar包

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

img

img

五、上传第四步下载的mysql TAR包到

# 进入/usr/local/src文件夹
[[email protected] ~]# cd /usr/local/src/
# 上传mysql TAR包
[[email protected] src]# rz
# 解压tar文件
[[email protected] src]# tar xvf mysql-5.7.22-el7-x86_64.tar
# 解压mysql-5.7.22-el7-x86_64.tar.gz
[[email protected] src]# tar -zxvf mysql-5.7.22-el7-x86_64.tar.gz
# 解压后的文件移动到/usr/local文件夹
[[email protected] src]# mv mysql-5.7.22-el7-x86_64 /usr/local
# 进入/usr/local下,修改为mysql
[[email protected] src]# cd /usr/local
[[email protected] local]# mv mysql-5.7.22-el7-x86_64 mysql

六、更改所属的组和用户

# 更改所属的组和用户
[[email protected] local]# chown -R mysql mysql/
[[email protected] local]# chgrp -R mysql mysql/
[[email protected] local]# cd mysql/

[[email protected] mysql]# mkdir data

[[email protected] mysql]# chown -R mysql:mysql data

七、在/etc下创建my.cnf文件

# 进入/etc文件夹下
[[email protected] mysql]# cd /etc
# 创建my.cnf文件
[[email protected] etc]# touch my.cnf
# 编辑my.cnf
[[email protected] etc]# vim my.cnf

1)my.cnf添加如下内容:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4

[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=2000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=2048M

2)查看my.cnf内容

# 查看my.cnf文件
[[email protected] mysql]# cat /etc/my.cnf

八、进入mysql文件夹,并安装mysql

# 进入mysql
[[email protected] etc]# cd /usr/local/mysql/
# 安装mysql
[[email protected] mysql]# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2018-07-04 15:46:02 [WARNING] 5mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2018-07-04 15:46:05 [WARNING] The bootstrap log isn't empty:
2018-07-04 15:46:05 [WARNING] 2018-07-04T15:46:02.728710Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
2018-07-01T15:46:02.729161Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2018-07-04 T15:46:02.729167Z 0 [Warning] Changed limits: table_open_cache: 407 (requested 2000)
[[email protected] mysql]# cp ./support-files/mysql.server /etc/init.d/mysqld
[[email protected] mysql]# chown 777 /etc/my.cnf
[[email protected] mysql]# chmod +x /etc/init.d/mysqld

九、启动mysql

# 启动mysql
[[email protected] mysql]# /etc/init.d/mysqld restart
MySQL manager or server PID file could not be found!       [FAILED]

解决:

# 1、查看进程
[[email protected] mysql]# ps aux|grep mysql
root     10031  0.0  0.1 113264  1616 pts/0    S    14:36   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/iZ2ze3hm3gyjyjz628l7rgZ.pid
mysql    10220  0.0 19.1 1140876 195072 pts/0  Sl   14:36   0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=iZ2ze3hm3gyjyjz628l7rgZ.err --pid-file=/usr/local/mysql/data/iZ2ze3hm3gyjyjz628l7rgZ.pid --port=3306
root     10421  0.0  0.0 112660   968 pts/0    R+   15:51   0:00 grep --color=auto mysql
# 2、杀死进程
[[email protected] mysql]# kill -9 10031
[[email protected] mysql]# kill -9 10220
# 3、重启mysql
[[email protected] mysql]# /etc/init.d/mysqld restart
Shutting down MySQL..
Starting MySQL.

十、设置开机启动

#设置开机启动
[[email protected] mysql]# chkconfig --level 35 mysqld on
[[email protected] mysql]# chkconfig --list mysqld

[[email protected] mysql]# chmod +x /etc/rc.d/init.d/mysqld
[[email protected] mysql]# chkconfig --add mysqld
[[email protected] mysql]# chkconfig --list mysqld
[[email protected] mysql]# service mysqld status
 SUCCESS! MySQL running (4475)

十一、修改配置文件

# 进入/etc/profile文件夹
[[email protected] mysql]# vim /etc/profile

1)修改/etc/profile,在最后添加如下内容

# 修改/etc/profile文件
#set mysql environment
export PATH=$PATH:/usr/local/mysql/bin
# 使文件生效
[[email protected] mysql]# source /etc/profile

十二、获得mysql初始密码

# 1、获得mysql初始密码
[[email protected] bin]# cat /root/.mysql_secret
# Password set for user '[email protected]' at 2017-04-17 17:40:02
_pB*3VZl5T<6
# 2、修改密码
[[email protected] bin]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 53
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set PASSWORD = PASSWORD('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

十三、添加远程访问权限

# 添加远程访问权限
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set host='%' where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> select host,user from user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+
3 rows in set (0.00 sec)

十四、重启mysql生效

# 重启mysql
[[email protected] bin]# /etc/init.d/mysqld restart
Shutting down MySQL..
Starting MySQL.

备注:

由于安装在/usr/local下面的mysql,因此可以在热河文件夹启动mysql

若安装在别的文件夹,请执行以下命令:

# 为了在任何目录下可以登录mysql
ln -s /你的mysql路径/mysql  /usr/local/mysql

阿里云CentOS环境之docker安装,启动,加速器,docker-compose(十四)

介绍

Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。
社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。

Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。
总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

下面一些概念有助于理解docker:

  1. Docker 镜像(Images):Docker镜像是用于创建 Docker 容器的模板。
  2. Docker容器(Container):容器是独立运行的一个或一组应用。
  3. Docker客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。
  4. Docker主机(Host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
  5. Docker仓库(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
  6. Docker Hub(https://hub.docker.com): 提供了庞大的镜像集合供使用。
  7. Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

前提条件

  1. 64位版本的CentOS 7。命令lsb_release -a
  2. CentOS系统的内核版本高于 3.10。命令uname -r

一、安装docker

1.卸载(可选)

Docker的旧版本被称为docker或docker-engine,若以前安装过,卸载命令如下:

yum remove docker docker-common container-selinux docker-selinux docker-engine

有些文章在这里使用了yum upgrade,命令的意思是升级所有包同时也升级软件和系统内核。我建议最好不执行命令,可能千万系统崩溃,因为系统版本从低级升级到高级,有些软件可能会出现问题。

2.安装yum-utils device-mapper-persistent-data lvm2软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

3.配置稳定版本库

大多数用户设置了Docker的存储库并从中安装,以方便安装和升级任务。 这是推荐的方法

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.查看所有仓库中所有docker版本

查看所有社区版的docker-ce版本。

yum list docker-ce --showduplicates | sort -r

这里写图片描述
1.repo中默认只开启stable仓库,所以这里展示的都是稳定版本的docker。
2.使用sort -r命令对结果进行排序,版本号由最高到最低,并被截断。
3.第一列是软件名,第二列是版本字符串, 第三列是存储库名称,安装指定版本使用包名-第二列是版本字符串

5.安装docker

指定版本安装,如下:

yum install docker-ce-18.03.1.ce-1.el7.centos

最新版本

yum install docker-ce

由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03

6.启动docker

启动命令

systemctl start docker

查看版本

docker -version

7.卸载

查看docker已经安装版本

yum list installed | grep docker

卸载

 yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

二、安装docker-machine

命令

curl -L https://github.com/docker/machine/releases/download/v0.10.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

测试

docker-machine -v

官方配置

docker启动/重启/停止等命令

添加docker开机启动:systemctl enable docker
启动命令:systemctl start docker
重启命令:systemctl restart docker
停止命令:systemctl stop docker
查看版本:docker version
卸载:yum remove docker-ce
查看窗口端口映射:docker ps
查看所以容器(包括被关闭的):docker ps --all
其它docker命令参数这里


三、配置加速器

由于访问官方镜像地址很慢,不得不配置国内的镜像,我这里使用阿里云的加速器,毕竟,我ECS,mysql,redis都使用阿里云的,那我加速器也使用它的,个人选择。
登陆阿里云 - 开发者平台,和阿里云控制台帐号是通用帐号,登陆成功,左侧中间选择镜像加速器标签,结果如下:

这里写图片描述

按图式方法配置CentOS系统上Docker加速器:

vi /etc/docker/daemon.json

修改文件如下

{
  "registry-mirrors": ["https://l8ue6x6v.mirror.aliyuncs.com"]
}

这里有几个其它的加速器,只要替换上面的地址即可
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc的镜像:https://docker.mirrors.ustc.edu.cn
daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

重新加载配置,重启docker

systemctl daemon-reload
systemctl restart docker

测试加速器效果
摘取镜像

docker pull busybox

成功打印出“hello world”说明阿里云加速器配置成功。

docker run busybox echo “hello world”

四、安装dockerCompose

docker-compose 是用来做docker 的多容器控制

方案一(建议)
官方安装步骤

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
 chmod +x /usr/local/bin/docker-compose
12

方案二

  1. 首先检查linux有没有安装python-pip包,终端执行 pip -V
  2. 没有python-pip包就执行命令 yum -y install epel-release,安装成功后再次执行yum -y install python-pip
  3. 对安装好的pip进行升级 pip install --upgrade pip
  4. 执行安装docer-compose命令pip install docker-compose
  5. 验证是否安装成功docker-compose -version

CentOS 7 yum 安装 Nginx

一、添加Nginx到YUM源

添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令:

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

二、安装Nginx

在你的CentOS 7 服务器中使用yum命令从Nginx源服务器中获取来安装Nginx:

sudo yum install -y nginx

Nginx将完成安装在你的CentOS 7 服务器中。

三、启动Nginx

刚安装的Nginx不会自行启动。运行Nginx:

sudo systemctl start nginx.service

如果一切进展顺利的话,现在你可以通过你的域名或IP来访问你的Web页面来预览一下Nginx的默认页面;

nginx_default

如果看到这个页面,那么说明你的CentOS 7 中 web服务器已经正确安装。

四、CentOS 7 开机启动Nginx

sudo systemctl enable nginx.service

更多systemctl命令可查看《systemctl命令用法

五、Nginx默认配置信息

网站文件存放默认目录

/usr/share/nginx/html

网站默认站点配置

/etc/nginx/conf.d/default.conf

自定义Nginx站点配置文件存放目录

/etc/nginx/conf.d/

Nginx全局配置

/etc/nginx/nginx.conf

Nginx启动

nginx -c nginx.conf

在这里你可以改变设置用户运行Nginx守护程序进程一样,和工作进程的数量得到了Nginx正在运行,等等。

六、防火墙配置:

Centos升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos 7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口:

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

命令含义:

--zone #作用域

--add-port=80/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数重启后失效

七、重启防火墙

firewall-cmd --reload

注:详细信息可以参考以下资料:

centos-7-open-firewall-port

Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html

八、Linux查看公网IP

您可以运行以下命令来显示你的服务器的公共IP地址:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

九、NGINX PIGX 配置

1、旧版本

location / {

    # ---vue编译路径

  	root /media/dist/;

    # ---解决页面刷新404问题

    try_files $uri $uri/ /index.html;

    # ---设置文件上传大小

    client_max_body_size 200m;

}

 location ^~/api/ {

      proxy_pass http://localhost:9999/;

   }

}

2、新版本

  listen 81;
  server_name localhost;

  root /media/policy/dist/;
  gzip on;
  gzip_static on;     # 需要http_gzip_static_module 模块
  gzip_min_length 1k;
  gzip_comp_level 4;
  gzip_proxied any;
  gzip_types text/plain text/xml text/css;
  gzip_vary on;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";

  location ~* ^/(code|auth|admin|gen|daemon|tx|act|pay|job|monitor|mp) {
      proxy_pass http://127.0.0.1:9999;
       #proxy_set_header Host $http_host;
       proxy_connect_timeout 15s;
       proxy_send_timeout 15s;
       proxy_read_timeout 15s;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

}

Centos7 防火墙开放端口,查看状态,查看开放端口

CentOS7 端口的开放关闭查看都是用防火墙来控制的,具体命令如下:

一、查看防火墙状态:(active (running) 即是开启状态)

[[email protected] bin]# systemctl firewalld status
Unknown operation 'firewalld'.
[[email protected]SS bin]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 四 2019-07-11 09:37:11 CST; 7h ago
     Docs: man:firewalld(1)
 Main PID: 44370 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─44370 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

二、查看已开放端口:(8080和3306 即是已开放端口)

[[email protected] bin]# **firewall-cmd --list-all**
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3 ens4
sources:
services: ssh dhcpv6-client
ports: **8080/tcp 3306/tcp**
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

三、防火墙开放端口:(开放端口后需重载防火墙)

[[email protected] bin]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
[[email protected] bin]#
[[email protected] bin]# firewall-cmd --reload
success
[[email protected] bin]#

​ 命令含义:

​ –zone #作用域

​ –add-port=80/tcp #添加端口,格式为:端口/通讯协议

​ –permanent #永久生效,没有此参数重启后失效

​ firewall-cmd --reload 并不中断用户连接,即不丢失状态信息

firewalld的基本使用

启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
配置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

微服务系统部署注意事项

一、编译器跑起项目

  1. 后台 java 代码打包 clean install -U

    在这里插入图片描述

  2. 前端 vue 代码 运行 run
    在这里插入图片描述

  3. 前端 vue 代码 编译 build
    在这里插入图片描述

二、微服务的docker部署

  1. 编译(jar包变了重新装载一次)

    docker-compose build 
    
  2. 启动 (先build后up)

    docker-compose up 
    
  3. 查看服务

     docker ps  
    
  4. 停掉docker服务

    docker stop
    
  5. 删除docker images中为none的镜像

    docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
    docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
    docker images|grep none|awk '{print $3 }'|xargs docker rmi
    
  6. 重启network和docker服务

    systemctl restart network && systemctl restart docker
    
  7. 查看镜像

    docker images 
    
  8. 清redis 缓存的方法

    docker exec -i -t 732e91b38720 (容器名)redis-cli
    进入redis
    flushall
    

三、Docker 容器镜像删除

  1. 停止所有的container,这样才能够删除其中的images:

    docker stop $(docker ps -a -q)
    

    如果想要删除所有container的话再加一个指令:

    docker rm $(docker ps -a -q)
    
  2. 查看当前有些什么images

    docker images
    
  3. 删除images,通过image的id来指定删除谁

    docker rmi <image id>
    
  4. 想要删除untagged images,也就是那些id为的image的话可以用

    docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
    
  5. 要删除全部image的话

    docker rmi $(docker images -q)
    
  6. 杀死所有正在运行的容器

    docker kill $(docker ps -a -q)
    
  7. 删除所有已经停止的容器

    docker rm $(docker ps -a -q)
    
  8. 删除所有未打 dangling 标签的镜

    docker rmi $(docker images -q -f dangling=true)
    
  9. 删除指定镜像

    docker rm $(docker ps -a | grep "ilanyu/golang-reverseproxy" | awk '{print $1}')      
    docker stop 4826a56cd569b864e5a2
    docker rmi ilanyu/golang-reverseproxy 
    
  10. 强制删除 无法删除的镜像

    docker rmi -f <IMAGE_ID>
    docker rmi -f $(docker images -q)
    

四、错误处理

防火墙重启,要重启docker 切记!!!!!!!!

当你遇到这个报错时,不要着急

在这里插入图片描述
那一定是cup不够了
那就把

里面的关于时间的都删掉
然后再docker-compose。yml里卖配置就行了

volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime

每个用到的模块先都要写
在这里插入图片描述

然后重新build,你会发现,build的真快啊!!!!!!!

docker启动成功,确无法进入docker 报错信息 exec user process caused "permission denied"

排查方法:

  1. docker启动成功无其他报错
  2. docker ps -a 查看容器id
  3. docker logs id 查看具体报错
    standard_init_linux.go :178: exec user process caused "permission denied"

解决方法:关闭selinux

  1. 临时关闭selinux: setenforce 0
  2. 修改配置文件需要重启机器:
    修改/etc/selinux/config 文件
    将SELINUX=enforcing改为SELINUX=disabled

五、docker部署步骤亲测版

  1. idea生产成jar包
  2. 把所有项目全部停止
  3. 添加Maven 命令 clean install -U
  4. 前端代码添加npm 命令为 run build
  5. 在文件中生成dist 文件夹,把里面的文件全部覆盖到服务器里
  6. xshell连服务器
  7. xftp连接服务器
  8. data文件夹下替换前后端项目
  9. 停掉所有容器 docker stop $(docker ps -a -q)
    删除所有已停止的容器 docker rm $(docker ps -a -q)
  10. 命令 docker-compose build
  11. 查看docker 镜像 是否更新 docker images
  12. 命令 docker-compose up
  13. 前端bulid前先删除dist文件
  14. 想要删除untagged images,也就是那些id为的image的话可以用
    docker rmi $(docker images | grep "^" | awk "{print $3}")
  15. 要删除全部image的话
    docker rmi $(docker images -q)
  16. 清redis 缓存的方法
    docker exec -i -t 732e91b38720 (容器名)redis-cli
    进入redis
    flushall