新服务器部署完整流程

新服务器部署完整流程配置服务器的登录一般不要把root用户给其他人使用,而是创建一个普通用户账号,例如我现在创建一个用户名叫做“laowang”的账号,并且配置它的登录密码。为了服务器的安全性,root用户登录配置成秘钥登录安装Docker对于CentOS6,可以使用EPEL库安装Docker,命令如下:$sudoyuminstallhttp://mirrors.yun-idc.com/…

大家好,又见面了,我是你们的朋友全栈君。

配置服务器的登录

一般不要把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
在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150363.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • SpringBoot整合Spring Security【超详细教程】

    SpringBoot整合Spring Security【超详细教程】好好学习,天天向上本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航前言SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架。提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。它的核心是一组过滤器链,不同的功能经由不同的过滤器。这篇文章就是想通过一个小案例将SpringSecurity整合到SpringBoot中去。要实现的功能就是在认证服务器上登录,.

  • 服务器中心地址,互联网时间同步服务器地址(国家授时中心服务器)[通俗易懂]

    服务器中心地址,互联网时间同步服务器地址(国家授时中心服务器)[通俗易懂]中新创科技研制开发的DNTS,Windowstime服务用于和Internet同步系统时间。xp自带的时间同步服务器老是会连不上,这里就教大家换成中科院国家授时中心的服务器。中国国家授时中心的时间服务器IP地址及时间同步方法大家都知道win7旗。用来同步电脑的时间的服务器、DNTS。为更好的满足用户的需求。网络授时服务器的域名为ntp。同步就方便多了,然后键入w32tmregister正确的响应为…

  • 【转】document.cookie详解

    【转】document.cookie详解js中cookie详解

  • jquery 判断array中是否包含指定字符串

    jquery 判断array中是否包含指定字符串

  • TCP-三次握手

    TCP-三次握手文章目录三次握手三次握手过程详解三次握手的状态变化面试题:四次挥手三次握手简单示意图:客户端–发送带有SYN标志的数据包–一次握手–服务端服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端客户端–发送带有带有ACK标志的数据包–三次握手–服务端SYN同步序列编号(SynchronizeSequenceNumbers):是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN

  • Java面试之EJB & Spring

    Java面试之EJB & SpringJava面试之EJB & Spring

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号