服务器环境配置

安装 Linux 可视化管理工具(Cockpit)

一、CentOS 8 内置 Cockpit

# 配置 cockpit 服务开机启动 
systemctl enable --now cockpit.socket

# 启动 cockpit 服务
systemctl start cockpit

二、CentOS 7 安装启动

# 安装
yum install cockpit

# 开启服务
firewall-cmd --permanent --zone=public --add-service=cockpit

# 重新加载防护墙
firewall-cmd --reload

三、访问

浏览器打开 192.168.0.106:9090

  1. 查看 Linux 版本 cat /proc/version
  2. 必须关闭本地代理
  3. Mac 使用 Safari 访问,需要下载安装证书
  4. Nginx 配置无效,关闭防火墙即可 systemctl stop firewalld.service

安装 Git

yum install git

安装 Docker

官方教程

安装 Docker可视化工具

官方教程

安装 Nginx

# install
yum install nginx

# start 
sudo systemctl start nginx

# 开机启动
systemctl enable nginx.service

配置之后,外网无法访问,可以尝试关闭防火墙

防火墙配置

# 查看防火墙状态
firewall-cmd --state

# 关闭防火墙,若外网无法访问,可以尝试关闭防火墙
systemctl stop firewalld.service

# 禁止防火墙开机启动
systemctl disable firewalld.service

# 查询端口是否开放成功
firewall-cmd --query-port=8080/tcp

# 移除指定的端口
firewall-cmd --permanent --remove-port = 8081/tcp

安装 jdk

# centos 安装 jdk # 1. 查看支持安装的 jdk 版本
yum search java|grep jdk

# 2. 选择 jdk 版本,并安装
yum install -y java-1.8.0-openjdk

# 3. 检查是否安装成功
java -version

安装 MySql

使用 docker 安装 mysql

# 下载 image
docker pull mysql:8

# 运行
docker run -d \
-v /root/project/mysql:/var/lib/mysql \
-it \
--restart=always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=12345 \
-default-authentication-plugin=mysql_native_password \
-e MYSQL_DATABASE=mydb \
--name mysql8 \
mysql:8

-d:同–detach,以背景模式執行。
-v:同–volume,掛載host目錄到container目錄,也就是host的~/mysql-docker-data會保存container /var/lib/mysql的資料。
-it:同–interactive加–tty,作用為運行container時可登入其bash操作。
–name mysql8,命名container名稱為mysql8。
-p:同–publish。作用為將container的3306 port對映到”主機(host)”的3306 port
-e:同–env,設定環境變數。MYSQL_ROOT_PASSWORD設定MySQL root帳號的登入密碼為12345,MYSQL_DATABASE設定資料庫名稱為mydb。
mysql:8:mysql為image名稱,8為image tag。所以運行的是mysql:8的image。
–default-authentication-plugin=mysql_native_password:把儲存密碼的方式改為MySQL 5的mysql_native_password,因為MySQL 8的儲存方式預設為caching_sha2_password,但一些免費的MySQL client圖形工具如Sequel Pro,Navicat等會無法連線,所以設定此參數。

数据安全

为了安全,一般 3306 端口是不外露的,所以直接访问容器中的 mysql

# 查看 mysql 容器的 ip
docker network inspect bridge

"Containers": {
    "201d93a9fd1b7720ce246f723de94000a38a837a66d9953b2214f984e058f692": 
    {
        "Name": "mysql8",
        "EndpointID": "a057887aa370eacc50887ce110b979f6c768605eec52b598365e6b5c922cffc6",
        "MacAddress": "02:42:ac:11:00:02",
        "IPv4Address": "172.17.0.2/16",
        "IPv6Address": ""
    },
    "f289ebc3b13d4906ab86ac361b95a2d251da1d97dfae03dddd34a5fb018c1e11": 
    {
        "Name": "erp_jingwaidianshang_server",
        "EndpointID": "6ddd32aff22b495c18c9d1db59037da7ea353b47a6b2e7e2e18e24b8ed05b27d",
        "MacAddress": "02:42:ac:11:00:03",
        "IPv4Address": "172.17.0.3/16",
        "IPv6Address": ""
    }
}

# 172.17.0.2 是 mysql 容器的 ip,在其他容器中 ping 172.17.0.2 可以访问

本地调试,安全链接数据库

定时任务

创建用于执行的脚本,使用 Linux 自带 Crontab 定时执行任务

创建执行脚本 auto_demo.sh

#!/bin/bash
ls

设置脚本访问权限

chmod a+x auto_demo.sh 

设置定时任务

crontab -e
* * * * * /root/project/sh/auto_demo.sh

Crontab 基本命令

  • crontab -e 编辑工作表 一行代表一个任务 [分] [时] [日] [月] [周] command
  • crontab -l 列出工作表里的命令
  • crontab -r 删除工作 表
  • 在线检测工具
# 每分钟执行
* * * * * /root/project/sh/auto_demo.sh
# 周一到周五23:59都执行
59 23 * * 1,2,3,4,5 /root/project/sh/auto_demo.sh
59 23 * * 1-5 /root/project/sh/auto_demo.sh
# 每10分钟定时执
0 */10 * * * /root/project/sh/auto_demo.sh

添加日志

* * * * * "pwd" >> /Users/liruwei/crontab.log 2>&1

` » /Users/liruwei/crontab.log 2>&1` 指定输出日志文件,若文件不存在,会生成。

后台守护定时任务 - nohup

Crontab 最少单位为分钟,不能满足日常开发。可以使用 nohup 运行脚本。nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

参数说明

  • Command:要执行的命令。
  • Arg:一些参数,可以指定输出文件。
  • &:让命令在后台执行,终端退出后命令仍旧执行。

运行

file.sh 每1秒执行请求

#!/bin/bash
while [ 1 == 1 ]
do 
    sleep 1
    res=$(curl -s localhost:7600/api/file)
done

运行

# 后台运行 ./file.sh 脚本
$ nohup ./file.sh &

停止运行

列出所有文件运行进程,如 file.sh

$ ps -ef | grep file.sh

# root 3409  1378  0 23:04 pts/3 00:00:00 /bin/bash ./file.sh

结束进程用 kill 指令

kill -9 1378

查看远程端口是否能访问

# mac 
nc -vz -w 2 www.baidu.com 80

# linux
telnet www.baidu.cm 80