乱码三千 – 分享实用IT技术

乱码三千 – 码出一个新世界


  • 首页

  • 归档

  • 搜索

使用docker部署redis

发表于 2020-09-18

部署Redis

  1. 搜索redis镜像
1
docker search redis
  1. 拉取redis镜像
1
docker pull redis
  1. 创建容器 设置端口映射
1
docker run -id --name=c_redis -p 6379:6379 redis:5.0

使用外部机器连接redis

1
.redis-cli.exe -h 192.168.149.135 -p 6379

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

使用docker部署nginx

发表于 2020-09-18

部署nginx

  1. 搜索nginx镜像
1
docker search nginx
  1. 拉取nginx镜像
1
docker pull nginx
  1. 创建容器 设置端口映射
1
2
3
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
  1. 创建nginx配置文件 否则下一步会报错
1
2
3
mkdir conf
cd conf
touch nginx.conf
  1. 在nginx.conf配置文件中添加以下配置信息(如果配置信息不对会导致无法正常启动)
1
2
3
4
5
6
7
8
9
10
11
12
worker_processes  1;
events {
worker_connections 1024;
}
http{
server{
listen 80;
server_name your_server_name; #erverName
root /usr/share/nginx/html;
index index.html;
}
}
  1. 创建并运行容器
1
2
3
4
5
6
7
8
docker run -id \
-p 80:80 \
--name=c_nginx \
-h c_nginx \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx:latest
  • 参数说明
    • -p 80:80 将容器的80端口映射到主机的80端口
    • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf
      -v $PWD/logs:/var/log/nginx
      -v $PWD/html:/usr/share/nginx/html \ 将主机中当前目录挂载到容器
    • -h 设置容器的hostname
    • $PWD表示当前所在目录
    • –name:表示容器别名, 但凡是两个杠都需要带=

关于配置文件的修改

配置文件一旦修改需要重启nginx才生效, 重启前建议提前测试一下配置文件语法是否存在问题, 可以进入容器中, 执行以下指令进行测试:

1
nginx -t

image-20220920144752833

除了借助docker重启容器外, 还可以在容器内部直接执行nginx指令实现重载:

1
nginx -s reload

附带配置文件内容参考

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#主模块指令,指定Nginx Worker进程运行用户以及用户组
user nginx;
#主模块指令,指定Nginx要开启的进程数,建议设置成和cpu的数量相等
worker_processes 1;
#主模块指令,定义全局错误日志文件;日志级别:debug、info、notice、warn、error、crit
error_log /var/log/nginx/error.log warn;
#主模块指令,指定进程pid的存储文件位置
pid /var/run/nginx.pid;
#事件指令,设定Nginx的工作模式及连接数上限
events {
#指定Nginx的工作模式;Nginx工作模式:select、poll、kqueue、epoll、rtsig和/dev/poll
use epoll; #epoll工作模式是首选
#定义Nginx每个进程的最大连接数,默认是1024
worker_connections 1024;
}
#HTTP服务器配置
http {
#主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度
include mime.types;
#HTTP核心模块指令,默认类型为二进制流
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;
#指定Nginx是否调用sendfile函数(zero copy方式)来输出文件,对于普通应用,必须设为on,
#注:如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#防止网络阻塞
#tcp_nopush on;
#连接超时时间
keepalive_timeout 65;

一、Web服务器
------------------------------------------------------------------------------------------------
#server虚拟主机配置
server {
#监听端口号
listen 80;
#域名:可有多个,支持种类:通配符名称、正则表达式名称、IP、localhost、其他(_、@)
server_name *.example.org;
~^(www\.)?(.+)$;
101.200.149.141;
...
localhost;
_;
#location URL匹配配置
#配置根目录转发到本机目录位置
location / {
root /usr/share/nginx/project_1/dist;
index index.html index.htm; # 主页现寻找index.html,如果没有index.html,再寻找index.htm
}

error_page 404 /404.html;

location = /40x.html {
}
error_page 500 502 503 504 /50x.html;

location = /50x.html {
}
}

二、反向代理(配置SSL证书,http转发到https)
------------------------------------------------------------------------------------------------
#web-http
server {
listen 80;
server_name www.xxxxxx.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;#将80端口的访问转发到443端口
}
#web-https
server {
listen 443 ssl;
server_name www.xxxxxx.com;
#ssl on; #需要注释,命令过时(1.15.0版本以后)
#配置证书的路径
ssl_certificate cert/2547204_www.xxxxxx.com.pem; #使用相对路线,放在nginx目录下,绝对路径报错
ssl_certificate_key cert/2547204_www.xxxxxx.com.key;
#ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;

#配置根目录转发到相应端口(例,82端口)使用单机服务
location / {
proxy_pass http://172.241.27.9:82; #nginx and tomcat 在同一台机器,使用http链接
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}

error_page 404 /404.html;

location = /40x.html {

}
error_page 500 502 503 504 /50x.html;

location = /50x.html {

}
}

三、负载均衡
------------------------------------------------------------------------------------------------
#设定负载均衡的服务器列表
#1.轮询(默认):
#每个请求按时间顺序逐一分配到不同的后端服务器,如果某台服务器宕机将被自动剔除,使用户访问不受影响
upstream myapp1 {
#i.down表示当前的server暂时不参与负载均衡;
server 192.168.8.1:28 down;
#ii.backup:预留的备份机器。
server 192.168.8.2:80 backup;
server 192.168.8.3:80;
}
#2.Weight权重:
#指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下
upstream myapp2 {
server 192.168.8.1:28 weight=5;
server 192.168.8.2:80 weight=1;
server 192.168.8.3:80 weight=6;
}
#3.ip_hash:
#每个请求按访问IP的hash结果分配,自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题;
upstream myapp3 {
ip_hash;
server 192.168.8.1:28;
server 192.168.8.2:80;
#iii.max_fails允许请求失败的次数,默认1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误;
#iv.fail_timeout在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
server 192.168.8.3:80 max_fails=6 fail_timeout=20s;
server 192.168.8.4:80;
}
#4.fair:更加智能的负载均衡算法。依据页面大小和加载时间长短智能地进行负载均衡,根据后端服务器的响应时间来分配请求,响应时间短的优先分配。
# 注:Nginx本身是不支持fair,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
#5.url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。
# 注:Nginx本身是不支持url_hash,如果需要使用这种调度算法,必须安装Nginx的hash软件包。

server {
listen 80;
server_name www.hanxiaozhang.xyz;
location / {
proxy_pass http://myapp1;
}
}

}

注意事项

如果对Nginx配置文件进行了修改操作, 需要重启Nginx容器才能生效

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

使用docker部署wordpress

发表于 2020-09-18

部署wordpress

  1. 搜索wordpress镜像
1
docker search wordpress
  1. 拉取wordpress镜像
1
docker pull wordpress
  1. 使用Nginx进行反向代理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
http{
upstream wordpress_sex{
server 119.33.15.174:7778;
}
server{
listen 80;
server_name sex.newban.cn;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://wordpress_sex;
break;
}
}

}
  1. 创建并运行容器
1
2
3
4
5
6
7
8
9
10
docker run -id \
--name=wordpress_sex \
-p 7778:80 \
-h wordpress_sex \
-v /root/songjian/wordpress/sex_www:/var/www/html \
-e WORDPRESS_DB_HOST=119.33.15.174:3306 \
-e WORDPRESS_DB_USESR=root \
-e WORDPRESS_DB_PASSWORD=songjian \
-e WORDPRESS_DB_NAME=wordpress_sex \
-d wordpress:latest

参数说明

  • WORDPRESS_DB_HOST 数据库主机地址(默认为与其 link 的 mysql 容器的 IP 和 3306 端口:)

  • WORDPRESS_DB_USER 数据库用户名(默认为 root)

  • WORDPRESS_DB_PASSWORD 数据库密码(默认为与其 link 的 mysql 容器提供的 MYSQL_ROOT_PASSWORD 变量的值)

  • WORDPRESS_DB_NAME 数据库名(默认为 wordpress)

  • WORDPRESS_TABLE_PREFIX 数据库表名前缀(默认为空,您可以从该变量覆盖 wp-config.php 中的配置)

    如果 WORDPRESS_DB_NAME 变量指定的数据库不存在时,那么 wordpress容器在启动时就会自动尝试创建该数据库,

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

使用docker部署springboot项目

发表于 2020-09-18

部署springboot项目

  1. 搜索java镜像
1
docker search java
  1. 拉取java镜像
1
docker pull java
  1. 创建容器 设置端口映射
1
2
3
4
5
6
docker run -id \
-p 8080:8080 \
--name=c_java \
-h c_java \
-v /root/springboot:/root/springboot \
java:latest
  • 参数说明
    • -p 8080:8080 将容器的8080端口映射到主机的8080端口
    • *-v /root/springboot:/root/springboot \将主机中当前目录挂载到容器springboot *
    • -h 设置容器的hostname
    • $PWD表示当前所在目录
  1. 运行项目

将springboot项目jar包传至 /root/springboot目录下,进入刚刚创建的java容器中,

1
docker exec -it c_java bash

然后使用java -jar指令运行项目

1
java -jar spring-demo.jar
  1. 浏览器访问
1
http://服务器ip:8080

小提示

如果你是使用的阿里云ECS 测试java和mysql的时候可能会无法访问, 这是因为 阿里云ECS处于安全考虑,默认的安全组规则只开通了22和3389号端口,而我们在实际使用当中可能会需要80、8888、21等端口号,这时只要去阿里云管理后台进行安全组设置新增开放端口号即可

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

使用docker部署tomcat

发表于 2020-09-18

部署Tomcat

  1. 搜索tomcat镜像
1
docker search tomcat
  1. 拉取tomcat镜像
1
docker pull tomcat
  1. 创建容器 设置端口映射
1
2
3
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
1
2
3
4
5
docker run -id \
-p 8080:8080 \
--name=c_tomcat \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:latest
  • 参数说明
    • -p 8080:8080 将容器的8080端口映射到主机的8080端口
    • -v $PWD:/usr/local/tomcat/webapps 将主机中当前目录挂载到容器webapps
    • -h 设置容器的hostname
    • $PWD表示当前所在目录

小提示

如果你是使用的阿里云ECS 测试tomcat和mysql的时候可能会无法访问, 这是因为 阿里云ECS处于安全考虑,默认的安全组规则只开通了22和3389号端口,而我们在实际使用当中可能会需要80、8888、21等端口号,这时只要去阿里云管理后台进行安全组设置新增开放端口号即可

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

使用docker安装mysql

发表于 2020-09-18

部署MySql

  1. 搜索mysql镜像
1
docker search mysql
  1. 拉取mysql镜像
1
docker pull mysql
  1. 在/root目录下创建mysql目录用于存储mysql数据信息
1
2
mkdir ~/mysql
cd ~/mysql
  1. 创建容器 设置端口映射
1
2
3
4
5
6
7
8
9
docker run -id \
-p 3306:3306 \
--name=c_mysql \
-h c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=12345 \
mysql:latest
  • 参数说明
    • -p 3306:3306将容器的3306端口映射到主机的3306端口
    • -v $PWD/conf:/etc/mysql/conf.d 将容器中配置文件目录与主机挂载
    • -h 设置容器的hostname
    • $PWD表示当前所在目录

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Linux Crontab 命令安装和使用教程:在 VPS 上设置定时任务

发表于 2020-09-18

一、Crontab 命令安装教程

首先检查一下 Crontab 是否安装:

1
crontab -l

如果没报错,就是已经安装好了,一般来说系统都会自带。

如果没安装,进行安装:

CentOS:

1
2
yum install vixie-cron
yum install crontabs

Ubuntu:

1
apt-get install cron

二、Crontab 命令使用教程

命令格式:

1
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]

是不是觉得怪复杂的,其实一般来说其实就三个命令:

  • 列出所有定时任务:crontab -l
  • 编辑所有定时任务:crontab -e
  • 删除所有定时任务:crontab -r

使用 crontab -l 可以列出所有的定时任务,一行一个任务,一般来说,每行的格式如下:

1
分 时 日 月 星期 要运行的命令
  • 第 1 列:分钟,取值范围:0~59
  • 第 2 列:小时,取值范围:0~23(0表示子夜)
  • 第 3 列:日,取值范围:1~31
  • 第 4 列:月,取值范围:1~12
  • 第 5 列:星期,取值范围:0~7(0 和 7 表示星期天)
  • 第 6 列:要运行的命令

对于每一列,有如下几种表示方法:

  • *:每单位(比如每分钟,每小时)
  • 具体数字:就是具体的时间或者日期
  • 取值范围:比如 3 – 5,就是从 3 到 5 的所有值都取
  • */数字:比如 */2,就是每 2 分钟或者每 2 天之类的意思

下面看几个例子:

实例 1:每 1 分钟执行一次 myCommand

1
* * * * * myCommand

实例 2:每小时的第 3 和第 15 分钟执行

1
3,15 * * * * myCommand

实例 3:在上午 8 点到 11 点的第 3 和第 15 分钟执行

1
3,15 8-11 * * * myCommand

实例 4:每隔两天的上午 8 点到 11 点的第 3 和第 15 分钟执行

1
3,15 8-11 */2  *  * myCommand

实例 5:每周一上午 8 点到 11 点的第 3 和第 15 分钟执行

1
3,15 8-11 * * 1 myCommand

实例 6:每晚的 21:30 重启 smb

1
30 21 * * * /etc/init.d/smb restart

实例 7:每月 1、10、22 日的 4 : 45 重启 smb

1
45 4 1,10,22 * * /etc/init.d/smb restart

实例 8:每周六、周日的 1 : 10 重启 smb

1
10 1 * * 6,0 /etc/init.d/smb restart

实例 9:每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 smb

1
0,30 18-23 * * * /etc/init.d/smb restart

实例 10:每星期六的晚上 11 : 00 pm 重启 smb

1
0 23 * * 6 /etc/init.d/smb restart

实例 11:每一小时重启 smb

1
0 */1 * * * /etc/init.d/smb restart

实例 12:晚上 11 点到早上 7 点之间,每隔一小时重启 smb

1
0 23-7 * * * /etc/init.d/smb restart

实例 13:5小时后 每一小时重启 smb

1
0 5/1 * * * /etc/init.d/smb restart

错误示例:

如果你想定一个每天两点执行的任务:

1
0 2 * * * /etc/init.d/smb restart

但不能写成:

1
* 2 * * * /etc/init.d/smb restart

这种写法表示每天两点开始每分钟执行一次任务, 可能会陷入嵌套重复执行的问题

配置完后 最后启动定时任务

ubuntu下启动、停止与重启cron:

1
2
3
4
$sudo /etc/init.d/cron start
$sudo /etc/init.d/cron stop
$sudo /etc/init.d/cron restart
$sudo service cron status# 查看当前cron服务运行状态

定时任务备份

可以使用这种方法在$HOME目录中对crontab文件做一备份:

1
$ crontab -l > $HOME/mycron

问题排查

1. 启动cron 报错:

1
cron: can't lock /var/run/crond.pid, otherpid may be 4187: Resource temporarily unavailable

解决方案:

依次执行以下三个命令

删除pid 重新加载配置 重启启动cron

1
rm -rf /var/run/crond.pid
1
cron reload
1
cron restart

2.任务不执行 日志不打印

指令必须以绝对路径开头 比如:

1
* */2 * * *  /usr/bin/python3  /root/xxx/xxx.py >>/root/xxx/mylog_$(date +\%Y-\%m-\%d-\%H:\%M:\%S).log 2>&1

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

利用 IntelliJ IDEA 远程连接服务器并做ftp上传

发表于 2020-09-18

对于windows用户来说上传文件到服务器有很多资源可以利用,例如xshell,xftp等可视化进行服务器的管控,但是对于mac的小伙伴来说现在找一个替代xshell的不是很好找,要么不好用要么用起来比较繁琐.小编发现idea自带ssh连接,也可以通过idea进行文件管理上传至服务器.

打开idea可以单独设置一个空包作为服务器管理,只需要把要上传的文件放到包里面即可.

idea >> Tools >> Deployment >> Configuration 进入到配置页面

点击加号出现配置服务器信息.我们选择sftp文件上传模式,名称为为当前上产服务器设置的别名

录入必要信息:

  • SFTP host 服务器地址.

  • Port. 端口号

  • Root path 默认上传路径

  • User name 登录服务器用户名

  • Auth type 授权方式,这里小编采用密码授权模式

  • Password. 登录服务器密码

录入完必要信息以后可以点击Test SFTP connection进行连接测试

通过 Tools >> Start SSH 进行ssh远程连接,点击后会出现配置好的ssh信息,选择即可

链接成功后在idea的Terminal中可以看到链接成功的信息

通过Configuration 下选择配置好的ssh服务器进入Mappings文件夹 可以配置上传路径和本地文件存放路径

配置完以后 通过项目右键可以看到一个上传到服务器按钮点击即可把要上传的文件上传至服务器

上传后的效果.

至此通过idea远程链接ssh并上传文件至服务器配置完毕.需要的小伙伴们可以去使用啦

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

Linux关于日期时间显示输出

发表于 2020-09-18

1、输出当前年月日

1
2
echo $(date +%F)
2014-02-21

或者

1
2
echo $(date +\%Y-\%m-\%d)
2014-02-21

2、输出当前时间(时分)

1
2
echo $(date +%R)
12:45

3、输出当前时间(时分秒)

1
2
echo $(date +%T)
12:52:51

4、输出星期

1
2
echo $(date +%A)
星期五

5、组合输出日期时间

5.1输出年月日

1
2
3
4
5
echo $(date +%Y/%m/%d)
2014/02/21
%Y参数: 年
%m参数: 月
%d参数: 日

5.2输出时分秒

1
2
3
4
5
echo $(date +%H:%M:%S)
12:50:44
%H参数: 时
%M参数: 分
%S参数: 秒

5.3输出年月日时分秒

1
2
3
4
5
echo $(date +%F%n%T)
2014-02-21 12:56:46
%n参数: 空格
%F参数: 年月日
%T参数: 时分秒

或者

1
echo $(date +\%Y-\%m-\%d-%H:%M:%S)

本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

如何创建Xposed模块工程进行代码hook

发表于 2020-09-15

快速搭建模块工程

  1. 第一步 使用Android Studio创建空工程
  2. 第二步 导入依赖
1
2
compileOnly 'de.robv.android.xposed:api:53'
compileOnly 'de.robv.android.xposed:api:53:sources'
  1. 在AndroidManifest.xml清单文件application节点下加入以下代码
1
2
3
4
5
6
7
8
9
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="Xposed模块初体验" />
<meta-data
android:name="xposedminversion"
android:value="53" />
  1. 创建Hook逻辑类,该类继承自IXposedHookLoadPackage,示例如下:
1
2
3
4
5
6
public class HookTest implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("HOOK初体验:" + lpparam.processName + ":" + lpparam.packageName);
}
}
  1. 在assets目录下创建xposed_init文件并将Hook逻辑类引用路径填入,比如:
1
com.example.test.HookTest
  1. 编译并运行至装有xposed容器app的设备中即可, 重启设备生效

注:以上操作成功的前提是你需要一台拥有root权限的手机或者模拟器,并已经安装了xposed安装器

搭建本文为作者原创 转载时请注明出处 谢谢

乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站

1…353637…48

乱码三千

android程序员一枚,擅长java,kotlin,python,金融投资,欢迎交流~

479 日志
139 标签
RSS
© 2024 乱码三千
本站总访问量次
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4
0%