Jorden.lwq

Success is never final. Failure is never fatal. Courage is what counts. -Sir Winston Churchill。


  • Startseite

  • Archiv

  • Tags

Redis高可用集群搭建

Veröffentlicht am 2018-04-11 |
Words count in article 803 字 | Reading time 3 分钟

redis集群介绍

1
2
1,多个redis节点数据共享
2,通过redis分区来减轻解决单Redis服务器压力。

##Redis 集群的数据分片

1
2
3
4
5
6
7
Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念.
Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么:
节点 A 包含 0 到 5500号哈希槽.
节点 B 包含5501 到 11000 号哈希槽.
节点 C 包含11001 到 16384号哈希槽.

准备两台Liunx服务器

1
用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。

1 安装redis

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
1. 下载并解压
cd /usr/local/
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz 
2. 编译安装
cd redis-3.2.4
make && make install
在执行上面的步骤之后进入redis目录下面有一个utils文件夹下面有一个redis_init_script脚本
创建文件夹 执行此命令 mkdir /etc/init.d/redis -p 改名字 mv redis-3.2.4 redis
然后复制 cp /usr/local/redis/redis.conf /etc/redis_7001.conf
然后vim redis_7001.conf 开启rdb持久化 pid改成对应的端口,日志文件改成对应的日志文件目录
mkdir -p /etc/redis-cluster
mkdir -p /var/log/redis
mkdir -p /var/redis/${自己的redis端口}
进入redis utils 目录下面 执行此命令 cp redis_init_script /etc/init/redis/ redis_init_script_7001
redis_init_script_7001 就是redis 7001 端口的redis 启动脚本。
vim /etc/init/redis/ redis_init_script_7001 可以看到
1
2
3
4
5
6
7
8
9
10
11
12
#大致浏览下该启动脚本,发现redis习惯性用监听的端口名作为配置文件等命名,我们后面也遵循这个约定。
#redis服务器监听的端口
REDISPORT=7001
#服务端所处位置,在make install后默认存放与`/usr/local/bin/redis-server`,如果未make install则需要修改该路径,下同。
EXEC=/usr/local/bin/redis-server
#客户端位置
CLIEXEC=/usr/local/bin/redis-cli
#Redis的PID文件位置
PIDFILE=/var/run/redis_${REDISPORT}.pid
#配置文件位置,需要修改
CONF="/etc/redis/${REDISPORT}.conf"

搭建redis集群配置

1
2
3
4
5
6
7
port 7001 ## 你的当前redis端口
## 开启集群 重要配置
cluster-enabled yes
## redis集群的配置文件 自动创建
cluster-config-file /etc/redis-cluster/node-7001.conf
## redis集群中节点的超时时间
cluster-node-timeout 15000

将上面的配置文件,在/etc/redis下放6个,分别为: 7001.conf,7002.conf, 第二台机子 7003.conf,7004.conf,7005.conf,7006.conf

关闭各自物理机的防火墙。相互ping 一下

#在/etc/init.d下,放6个启动脚本,分别为: redis_7001, redis_7002, redis_7003, 第二台机子 redis_7004, redis_7005, redis_7006

3、创建集群

1
2
3
4
5
6
7
8
9
在第一台服务器上面安装 ruby
cp /usr/local/redis-3.2.8/src/redis-trib.rb /usr/local/bin
redis-trib.rb create --replicas 1 192.168.31.187:7001 192.168.31.187:7002 192.168.31.19:7003 192.168.31.19:7004 192.168.31.227:7005 192.168.31.227:7006
--replicas: 每个master有几个slave
检查 redis-trib.rb check 192.168.31.187:7001

读写分离+高可用+多master

读写分离:每个master都有一个slave

高可用:master宕机,slave自动被切换过去

多master:横向扩容支持更大数据量

centos7+ 安装mysql

Veröffentlicht am 2018-03-22 |
Words count in article 1,731 字 | Reading time 7 分钟

CentOS7安装MySQL

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

1 下载并安装MySQL官方的 Yum Repository

1
[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。

1
[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

之后就开始安装MySQL服务器。

1
[root@localhost ~]# yum -y install mysql-community-server

这步可能会花些时间,安装完成后就会覆盖掉之前的mariadb。

img

至此MySQL就安装完成了,然后是对MySQL的一些设置。

2 MySQL数据库设置

首先启动MySQL

1
[root@localhost ~]# systemctl start mysqld.service

查看MySQL运行状态,运行状态如图:

1
[root@localhost ~]# systemctl status mysqld.service

img

此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码:

1
[root@localhost ~]# grep "password" /var/log/mysqld.log

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:

1
2
mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果只是修改为一个简单的密码,会报以下错误:

1
2
mysql> ALTER USER USER() IDENTIFIED BY '12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这个其实与validate_password_policy的值有关。

validate_password_policy有以下取值:

Policy Tests Performed
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。

有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。

必须修改两个全局参数:

首先,修改validate_password_policy参数的值

1
2
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是:

1
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)

我的是已经修改过的,初始情况下第一个的值是ON,validate_password_length是8。可以通过如下命令修改:

1
2
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;

但此时还有一个问题,就是因为安装了Yum Repository,以后每次yum操作都会自动更新,需要把这个卸载掉:

1
[root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch
1
定时备份mysql
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
#!/bin/bash
db_user="root"
db_passwd="123456"
db_name="test_db"
#进入备份目录将之前的移动到old目录
cd /mnt/backup/bakmysql
echo "you are in bakmysql directory now"
mv test_db* /mnt/backup/bakmysqlold
echo "Old databases are moved to bakmysqlold folder"
#备份目录
backup_dir="/mnt/backup/bakmysql"
#时间格式
time=$(date +"%Y-%m-%d")
#mysql 备份的命令,注意有空格和没有空格
mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"-"$time.sql"
echo "your database backup successfully completed"
#这里将7天之前的备份文件删掉
SevenDays=$(date -d -7day +"%Y-%m-%d")
if [ -f /mnt/backup/bakmysqlold/pashanhu-$SevenDays.sql ]
then
rm -rf /mnt/backup/bakmysqlold/pashanhu-$SevenDays.sql
echo "you have delete 7days ago bak sql file "
else
echo "7days ago bak sql file not exist "
echo "bash complete"
fi
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
er="root"
db_passwd="12345678"
db_name="test"
#进入备份目录将之前的移动到old目录
cd /var/backup/bakmysql
echo "you are in bakmysql directory now"
mv test_db* /var/backup/bakmysqlold
echo "Old databases are moved to bakmysqlold folder"
#备份目录
backup_dir="/mnt/backup/bakmysql"
#时间格式
time=$(date +"%Y-%m-%d")
#mysql 备份的命令,注意有空格和没有空格
#mysqldump -u$db_user -p$db_passwd $db_name > "$backup_dir/$db_name"-"$time.sql"
mysqldump --defaults-extra-file=/etc/my.cnf $db_name > "$backup_dir/$db_name"-"$time.sql"
echo "your database backup successfully completed"
echo "$backup_dir/$db_name"-"$time.sql"
#这里将7天之前的备份文件删掉
SevenDays=$(date -d -7day +"%Y-%m-%d")
if [ -f /var/backup/bakmysqlold/pashanhu-$SevenDays.sql ]
then
rm -rf /var/backup/bakmysqlold/pashanhu-$SevenDays.sql
echo "you have delete 7days ago bak sql file "
else
echo "7days ago bak sql file not exist "
echo "bash complete"
fi

然后通过下面命令将脚步加入系统的计划任务

1
2
3
4
5
crontab -e
0 2 * * * cd /usr/sbin/ && ./bakmysql.sh

解决MySQL5.6出现”Using a password on the command line interface…”

​ 转载 2016年09月07日 11:17:25

  • 标签:
  • mysql /
  • 数据库
  • ​

今天老左有在帮一个网友搬家网站过程中,习惯导出MySQL数据库的时候采用mysqldump命令,但是意外发生了出现”Warning: Using a password on the command line interface can be insecure.”的错误提示,当然数据库肯定也没有能备份下来。这个问题应该是在MySQL5.6+版本的时候就有出现,可能是为了确保数据库的安全性采用的保护机制。

遇到问题那就去解决问题,大概搜索到国内的一些网站,大部分都是复制的,也没有讲的明白,于是还是找老外的信息,于是老左就整理到下面比较全的方法且经过验证是没有问题的。

第一种方法、修改数据库配置文件

1、我们需要修改数据库配置文件,这个要看我们数据库的配置的,有些是在/etc/my.cnf,有些是/etc/my.conf

Warning: Using a password on the command line interface can be insecure.

我们需要在[client]部分添加脚本:

host=localhost
user=数据库用户
password=’数据库密码’

这里参数要修改成我们自己的。

2、采用命令导出和导入数据库

其实在这个时候,我们如果采用”详解使用mysqldump命令备份还原MySQL数据用法整理“介绍的方法也是可以使用的,虽然依旧有错误提示,但是数据库还是可以导出的。您肯定和老左一样是追求细节的人,一点点问题都不能有,但我们可以用下面的命令导出和导入,就没有错误提示。

#导出数据库

mysqldump –defaults-extra-file=/etc/my.cnf database > database.sql

#导入数据库

mysql –defaults-extra-file=/etc/my.cnf database < database.sql

这里我们可以看到上面的命令和以前常用的快速导入和导入命令有所不同了,需要加载我们配置的MYSQL配置文件,这个红色部分要根据我们实际的路径修改。用这样的命令导出备份和导入是没有错误提示的。

第二种方法、利用mysql_config_editor

1、设置加密模式

mysql_config_editor set –login-path=local –host=localhost –user=db_user –password

红色部分是需要修改成我们自己数据库用户名的,回车之后会提示我们输入数据库密码,我们照样输入。

2、执行备份

mysqldump -u db_user -pInsecurePassword my_database | gzip > backup.tar.gz

根据我们数据信息修改用户和用户名和数据库密码,执行备份,这里老左测试还是有错误提示,但数据库是可以备份的。

总之,我们只要实现结果,可以选择以上2种方法其一操作,当然老左也有看到其他的方法,这里就不多分享了,如果有兴趣的可以搜索其他解决方法。

基于 CentOS 7 搭建 GitLab

Veröffentlicht am 2018-03-22 |
Words count in article 728 字 | Reading time 3 分钟

更新软件包

1
yum update -y

安装 sshd:

1
yum install -y curl policycoreutils-python openssh-server

启用并启动 sshd:

1
2
3
systemctl enable sshd
systemctl start sshd

配置防火墙

1
2
3
打开 /etc/sysctl.conf 文件,在文件最后添加新的一行并按 Ctrl + S 保存:
net.ipv4.ip_forward = 1

启用并启动防火墙:

1
2
3
4
5
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --permanent --add-service=http

重启防火墙:

1
2
3
systemctl reload firewalld
在实际使用中,可以使用 systemctl status firewalld 命令查看防火墙的状态。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
安装 postfix
GitLab 需要使用 postfix 来发送邮件。当然,也可以使用 SMTP 服务器,具体步骤请参考 官方教程。
安装:
yum install -y postfix
打开 /etc/postfix/main.cf 文件,在第 119 行附近找到 inet_protocols = all,将 all 改为 ipv4 并按 Ctrl + S 保存:
inet_protocols = ipv4
启用并启动 postfix:
systemctl enable postfix
systemctl start postfix

配置 swap 交换分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
由于 GitLab 较为消耗资源,我们需要先创建交换分区,以降低物理内存的压力。
在实际生产环境中,如果服务器配置够高,则不必配置交换分区。
新建 2 GB 大小的交换分区:
dd if=/dev/zero of=/root/swapfile bs=1M count=2048
格式化为交换分区文件并启用:
mkswap /root/swapfile
swapon /root/swapfile
添加自启用。打开 /etc/fstab 文件,在文件最后添加新的一行并按 Ctrl + S 保存:
/root/swapfile swap swap defaults 0 0

安装 GitLab

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
将软件源修改为国内源
由于网络环境的原因,将 repo 源修改为 清华大学
。
在 /etc/yum.repos.d 目录下新建 gitlab-ce.repo 文件并保存。内容如下:
gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
刚才修改过了 yum 源,因此先重新生成缓存:
(此步骤执行时间较长,一般需要 3~5 分钟左右,请耐心等待)
yum makecache
安装 GitLab:
(此步骤执行时间较长,一般需要 3~5 分钟左右,请耐心等待)
yum install -y gitlab-ce

初始化 GitLab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
配置 GitLab 的域名(非必需)
打开 /etc/gitlab/gitlab.rb 文件,在第 13 行附近找到 external_url 'http://gitlab.example.com',将单引号中的内容改为自己的域名(带上协议头,末尾无斜杠),并按 Ctrl + S 保存。
例如:
external_url 'http://work.myteam.com'
特别重要!
使用如下命令初始化 GitLab:
(此步骤执行时间较长,一般需要 5~10 分钟左右,请耐心等待)
sudo gitlab-ctl reconfigure

GitLab 安装已完成

1
2
3
4
5
开始使用吧!
至此,我们已经成功地在 CentOS 7 上搭建了 GitLab。 现在可以在这里(http://123.207.18.222/)访问 GitLab 了。
在实际生产中,建议您使用 2 核 4 GB 或更高配置的 CVM。点击这里 可以查看 GitLab 官方推荐的配置和可承载人数对应表。
再次提醒您,定期执行 yum update -y 以保持各软件包的最新状态。
谢谢!

我对SpringCould理解

Veröffentlicht am 2018-03-12 |
Words count in article 108 字 | Reading time 1 分钟

我对springCould 简单的来说,就是一个微服务基础框架。
那什么是微服务基础框架呢?
其实就可以看着是微服务服务治理架构的核心内容。
主要包括 对微服务生命周期的管理能力。这个能力包括
微服务网关。DevOps 和docker 的云集成,安全,负载均衡。服务注册和发现。熔断器 监控等等。

搭建 WordPress 个人博客

Veröffentlicht am 2018-03-09 |
Words count in article 1,491 字 | Reading time 7 分钟
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
搭建 WordPress 个人博客
准备 LNMP 环境
任务时间:30min ~ 60min
LNMP 是 Linux、Nginx、MySQL 和 PHP 的缩写,是 WordPress 博客系统依赖的基础运行环境。我们先来准备 LNMP 环境
安装 Nginx
使用 yum 安装 Nginx:
yum install nginx -y
修改 /etc/nginx/conf.d/default.conf,去除对 IPv6 地址的监听[?],可参考下面的示例:
示例代码:/etc/nginx/conf.d/default.conf
server {
listen 80 default_server;
# listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
修改完成后,启动 Nginx:
nginx
此时,可访问实验机器外网 HTTP 服务(http://<您的 CVM IP 地址>)来确认是否已经安装成功。
将 Nginx 设置为开机自动启动:
chkconfig nginx on
CentOS 6 不支持 IPv6,需要取消对 IPv6 地址的监听,否则 Nginx 不能成功启动。
安装 MySQL
使用 yum 安装 MySQL:
yum install mysql-server -y
安装完成后,启动 MySQL 服务:
service mysqld restart
设置 MySQL 账户 root 密码:[?]
/usr/bin/mysqladmin -u root password 'MyPas$word4Word_Press'
将 MySQL 设置为开机自动启动:
chkconfig mysqld on
下面命令中的密码是教程为您自动生成的,为了方便实验的进行,不建议使用其它密码。如果设置其它密码,请把密码记住,在后续的步骤会使用到。
安装 PHP
使用 yum 安装 PHP:[?]
yum install php-fpm php-mysql -y
安装之后,启动 PHP-FPM 进程:
service php-fpm start
启动之后,可以使用下面的命令查看 PHP-FPM 进程监听哪个端口 [?]
netstat -nlpt | grep php-fpm
把 PHP-FPM 也设置成开机自动启动:
chkconfig php-fpm on
CentOs 6 默认已经安装了 PHP-FPM 及 PHP-MYSQL,下面命令执行的可能会提示已经安装。
PHP-FPM 默认监听 9000 端口
安装并配置 WordPress
任务时间:30min ~ 60min
安装 WordPress
配置好 LNMP 环境后,继续使用 yum 来安装 WordPress:
yum install wordpress -y
安装完成后,就可以在 /usr/share/wordpress 看到 WordPress 的源代码了。
配置数据库
进入 MySQL:[?]
mysql -uroot --password='MyPas$word4Word_Press'
为 WordPress 创建一个数据库:
CREATE DATABASE wordpress;
MySQL 部分设置完了,我们退出 MySQL 环境:
exit
把上述的 DB 配置同步到 WordPress 的配置文件中,可参考下面的配置:
示例代码:/etc/wordpress/wp-config.php
<?php
/**
* The base configuration for WordPress
*
* The wp-config.php creation script uses this file during the
* installation. You don't have to use the web site, you can
* copy this file to "wp-config.php" and fill in the values.
*
* This file contains the following configurations:
*
* * MySQL settings
* * Secret keys
* * Database table prefix
* * ABSPATH
*
* @link https://codex.wordpress.org/Editing_wp-config.php
*
* @package WordPress
*/
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'root');
/** MySQL database password */
define('DB_PASSWORD', 'MyPas$word4Word_Press');
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');
/**#@+
* Authentication Unique Keys and Salts.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
*
* @since 2.6.0
*/
define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');
/**#@-*/
/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each
* a unique prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = 'wp_';
/**
* See http://make.wordpress.org/core/2013/10/25/the-definitive-guide-to-disabling-auto-updates-in-wordpress-3-7
*/
/* Disable all file change, as RPM base installation are read-only */
define('DISALLOW_FILE_MODS', true);
/* Disable automatic updater, in case you want to allow
above FILE_MODS for plugins, themes, ... */
define('AUTOMATIC_UPDATER_DISABLED', true);
/* Core update is always disabled, WP_AUTO_UPDATE_CORE value is ignore */
/**
* For developers: WordPress debugging mode.
*
* Change this to true to enable the display of notices during development.
* It is strongly recommended that plugin and theme developers use WP_DEBUG
* in their development environments.
*
* For information on other constants that can be used for debugging,
* visit the Codex.
*
* @link https://codex.wordpress.org/Debugging_in_WordPress
*/
define('WP_DEBUG', false);
/* That's all, stop editing! Happy blogging. */
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', '/usr/share/wordpress');
/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');
如果你上面的步骤没有使用教程创建的密码,请修改下面命令中的密码登录
配置 Nginx
WordPress 已经安装完毕,我们配置 Nginx 把请求转发给 PHP-FPM 来处理
首先,重命名默认的配置文件:[?]
cd /etc/nginx/conf.d/
mv default.conf defaut.conf.bak
在 /etc/nginx/conf.d 创建 wordpress.conf 配置,参考下面的内容:
示例代码:/etc/nginx/conf.d/wordpress.conf
server {
listen 80;
root /usr/share/wordpress;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
配置后,通知 Nginx 进程重新加载:
nginx -s reload
默认的 Server 监听 80 端口,与 WordPress 的服务端口冲突,将其重命名为 .bak 后缀以禁用默认配置
准备域名和解析
任务时间:15min ~ 30min
如果您还没有域名,可以在腾讯云上选购,过程可以参考下面的视频。
视频 - 在腾讯云上购买域名
域名解析
域名购买完成后, 需要将域名解析到实验云主机上,实验云主机的 IP 为:
视频 - 如何在腾讯云上解析域名
域名设置解析后需要过一段时间才会生效,通过 ping 命令检查域名是否生效 [?],如:
ping www.yourdomain.com
如果 ping 命令返回的信息中含有你设置的解析的 IP 地址,说明解析成功。
注意替换下面命令中的 www.yourmpdomain.com 为您自己的注册的域名
大功告成!
恭喜,您的 WordPress 博客已经部署完成,您可以通过浏览器访问博客查看效果。
通过IP地址查看:
博客访问地址:http://<您的域名>/wp-admin/install.php
通过域名查看:
博客访问地址:http://www.yourdomain.com/wp-admin/install.php,其中替换 www.yourdomain.com 为之前申请的域名。

redis个人总结

Veröffentlicht am 2018-03-08 |
Words count in article 759 字 | Reading time 3 分钟

1、什么是Redis?

1
redis 就是一种NOSQL型内存缓存数据库,可以支持redis 集群 主从复制 读写分离,支持大数据量存储,高并发!

2、redis和memcached的区别是什么?

1
2
3
4
5
6
1. 都是内存数据库,redis不仅支持K/V形式,还可以存储 String Map List Set 类型。 memcached 不仅可以存储 String Map List Set 类型 还可以存储 视频 图片等
2. 都有自己的缓存过期策略。redis 可以使用expired设置 过期时间,memcached 可以 set 1008 设置永不过期
3,都可以做集群和分布式存储。支持一主多从
4,redis可以设置持久化(rdb和aof)在数据容灾的时候可以通过rdb文件进行数据库恢复,但是memcahed 一但但是memcahed挂掉以后就不能恢复数据了
5,redis 支持数据备份可以通过 master-slave进行数据备份
6 应用场景不一样,redis 不仅仅可以做完NOSQL存错数据以外,还要做消息队列。memached适合存储一些SQL语句。数据集,用户的临时性的数据和sessin等。

3、Redis支持哪几种数据类型?

1
存储 String Map List Set

4、Redis主要消耗什么物理资源?

1
主要消耗物理机的内存和物理磁盘

5、为什么Redis需要把所有数据放到内存中?

1
Redis NOSQL型内存缓存数据库 当然是把所有的数据放到内存,不会redis可以定时进行fsyn操作把数据放到物理磁盘中

6、Redis集群方案应该怎么做?都有哪些方案?

1
2
3
4
5
6
7
8
9
1、 redis Cluster 集群
其实redis官方的方案就是,一个master node 配置多个slave node 然后通过 redis 哨兵集群 监控redis master
存储的key是根据 CRC16 16384取模 ,每一个redis slave node 都会分担16384 个solt 的一部分。 也就是说,
每一个slave node 都会处理对应分配的 solt 。如果当redis slave node 添加或者减少 会重新分配每一个redis slave node 的solt。
当redis master node 挂掉以后 这个redis 哨兵集群会选出一个redis 哨兵,然后通过选出来的这个redis 哨兵来
选出一个redis master node
2、 redis Shareding 集群
不了解。哈哈

7、Redis集群方案什么情况下会导致整个集群不可用?

1. 假设   在多台物理机集群的时候, 假设 redis master 部署在server-1 和redis 哨兵集群 部署 在 server-2 
        其他的redis slave node 部署在 server-3 server-4 server-5 server-6 ....
        这个时候  server-1   server-2  之间的网络断了 ping 不通了,这个时候 redis 哨兵 就会觉得redis master 死掉了
      其实redis master 没有死掉。于此,redis 哨兵就会选举一个新的master node ,这个时候导致redis 集群有两个master 
    导致集群数据不可用

 2.断电。

 3 .。。。

8、Redis提供了哪几种持久化方式?

AOF 和rdb
如何 AOF和rdb 同时配置 优先是AOF

redis 主从架构配置(水平扩展)

Veröffentlicht am 2018-01-27 |
Words count in article 270 字 | Reading time 1 分钟
1
redis 主从架构配置(水平扩展)
1
2
3
4
准备redis环境
1,prel
2,192.168.58.01 (master) 198.168.58.02(slave 01) 198.168.58.02(slave 02)
3,redis端口都是6379 部署到三台物理机上面。(或者docker run 三个redis 服务器 端口不同就行了,)
1
2
3
redis master 必须开启 RDB 和AOF 持久化。
redis默认开启是RDB
开启AOF appendonly yes aof 策略 fsynexec
1
2
3
4
198.168.58.02 redis slave
改redis.conf
slaveof <master> <port>
改为 198.168.52.01 6379
1
2
3
4
198.168.58.03 redis slave
改redis.conf
slaveof <master> <port
改为 198.168.52.01 6379
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
在部署在redis master的物理机上面测试
redis-cli
执行info 出现
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.68.01,port=6379,state=online,offset=8892,lag=0
slave1:ip=192.168.68.02,port=6379,state=online,offset=8892,lag=0
master_repl_offset:8892
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:8891
可见两个slave 分别为 slave01 slave02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
在部署在redis slave的物理机上面测试
redis-cli
执行info 出现
# Replication
role:slave
master_host:192.168.58.01
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:9102
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
可见次角色为slave master主机为192.168.58.01 端口6379
1
2
3
至此,redis 主从架构实现。可支撑 10w+ QPS
Thanks Look !!!

生成环境redis启动方案

Veröffentlicht am 2018-01-24 |
Words count in article 447 字 | Reading time 2 分钟

​

1
安装redis依赖包
1
2
3
4
5
yum clean all
yum makecache
yum install wget
1
2
3
4
5
6
7
安装TCL依赖
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar -xzvf tcl8.6.1-src.tar.gz
cd /usr/local/tcl8.6.1/unix/
./configure
make && make install
1
2
3
4
5
6
7
8
9
安装 perl
(为什么要装perl? java+nginx+lua,需要perl。perl,是一个基础的编程语言的安装,tomcat,跑java web应用)
yum install -y gcc
wget http://www.cpan.org/src/5.0/perl-5.16.1.tar.gz
tar -xzf perl-5.16.1.tar.gz
cd perl-5.16.1
./Configure -des -Dprefix=/usr/local/perl
make && make test && make install
perl -v
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
安装redis
使用redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make && make test && make install
redis的生产环境启动方案
要把redis作为一个系统的daemon进程去运行的,每次系统启动,redis进程一起启动
(1)redis utils目录下,有个redis_init_script脚本
(2)将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号
(3)修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
(4)创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
(5)修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf
(6)修改redis.conf中的部分配置为生产环境
daemonize yes 让redis以daemon进程运行
pidfile /var/run/redis_6379.pid 设置redis的pid文件位置
port 6379 设置redis的监听端口号
dir /var/redis/6379 设置持久化文件的存储位置
(7)启动redis,执行cd /etc/init.d, chmod 777 redis_6379,./redis_6379 start
(8)确认redis进程是否启动,ps -ef | grep redis
(9)让redis跟随系统启动自动启动
在redis_6379脚本中,最上面,加入两行注释
#chkconfig: 2345 90 10
#description: Redis is a persistent key-value database

关于SpringBoot打包war文件部署到Tomcat

Veröffentlicht am 2018-01-16 |
Words count in article 165 字 | Reading time 1 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
添加 pom插件
<finalName>jorden</finalName>
<plugins>
<!-- maven打包的时候告诉maven不需要web.xml,否刚会报找不到web.xml错误 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
1
2
3
4
5
6
7
8
9
10
11
添加 pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope> -->
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
更改启动类
@EnableWebMvc
@MapperScan(basePackages = "com.jorden.li.dao")
@SpringBootApplication
@EnableRabbit
public class ApplicationStart extends SpringBootServletInitializer {
//jar启动
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ApplicationStart.class);
}
public static void main(String[] args) {
SpringApplication.run(ApplicationStart.class, args);
}
}

进入项目跟目录。运行:mvn clean package spring-boot:repackage 会出现war文件,直接放到tomcat里面就好。

Docker配置mysql主从配置

Veröffentlicht am 2017-12-20 |
Words count in article 1,014 字 | Reading time 6 分钟

一: 注意事项

1
2
3
* 一,mysql版本必须相同
* 二 ,互相ping通
* 三, 同一操作系统

docker 安装mysql
方法一

1
2
3
4
5
6
7
8
9
10
11
12
创建Dockerfile
首先,创建目录mysql,用于存放后面的相关东西。
mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
data目录将映射为mysql容器配置的数据文件存放路径
logs目录将映射为mysql容器的日志目录
conf目录里的配置文件将映射为mysql容器的配置文件
进入创建的mysql目录,创建Dockerfile

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
Dockerfile示例
FROM debian:jessie
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mysql && useradd -r -g mysql mysql
# add gosu for easy step-down from root
ENV GOSU_VERSION 1.7
RUN set -x \
&& apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
&& wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
&& export GNUPGHOME="$(mktemp -d)" \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true \
&& apt-get purge -y --auto-remove ca-certificates wget
RUN mkdir /docker-entrypoint-initdb.d
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
# File::Basename
# File::Copy
# Sys::Hostname
# Data::Dumper
RUN apt-get update && apt-get install -y perl pwgen --no-install-recommends && rm -rf /var/lib/apt/lists/*
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5
ENV MYSQL_MAJOR 5.6
ENV MYSQL_VERSION 5.6.31-1debian8
RUN echo "deb http://repo.mysql.com/apt/debian/ jessie mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list
# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn't have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql)
# also, we set debconf keys to make APT a little quieter
RUN { \
echo mysql-community-server mysql-community-server/data-dir select ''; \
echo mysql-community-server mysql-community-server/root-pass password ''; \
echo mysql-community-server mysql-community-server/re-root-pass password ''; \
echo mysql-community-server mysql-community-server/remove-test-db select false; \
} | debconf-set-selections \
&& apt-get update && apt-get install -y mysql-server="${MYSQL_VERSION}" && rm -rf /var/lib/apt/lists/* \
&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
&& chmod 777 /var/run/mysqld
# comment out a few problematic configuration values
# don't reverse lookup hostnames, they are usually another container
RUN sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/my.cnf \
&& echo 'skip-host-cache\nskip-name-resolve' | awk '{ print } $1 == "[mysqld]" && c == 0 { c = 1; system("cat") }' /etc/mysql/my.cnf > /tmp/my.cnf \
&& mv /tmp/my.cnf /etc/mysql/my.cnf
VOLUME /var/lib/mysql
COPY docker-entrypoint.sh /usr/local/bin/
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306
CMD ["mysqld"]

通过Dockerfile创建一个镜像,替换成你自己的名字

1
docker build -t mysql .

创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像

1
2
docker images |grep mysql
mysql 5.6 2c0964ec182a 3 weeks ago 329 MB

方法二、docker pull mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker pull mysql:5.6
docker run -p 3306:3306 --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
命令说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v $PWD/conf/my.cnf:/etc/mysql/my.cnf:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
-v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs
-v $PWD/data:/mysql_data:将主机当前目录下的data目录挂载到容器的/mysql_data
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

查看容器启动情况

1
docker ps

新建两个文件
my_master.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[mysqld]
server_id = 1
log-bin=mysql-bin
server-id=2
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
binlog-do-db=test
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

my_slave.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[mysqld]
log-bin=mysql-bin
server-id=3
binlog-ignore-db=information_schema
binlog-ignore-db=cluster
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
slave-net-timeout=60
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

##参数的意义可以查看我之前写的文章

运行

1
2
3
4
5
// master
docker run -d -p 3305:3306 -e MYSQL_ROOT_PASSWORD=anech -v my.cnf:/etc/mysql/my.cnf master_mysql
// salve
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=anech -v /salve/my.cnf:/etc/mysql/my.cnf slave_mysql

随时扣作者QQ:23 9549 9549

在线聊天作者

12
Jorden.lwq

Jorden.lwq

有风雨能够扎得住,有压力能够顶得住, 有责任能够扛得住,有诱惑能够忍得住。

20 Artikel
GitHub QQ JSON在线解析
© 2019 Jorden.lwq
Erstellt mit Hexo
Theme - NexT.Gemini