配置服务器的登录

一般不要把root用户给其他人使用,而是创建一个普通用户账号,例如我现在创建一个用户名叫做“laowang”的账号,并且配置它的登录密码。
在这里插入图片描述

为了服务器的安全性,root用户登录配置成秘钥登录
在这里插入图片描述

安装Docker

我的是阿里云服务器,操作系统为centos7
1.添加yum源

#EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.使用很简单:1. 首先需要安装一个叫”epel-release”的软件包,这个软件包会自动配置yum的软件仓库。当然你也可以不安装这个包,自己配置软件仓库也是一样的。
# yum install epel-release –y
#作用:清除YUM缓存。yum 会把下载的软件包和header存储在cache中,而不自动删除。如果觉得占用磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一全部清除。
# yum clean all
#yum list是列出所有可安装的软件包列表,包含已安装和未安装的
# yum list

2.安装并运行Docker

# yum install docker-io –y
# systemctl start docker

3.检查安装结果,出现下图结果证明安装成功

# docker info

在这里插入图片描述

查看docker版本
docker version
docker info
启动docker
sudo service docker start
设置随系统启动
sudo chkconfig docker on

安装Docker Compose(当然,这个不是必须的,但是有它会用的更爽)

查看我另外一篇文章

创建部署项目需要的容器

1.新建用于存放项目的目录
在这里插入图片描述

2.在新建的项目文件夹内添加以下以下两个文件,这两个文件不是拷贝过去就能用的,需要改一些参数,具体改哪些参数,以及这两个文件的具体内容参考我另外一篇文章https://blog.csdn.net/aimashi620/article/details/89002410
在这里插入图片描述
这个时候如果直接执行docker-compose build 和docker-compose up -d 会报如下错误,这是因为网络环境还没配置好
在这里插入图片描述
打开docker-compose.yml文件我们可以看到了使用名为master的网络,而我们执行docker network ls可以发现,我们并没有叫做master这个网络环境
在这里插入图片描述
这个时候我们就要创建名为master的网络,当然这个名字不是固定的。创建网络的时候可以指定很多参数,具体参数参照官方文档https://docs.docker.com/engine/reference/commandline/network_create/
在这里插入图片描述

这个时候再执行docker-compose up -d不会报错了,并且执行docker-compose logs命令也能看到项目启动成功。然后在宿主机通过curl命令进行访问接口,访问成功,到这一步可以说明项目已经部署成功了,但是端口映射,nginx,数据库等等其他服务,下面继续
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部署Mysql

1.在服务器上新建一个用于存放mysql服务的目录
在这里插入图片描述
2.把一下两个文件拷到该目录下,并在目录中新建一个init.sql文件
在这里插入图片描述
Dockerfile

FROM mysql:5.7

ADD ./init.sql /docker-entrypoint-initdb.d/

RUN chmod a+x $AUTO_RUN_DIR/$INSTALL_DB_SQL

docker-compose.yml

version: '2'

networks:
  default:
    external:
      name: master

services:
   mysql_master:
      image: mysql_master
      container_name: mysql_master
      restart: always
      build: .
      ports:
       - 3306
      volumes:
       - ./data:/var/lib/mysql
       - ./conf:/etc/mysql/conf.d
       - /home/dump:/home/dump
      environment:
       - MYSQL_ALLOW_EMPTY_PASSWORD=yes
       - MYSQL_USER=dba
       - MYSQL_PASSWORD=123
       - TZ=Asia/Shanghai
       - LANG=C.UTF-8
       

3.在服务器上进入到该目录,执行docker-compose build命令
在这里插入图片描述
如果报以下错误:Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
在这里插入图片描述
这是因为官方文档中描述的方法(如下),安装时curl下载下来的文件是不完整的(可以把你从浏览器上下载下拉的docker-compose-Linux-x86_64文件的大小与你curl下载下拉的文件的大小做对比,如下图),而且没有给出任何错误信息,这可能是https的问题。

curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

在这里插入图片描述
解决办法:

进入下面的网址下载目前的最新版:

https://github.com/docker/compose/releases/tag/1.14.0-rc2

网页拉到最下面,下载:

docker-compose-Linux-x86_64

然后将文件上传到 /usr/local/bin/ 文件夹下,然后将其重命名为docker-compose,修改此文件的权限,增加可执行:chmod +x /usr/local/bin/docker-compose

然后再运行 

[root@fd240 bin]# docker-compose version
docker-compose version 1.14.0-rc2, build 24dae73
docker-py version: 2.3.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016

可以看到已经没有问题了(如下图)。

在这里插入图片描述

4.启动mysql
在这里插入图片描述
5.进入mysql,账号密码在上面的docker-compose.yml中可以找到,我这里使用root账号登录,密码为空,进去创建一个数据库之后就导入数据。
docker exec -it 容器id bash
在这里插入图片描述

SELECT DISTINCT CONCAT('User: ''',USER,'''@''',HOST,''';') AS QUERY FROM mysql.user;

在这里插入图片描述
上图可以发现有两个root用户,那么如何配置root用户可以远程连接呢(根据root的密码进行区分两个root)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password123' WITH GRANT OPTION;
flush privileges;

部署Redis

在服务器上新建一个用于部署redis的文件夹
在这里插入图片描述
在此文件夹下添加一下三个文件
redis.conf

bind 0.0.0.0
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300

################################# GENERAL #####################################
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 2

################################ SNAPSHOTTING  ################################
ave 1 1
#save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./

################################# REPLICATION #################################
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100

################################## SECURITY ###################################
requirepass redis

################################### LIMITS ####################################
maxclients 10000

############################## APPEND ONLY MODE ###############################
appendonly yes
appendfilename "appendonly.aof"
# appendfsync always
appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes

################################ LUA SCRIPTING  ###############################
lua-time-limit 5000

################################ REDIS CLUSTER  ###############################
cluster-enabled no

################################## SLOW LOG ###################################
slowlog-log-slower-than 10000
slowlog-max-len 128

################################ LATENCY MONITOR ##############################
latency-monitor-threshold 0

############################# EVENT NOTIFICATION ##############################
notify-keyspace-events ""

############################### ADVANCED CONFIG ###############################
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

Dockerfile

#基础镜像
FROM redis

#将自定义conf文件拷入
COPY ./redis.conf  /etc/redis/redis.conf

#修复时区
#RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

# Redis客户端连接端口
EXPOSE 6379

#使用自定义conf启动
CMD [ "redis-server", "/etc/redis/redis.conf" ]

docker-compose.yml

version: '2'

services:
  redis:
    image: redis
    container_name: redis
    restart: always
    ports:
      - 6379:6379
    environment:
      - appendonly=yes # 打开redis密码设置
      - requirepass=123456 # 设置redis密码
    volumes:
      - ./redis.conf:/etc/redis/redis.conf
   # command: redis-server /etc/redis/redis.conf

networks:
   default:
     external:
       name: master

在服务器进入到当前目录,执行docker-compose build命令和docker-compose up -d命令
在这里插入图片描述
检查redis是否启动成功
在这里插入图片描述

部署Nginx

1.在服务器上新建一个目录用于部署nginx
在这里插入图片描述
2.把以下三个文件拷贝到该目录下,并在该目录下新建一个cert文件夹
在这里插入图片描述
nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    keepalive_timeout  400;
    client_header_timeout 10m;
    client_body_timeout 10m;
    client_max_body_size 512m;
    client_header_buffer_size 16k;
    large_client_header_buffers 4 16k; 

    proxy_connect_timeout 300;
    proxy_read_timeout 300;
    proxy_send_timeout 300;
    proxy_buffer_size 64k;
    proxy_buffers   4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;


    sendfile        on;
    #tcp_nopush     on;


    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

Dockerfile

FROM nginx

RUN mkdir -p /var/www

COPY ./cert/ /etc/nginx/cert/

EXPOSE 80 443

CMD ["nginx","-g","daemon off;"]

docker-compose.yml

version: '2'

networks:
  default:
    external:
      name: master

services:
  nginx:
    image: nginx
    container_name: nginx
    restart: always
    build: .
    ports:
     - "80:80"
     - "443:443"
    volumes:
     - ./conf:/etc/nginx/conf.d
     - ./nginx.conf:/etc/nginx/nginx.conf:ro 
     - ./web:/var/www
    environment:
      TZ: Asia/Shanghai

3.从服务器进入到该目录,执行docker-compose build命令和docker-compose up -d命令
在这里插入图片描述

nginx启动虽然没有报错,但是我们会发现nginx访问不了,我们可以进入到nginx容器,执行nginx -t命令检测一下我们的配置文件,会报以下错误
在这里插入图片描述
这里是一个坑,因为我是在window下使用notpad++编辑我这个quality_training.conf文件的,保存的时候自动使用了一种错误的编码格式,其实我们应该使用“无BOM格式编码”
在这里插入图片描述
然后我改为无BOM格式编码之后再执行一次nginx -t命令,报以下错误,这是因为我们配置了443端口的server,这是https对于的server,配置这个server是需要配置ssl证书的,要不你就配置证书(可以参考我的另外一篇文章https://blog.csdn.net/aimashi620/article/details/83056927),要不你就把这个server删掉。
在这里插入图片描述
在我配置证书的时候还报了“找不到证书”这个错误,这个时候可以重启容器再试一次就成功了(如果容器一直在重启中,执行docker rm -f 容器id,把容器删除掉再重新docker-compose build和docker-compose up -d)
在这里插入图片描述

域名配置

1.登录阿里云控制台,进入域名管理控制台
在这里插入图片描述
2.点击解析
在这里插入图片描述
3.添加一条记录,把域名解析到我们新买的服务器上在这里插入图片描述
在这里插入图片描述

配置SSL证书

参考我的另外一篇文章https://blog.csdn.net/aimashi620/article/details/83056927

服务链接Mysql

直接在服务器上用账号密码能够登录mysql,服务的mysql配置也没问题,但是访问就是报错。这里就需要注意一个问题了,你在服务器上使用mysql -u root -p 输入的这个密码虽然是可以正常的登录数据库,但是你在项目里配置的jdbc连接的密码可不一定是这一个,项目里配置的那个叫做mysql的远程连接密码,可以同过set password for root@’%’=password(’ 密码 ');命令进行设置。

在这里插入图片描述
然后把项目里的jdbc密码改成上面用set password for root@’%’=password(’ 密码 ');命令设置的密码,然后重新部署一次,访问成功
在这里插入图片描述

域名备案

如果域名还没备案是无法进行访问的。查看域名是否已经备案可以通过此连接进行查询http://icp.chinaz.com/gdsxzlg.org.cn

在这里插入图片描述

微信小程序想要访问外部链接的配置流程

https://mp.weixin.qq.com/wxopen/devprofile?action=get_profile&token=1049164222&lang=zh_CN
在这里插入图片描述
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐