linux系统 Docker 环境搭建 mysql redis nginx ElasticSearch MongoDB

更新系统

yum -y update 

安装 docker

有旧则 卸载旧版本

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

安装必须的软件包

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

配置docker仓库

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum源或者出现配置yum源之后,通常都会使用yum makecache 生成缓存

yum makecache fast

创建目录

mkdir -p /data

安装docker

安装docker

yum -y install docker-ce

设置随系统启动

systemctl enable docker

启动 Docker 后台服务

systemctl start docker
#查询已经安装的Docker包
yum list installed | grep docker
#查看Docker版本
docker version
#测试运行 hello-world
docker run hello-world

安装 JDK_11

安装JDK_11

yum install java-11-openjdk-devel.x86_64

查看JDK版本信息

java -version

安装 screen

yum install screen

安装 mysql

安装 mysql

docker pull mysql

PS:要是想解决 大小写忽略 +8小时时差
在mysql文件夹中的 conf 目录添加 mysql.cnf文件

[mysqld]
server-id=1
skip-host-cache
skip-name-resolve
collation-server = utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
# 大小写忽略
lower_case_table_names=1
default-time-zone='+08:00'
# 8.0 分组问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4

将数据存储到容器内部

docker run -p 3306:3306 --name mysql --restart=always -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql

模板:

docker run -p 3307:3306 --name mysql3307 --restart=always -v /data/mysql3307/conf:/etc/mysql/conf.d -v /data/mysql3307/logs:/logs -v /data/mysql3307/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Quokka -d mysql
docker run -p '对外端口':'对内端口' --name 'docker名称' --restart=always -v /data/mysql3306/conf:/etc/mysql/conf.d -v  /data/mysql3306/logs:/logs -v /data/mysql3306/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='密码' -d mysql

执行Mysql

docker exec -it mysql /bin/bash

进入Mysql

mysql -r  -p
密码

use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;
exit
exit

安装 redis

安装 redis

docker pull redis

不加密码:

docker run -p 6379:6379 --name redis --restart=always -v /data/redis/data:/data  -d redis redis-server --appendonly yes

加密码::

docker run -p 6380:6380 --name redis6380 --restart=always -v /data/redis6380/data:/data  -d redis redis-server --requirepass "密码" --appendonly yes

安装 MongoDB

安装 MongoDB

docker pull mongo:4.0

启动 mongodb:

docker run -p 27017:27017 --name mymongo --restart=always -v /data/mymongo/data:/data/db  -d mongo:4.0

为mongoDB添加管理员用户

docker exec -it 31c8628f1379 mongo admin

db.createUser({ user: 'root', pwd: 'root', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

exit

测试用户是否添加成功

docker exec -it 31c8628f1379  mongo admin

db.auth("root","root");

为mongoDB添加用户

docker exec -it 31c8628f1379  mongo admin

db.createUser({ user: 'Quokka', pwd: '123456', roles: [ { role: "readWrite", db: "app" } ] });

exit

测试用户是否添加成功

docker exec -it 31c8628f1379  mongo admin

db.auth("Quokka","123456");

安装 nginx

安装 nginx

docker pull nginx
mkdir -p /data/nginx/www /data/nginx/logs /data/nginx/conf
touch /data/nginx/conf/nginx.conf
docker run -d -p 80:80 --name nginx --restart=always -v /data/nginx/www:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx nginx

nginx 配置文件
文件存放位置:
1

user  root;
worker_processes  auto;

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;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    
    server {
        listen       80;
        server_name  _;
		rewrite ^(.*)\#(.*)$ $1#$2 redirect;
	
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
}

测试页面能否访问:
2
访问路径方式:
3

安装 ftp

docker run -d -v /home/vsftpd:/home/vsftpd 						-p 20:20   -p 21:21   -p 21100-21110:21100-21110 -e FTP_USER=test    -e FTP_PASS=test    	--name vsftpd fauria/vsftpd


docker run -d -v /data/nginx/www/HotUpdate:/home/vsftpd/fastftp -p 2020:20 -p 2021:21 -p 21100-21110:21100-21110 -e FTP_USER=fastftp -e FTP_PASS=4rfv%TGB 	--name vsftpd fauria/vsftpd


docker run -d -v /data/nginx8081/www/ftp:/home/vsftpd/fastftp 	-p 2020:20 -p 2021:21 -p 21100-21110:21100-21110 -e FTP_USER=fastftp -e FTP_PASS=4rfv%TGB 	--name vsftpd fauria/vsftpd  


docker run -d -p 21:21 -p 4559-4564:4559-4564 -v /home/vsftpd/test:/srv -e FTP_USER=test -e FTP_PASSWORD=test panubo/vsftpd




docker run -d -v /home/ftpusers/test:/home/ftpusers/test  		-p 21:21 -p 30000-30009:30000-30009 	-e "PUBLICHOST=localhost"  stilliard/pure-ftpd:hardened	--name ftpd_server
docker exec -it ftpd_server /bin/bash
pure-pw useradd test -u ftpuser -d /home/ftpusers/test
chown ftpuser:ftpgroup /home/ftpusers/test
pure-pw mkdb

docker run -d --name ftpd_server 								-p 21:21 -p 30000-30009:30000-30009 -e "PUBLICHOST=localhost" -v /home/ftpusers/test:/home/ftpusers/test stilliard/pure-ftpd:hardened
docker exec -it ftpd_server /bin/bash
pure-pw useradd test -u ftpuser -d /home/ftpusers/test
chown ftpuser:ftpgroup /home/ftpusers/test
pure-pw mkdb

安装 ElasticSearch

1.Docker拉取ElasticSearch镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2

2.启动容器

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
或者
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" docker.elastic.co/elasticsearch/elasticsearch:6.3.2

3.配置跨域访问

# 进入容器
docker exec -it es /bin/bash
# 进入配置文档
cd config/
# 修改vi elasticsearch.yml
vi elasticsearch.yml
# 加入以下配置
http.cors.enabled: true
http.cors.allow-origin: "*"

# 重启容器
docker restart es

4.在浏览器输入服务器地址端口9200出现以下json数据
在这里插入图片描述
5.ElasticSearch可视化管理工具elasticsearch-head
拉取镜像

docker pull mobz/elasticsearch-head:5

6.运行容器

docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

7.输入服务器地址9100端口界面如下
在这里插入图片描述

安装 oracle

安装 oracle步骤

linux 执行jar包脚本

startup-all.sh

#!/bin/bash
pid1=`ps -ef|grep live_Gateway.jar|grep -v grep|awk '{print $2}' `
pid2=`ps -ef|grep live_Live.jar|grep -v grep|awk '{print $2}' `
pid3=`ps -ef|grep live_game.jar|grep -v grep|awk '{print $2}' `
pid4=`ps -ef|grep live_Link.jar|grep -v grep|awk '{print $2}' `
pid5=`ps -ef|grep vue-admin.jar|grep -v grep|awk '{print $2}' `
pid6=`ps -ef|grep live_Proxy.jar|grep -v grep|awk '{print $2}' `

#如果不存在返回1,存在返回0     
if [ ! -z  "${pid1}" ]; then
   sudo kill -12 $pid1
fi
if [ ! -z  "${pid2}" ]; then
   sudo kill -12 $pid2
fi
if [ ! -z  "${pid3}" ]; then
   sudo kill -12 $pid3
fi
if [ ! -z  "${pid4}" ]; then
   sudo kill -12 $pid4
fi
if [ ! -z  "${pid5}" ]; then
   sudo kill -12 $pid5
fi
if [ ! -z  "${pid6}" ]; then
   sudo kill -12 $pid6
fi
#sudo kill -12 $pid2
#sudo kill -12 $pid3
#sudo kill -12 $pid4
#sudo kill -12 $pid5
#sudo kill -12 $pid6

echo "关闭所有Java进程"
sleep 3
#cd /data/live/Master
#./startup.sh start
#echo "Master服 启动"
#sleep 2
#cd /data/live/DataBase
#./startup.sh start
#echo "DB服 启动"
sleep 1
cd /data/live/Gateway
./startup.sh start
echo "http服 启动"
sleep 1

startup.sh

#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=live_Gateway.jar

#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
	ps -ef | grep java
  else
    nohup java -Xms502m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar $APP_NAME > /dev/null 2>&1 &
	ps -ef | grep java
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

其它 docker 操作

防火墙

systemctl stop firewalld.service		//	关闭防火墙		
systemctl disable firewalld.service		//	设置开机禁用防火墙
systemctl start firewalld				//	启动防火墙
systemctl enable firewalld.service		//	设置开机启用防火墙
systemctl status firewalld 				//	检查防火墙状态

重启 Docker 后台服务

systemctl restart docker 

查询已经安装的Docker包

yum list installed | grep docker

查看Docker版本

docker version

测试运行 hello-world

docker run hello-world

查看pull下拉的镜像

docker images

查看运行的容器

docker ps

停止容器

docker stop 容器Id

删除容器

docker rm 容器Id

服务器部署操作

1:打包 得到所要项目的 jar包 + conf(服务器ip 端口 数据库)
2:文件放入服务器指定文件夹中(wab jar包 分开放)
3:	screen -S 文件名 	新建窗口 
	screen -r 文件名 	进入窗口 
	screen -ls			查看所有窗口
	screen -d  窗口id	关闭窗口
	
	ctrl + A   	-> d 出来
				-> k 关闭窗口

4	运行java -jar 名字

docker 启动容器参数说明:docker run

 di:表示守护式,
 name:容器名称, 
 -p 映射端口,
 -e 添加一个参数 密码 ,最后一位表示以哪个镜像创建的容器
 -v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值