服务端反代

1
2
3
location /prod-api {
proxy_pass https://api.ngit.co/api;
}

image-20220607162447931

image-20220607163420726

Vite项目打包

1.package.json 中,

“build”: “vue-tsc –noEmit && vite build”

这个是在打包时进行语法检查,减少麻烦的话就只要vite build。

2.vite.config.ts

image-20220608095837958

image-20220608100429364

vbox

1
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 124cc0
1
2
3
4
5
6
外网面板地址: http://[240e:361:b73f:ec00:3479:16af:f523:d]:8888/a494e348
内网面板地址: http://192.168.66.122:8888/a494e348
username: u7qvfwlo
password: 48bbbe23


thinkphp的nginx配置

1
2
3
4
5
6
7
...
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
break;
}
}

==================================================================

这个是群晖的,api.tmp:192.168.66.138

外网面板地址: http://[240e:361:b73f:ec00:3479:16af:f523:c]:8888/707070
内网面板地址: http://192.168.66.138:8888/707070
username: lzh
password: 0a57254a
If you cannot access the panel,
release the following panel port [8888] in the security group

==================================================================

centos7安装docker

首先更新一下

1
yum update

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

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

设置yum源(选择其中一个)选ali的会快些

(yum-config-manager –add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库))

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

可以查看所有仓库中所有docker版本,并选择特定版本安装

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

安装Docker,命令:yum install docker-ce-版本号,我选的是docker-ce-18.03.1.ce,如下

1
yum install docker-ce-18.03.1.ce

配置dockers加速

vi /etc/docker/daemon.json

1
2
3
{
"registry-mirrors": ["https://4hzqp0iy.mirror.aliyuncs.com"]
}

vi

1
2
3
4
5
cat>/etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["https://4hzqp0iy.mirror.aliyuncs.com"]
}
EOF
1
systemctl daemon-reload

启动Docker,然后加入开机启动,如下

1
2
systemctl start docker
systemctl enable docker

拉取nginx,并运行起来

1
2
docker pull nginx
docker run --name nginx-test -p 8080:80 -d nginx

docker pull hou6807628/openwrt

docker network create -d macvlan –subnet=192.168.66.0/24 –gateway=192.168.66.1 -o p
arent=enp0s3 macnet

docker run –restart always –name lede -d –network macnet –privileged hou6807628/openwrt /sbin/init

docker pull redis

简单跑起来

1
docker run -itd --name redis-test -p 6379:6379 redis

docker pull mysql:5.7.36

简单跑起来

1
docker run -d --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.36

不一定是必须的,redis就没有管防火墙的事

firewall-cmd –zone=public –add-port=3306/tcp –permanent

firewall-cmd –reload

进入docker,

1
docker exec -it mysql-test bash
1
2
3
4
mysql -uroot -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

一直都没有配置成功,始终无法用navicat连接。

virtualbox用端口转发的方式,始终没有成功,包括填写了10.0.2.15的ip地址也不行。

后来发现可以给virtualbox虚拟机添加多个网卡,于是就另外添加host-only网卡后,可以用连接了。

附:MySQL5.7 添加用户、删除用户与授权

mysql -uroot -proot

MySQL5.7 mysql.user表没有password字段改 authentication_string;

一. 创建用户:

命令:CREATE USER ‘username‘@’host’ IDENTIFIED BY ‘password’;

例子: CREATE USER ‘dog‘@’localhost’ IDENTIFIED BY ‘123456’;

​ CREATE USER ‘dog2‘@’localhost’ IDENTIFIED BY ‘’;

PS:username - 你将创建的用户名,

host - 指定该用户在哪个主机上可以登陆,此处的”localhost”,是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将”localhost”改为”%”,表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;

password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。

二.授权:

命令:GRANT privileges ON databasename.tablename TO ‘username‘@’host’

PS: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示, 如.*.

例子: GRANT SELECT, INSERT ON mq.* TO ‘dog‘@’localhost’;

三.创建用户同时授权

mysql> grant all privileges on mq.* to test@localhost identified by ‘1234’;
Query OK, 0 rows affected, 1 warning (0.00 sec)

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

PS:必须执行flush privileges;

否则登录时提示:ERROR 1045 (28000): Access denied for user ‘user‘@’localhost’ (using password: YES )

四.设置与更改用户密码

命令:SET PASSWORD FOR ‘username‘@’host’ = PASSWORD(‘newpassword’);

例子: SET PASSWORD FOR ‘dog2‘@’localhost’ = PASSWORD(“dog”);

五.撤销用户权限

命令: REVOKE privilege ON databasename.tablename FROM ‘username‘@’host’;

说明: privilege, databasename, tablename - 同授权部分.

例子: REVOKE SELECT ON mq.* FROM ‘dog2‘@’localhost’;

PS: 假如你在给用户‘dog‘@’localhost’’授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO ‘dog‘@’localhost’, 则在使用REVOKE SELECT ON . FROM ‘dog‘@’localhost’;命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON . TO ‘dog‘@’localhost’;则REVOKE SELECT ON test.user FROM ‘dog‘@’localhost’;命令也不能撤销该用户对test数据库中user表的Select 权限.

具体信息可以用命令SHOW GRANTS FOR ‘dog‘@’localhost’; 查看.

六.删除用户

命令: DROP USER ‘username‘@’host’;

七.查看用户的授权

mysql> show grants for dog@localhost;
+———————————————+
| Grants for dog@localhost |
+———————————————+
| GRANT USAGE ON . TO ‘dog‘@’localhost’ |
| GRANT INSERT ON mq.* TO ‘dog‘@’localhost’ |
+———————————————+
2 rows in set (0.00 sec)

PS:GRANT USAGE:mysql usage权限就是空权限,默认create user的权限,只能连库,啥也不能干

直接安装汉化版

1
2
3
4
5
docker pull 6053537/portainer-ce  #直接用汉化版镜像
docker volume create portainer_data #位于/var/lib/docker/中
docker run -d --name portainer -p 9000:9000 --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data 6053537/portainer-ce

mysql直接搞起来

1
2
3
docker volume create mysql_data
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql8 \
--restart=always -v mysql_data:/var/lib/mysql mysql

Redis

1
docker volume create redis_data

创建redis.conf,为了持久化

1
2
appendonly yes                                                                                
appendfilename "append.aof"
1
2
docker run --name redis -d -p 6379:6379 --restart=always \
-v redis_data:/data redis redis-server /data/redis.conf

拉取镜像

docker pull portainer/portainer

创建存储目录

1
2
mkdir -p /usr/local/docker/portainer/data
cd /usr/local/docker/portainer/data

获取汉化包

1
wget https://raw.githubusercontent.com/renyinping/portainer-cn/master/Portainer-CN.zip

解压文件

1
unzip Portainer-CN.zip -d public

启动容器

1
2
3
4
5
docker run -p 9000:9000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/docker/portainer/data:/data \
-d portainer/portainer

Web 访问

首次需要设置密码(9位 007)

1 拉取镜像

1
docker pull mysql:5.7.42

简单跑起来一下,成功之后,再删除它

1
docker run -d --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.42

在执行docker run的时候如果添加–rm参数,则容器终止后会立刻删除。–rm参数和-d参数不能同时使用。

2 创建master

执行

1
docker run -d --name mysql-master -v /root/mysql/master/conf:/etc/mysql/conf.d -v /root/mysql/master/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.42

编辑配置文件

vim /root/mysql/master/conf/my.cnf

1
2
3
4
[mysqld]                                                                                                                                                                         
server-id = 1
binlog_format = STATEMENT
log_bin = mysql_bin #没有会报错

进入master容器

1
2
docker exec -it mysql-master /bin/bash
mysql -uroot -p

添加从库权限

1
2
3
alter user 'slave1'@'%' identified with mysql_native_password by '123456';   
grant replication slave on *.* to 'slave1'@'%';
flush privileges;

使用命令做一下验证:

1
select user, repl_slave_priv from mysql.user;

运行命令,记录参数,用于slave

1
show master status;

3 创建slave

1
docker run -d --name mysql-slave1 -v /root/mysql/slave1/conf:/etc/mysql/conf.d -v /root/mysql/slave1/data:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.42

其配置文件my.cnf中,要更改server-id为唯一的id

进入slave容器,并运行mysql。而后配置master

1
2
3
4
5
change master to master_host='172.16.189.129',master_user='slave1',master_password='123456',master_port=3306,master_log_file='mysqlbin.000001',master_log_pos=154,master_connect_retry=30;

start slave;

Show slave status\G;

如显示如下情况:

Slave_IO_Running: Yes
Slave_SQL_Running: No

表示slave不同步

解决方法(忽略错误,继续同步):

1、先停掉slave

1
mysql> stop slave;

2、跳过错误步数,后面步数可变

1
mysql> set global sql_slave_skip_counter=1;

3、再启动slave

1
mysql> start slave;

4、查看同步状态

1
mysql> show slave status\G;

4 测试

主库建库,然后查看从库是否自动也建库了。

5 注意

mysql8,应该要先创建slave账号

alter user ‘root‘@’%’ identified with mysql_native_password by ‘123456’;

创建slave账号

create user 'slave1'@'%';

一、整合步骤
1、开启Docker远程连接
既然要整合到IDEA,那么IDEA就需要连接Docker,所以我们需要开启Docker的远程连接。

使用以下命令编辑docker.service文件

1
vim /usr/lib/systemd/system/docker.service

添加如下内容

-H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

测试命令

1
2
netstat -nlpt   #查看端口占用否
curl 192.168.33.11:2375/version #如果能返回json数据,则证明成功

2、关闭防火墙(linux,自己测试用的)

  1. idea中配置docker

![image-20230611094407926](/Users/huage/Library/Application Support/typora-user-images/image-20230611094407926.png)

pom文件修改几处

  1. 镜像前缀
1
2
3
<properties>
<docker.image.prefix>ngit</docker.image.prefix>
</properties>
  1. docker-build插件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<baseImage>anapsix/alpine-java:8_server-jre_unlimited</baseImage>
<maintainer>huage</maintainer>
<workdir>/ROOT</workdir>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
<dockerHost>http://192.168.33.11:2375</dockerHost>
<resources>
<resource>
<targetPath>/ROOT</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>

</build>

另一版本

创建Dockerfile

1
2
3
4
5
6
FROM anapsix/alpine-java
MAINTAINER huage
VOLUME /tmp
ADD target/*.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<!-- 此版本打包时没有报错 -->
<version>1.2.1</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>

<configuration>
<imageName>ngit/${project.artifactId}</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>

<dockerHost>http://192.168.33.11:2375</dockerHost>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>