2019-07-02
10012 CentOS 7上安装Nginx

第一步 - 添加Nginx存储库

要添加CentOS 7 EPEL仓库,请打开终端并使用以下命令:

1
sudo yum install epel-release

第二步 - 安装Nginx

现在Nginx存储库已经安装在您的服务器上,使用以下yum命令安装Nginx :

1
sudo yum install nginx

在对提示回答yes后,Nginx将在服务器上完成安装。

第三步 - 启动Nginx

Nginx不会自行启动。要运行Nginx,请输入:

1
sudo systemctl start nginx

如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:

1
2
3
sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

您将会看到默认的CentOS 7 Nginx网页,这是为了提供信息和测试目的。

它应该看起来像这样:

CentOS 7 Nginx默认

如果看到这个页面,那么你的Web服务器现在已经正确安装了。

如果想在系统启动时启用Nginx。请输入以下命令:

1
sudo systemctl enable nginx

恭喜!Nginx现在已经安装并运行了!

Read More

2019-07-02
10011 CentOS7 通过YUM安装MySQL5.7

Centos7.3安装和配置Mysql5.7

第一步:获取mysql YUM源

进入mysql官网获取RPM包下载地址

https://dev.mysql.com/downloads/repo/yum/

img

点击 下载

img

右击 复制链接地址 https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

得到这个 这个就是Yum仓库的rpm包 其实就是一个下载地址

第二步:下载和安装mysql源

先下载 mysql源安装包

[root@localhost ~]# wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

-bash: wget: 未找到命令

我们先安装下wget

yum -y install wget

然后执行 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

安装mysql源

yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

第三步:在线安装Mysql

yum -y install mysql-community-server

下载的东西比较多 要稍微等会;

第四步:启动Mysql服务

systemctl start mysqld

第五步:设置开机启动

[root@localhost ~]# systemctl enable mysqld

[root@localhost ~]# systemctl daemon-reload

第六步:修改root本地登录密码

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个临时的默认密码。

[root@localhost ~]# vi /var/log/mysqld.log

img

这里的临时密码 eMV.R#mWe3ha

[root@localhost ~]# mysql -u root -p

Enter password:

输入临时密码 进入mysql命令行;

mysql> ALTER USER ‘root‘@’localhost’ IDENTIFIED BY ‘ZhipengWang2012@’;

Query OK, 0 rows affected (0.00 sec)

修改密码为 ZhipengWang2012@ (备注 mysql5.7默认密码策略要求密码必须是大小写字母数字特殊字母的组合,至少8位)

第七步:设置允许远程登录

Mysql默认不允许远程登录,我们需要设置下,并且防火墙开放3306端口;

mysql> GRANT ALL PRIVILEGES ON . TO ‘root‘@’%’ IDENTIFIED BY ‘ZhipengWang2012@’ WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> exit;

Bye

退出下;

[root@localhost ~]# firewall-cmd –zone=public –add-port=3306/tcp –permanent

success

[root@localhost ~]# firewall-cmd –reload

success

[root@localhost ~]#

开放3306端口

第八步:配置默认编码为utf8

修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:

[mysqld]

character_set_server=utf8

init_connect=’SET NAMES utf8’

[root@localhost ~]# vi /etc/my.cnf

img

编辑保存完 重启mysql服务;

[root@localhost ~]# systemctl restart mysqld

[root@localhost ~]#

查看下编码:

mysql> show variables like ‘%character%’;

+————————–+—————————-+

| Variable_name | Value |

+————————–+—————————-+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+————————–+—————————-+

8 rows in set (0.00 sec)

第九步:测试

我们用本机的sqlyog远程连接下虚拟机里的mysql

img

img

OK 至此 Mysql安装配置完毕;

Read More

2019-07-02
10010 CentOS7 通过YUM安装MySQL5.7

CentOS7 通过YUM安装MySQL5.7

1.进入到要存放安装包的位置

1
cd /home/lnmp

2.查看系统中是否已安装 MySQL 服务,以下提供两种方式:

1
2
rpm -qa | grep mysql
yum list installed | grep mysql

3.如果已安装则删除 MySQL 及其依赖的包:

1
yum -y remove mysql-libs.x86_64

4.下载 mysql57-community-release-el7-8.noarch.rpm 的 YUM 源: (略)

1
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

5.安装 mysql57-community-release-el7-8.noarch.rpm:略)

1
rpm -ivh mysql57-community-release-el7-8.noarch.rpm

安装完后,得到如下两个包:

mysql-community.repo
mysql-community-source.repo

6.安装 MySQL,出现提示的话,一路 Y 到底

1
yum install mysql-server

安装完毕后,运行mysql,然后在 /var/log/mysqld.log 文件中会自动生成一个随机的密码,我们需要先取得这个随机密码,以用于登录 MySQL 服务端:

1
2
service mysqld start
grep "password" /var/log/mysqld.log

将会返回如下内容,末尾字符串就是密码,把它复制下来:

1
A temporary password is generated for root@localhost: hilX0U!9i3_6

7.登录到 MySQL 服务端并更新用户 root 的密码:

注意:由于 MySQL5.7 采用了密码强度验证插件 validate_password,故此我们需要设置一个有一定强度的密码;

1
2
mysql -u root -p
hilX0U!9i3_6

然后更改密码

1
2
3
SET PASSWORD = PASSWORD('your new password');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

设置用户 root 可以在任意 IP 下被访问:

1
grant all privileges on *.* to root@"%" identified by "new password";

设置用户 root 可以在本地被访问:

1
grant all privileges on *.* to root@"localhost" identified by "new password";

刷新权限使之生效:

1
flush privileges;

OK,输入 exit 后用新密码再次登录看看吧!

注意:如果用远程工具还是连接不上,试试用 iptables -F 命令来清除防火墙中链中的规则

8.MySQL控制命令:启动、停止、重启、查看状态

1
2
3
4
5
6
7
8
9
service mysqld start
service mysqld stop
service mysqld restart
service mysqld status

systemctl start mysqld
service mysqld stop
service mysqld restart
systemctl status mysqld

9.设置 MySQL 的字符集为 UTF-8:

打开 /etc 目录下的 my.cnf 文件(此文件是 MySQL 的主配置文件):

1
vim /etc/my.cnf

在 [mysqld] 前添加如下代码:

1
2
[client]
default-character-set=utf8

在 [mysqld] 后添加如下代码:

1
character_set_server=utf8

再登录mysql,看看字符集,6个utf8就算OK

1
show variables like '%character%';

10.查看指定的数据库中指定数据表的字符集,如查看 mysql 数据库中 servers 表的字符集:

1
show table status from mysql like '%servers%';

查看指定数据库中指定表的全部列的字符集,如查看 mysql 数据库中 servers 表的全部的列的字符集:

1
show full columns from servers;

\11. 忘记密码时,可用如下方法重置:

1
2
3
service mysqld stop
mysqld_safe --user=root --skip-grant-tables --skip-networking &
mysql -u root

进入MySQL后

1
2
3
use mysql;
update user set password=password("new_password") where user="root";
flush privileges;

12.一些文件的存放目录

配置文件

1
vim /etc/my.cnf

存放数据库文件的目录

1
cd /var/lib/mysql

日志记录文件

1
vim /var/log/ mysqld.log

服务启动脚本

1
/usr/lib/systemd/system/mysqld.service

socket文件

1
/var/run/mysqld/mysqld.pid

13.MySQL 采用的 TCP/IP 协议传输数据,默认端口号为 3306,我们可以通过如下命令查看:

1
netstat -anp
Read More

2019-07-02
10009.2 安装nginx

目录

1.概览
2.详情
–2.1安装依赖
—-2.1.1安装gcc
—-2.1.2安装pcre
—-2.1.3安装libstdc++(gcc-c++依赖)
—-2.1.4安装gcc-c++
—-2.1.5安装zlib
–2.2 安装nginx
–2.3 常用命令
–2.4 关闭Nginx代理服务器防火墙
–2.5 端口验证
–2.6 自启动设置

1.概览

服务器无法访问外网,nginx只能离线装,步骤如下:

离线状态,可先联网下载需要的依赖,需要的依赖包括:gcc、pcre、libstdc++、libstdc++-devel、gcc-c++、zlib,下载地址https://pkgs.org,选择对应的系统版本下载。与openssl

注意:

  • 1.统一使用rpm格式;
  • 2.各种依赖版本务必统一;
  • 3.服务器如果在安装时没有点选一些模块,可能需要下载的东西较多,在服务器性能允许的情况下,建议全选安装
  • 4.服务器上已有的一些依赖,版本通常较低,rpm安装时可使用 --force 强制升级安装。

2.详情

2.1安装依赖

2.1.1安装gcc

1
rpm -ivh gcc-4.8.5-36.el7.x86_64.rpm

2.1.2安装pcre

1
2
3
4
# 由于机器上已经有低版本的pcre,所以强制安装
rpm -ivh pcre-8.32-17.el7.x86_64.rpm --force

rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm --force

2.1.3安装libstdc++(gcc-c++依赖)

1
2
rpm -ivh libstdc++-4.8.5-36.el7.x86_64.rpm --force
rpm -ivh libstdc++-devel-4.8.5-36.el7.x86_64.rpm --force

2.1.4安装gcc-c++

1
rpm -ivh gcc-c++-4.4.7-4.el6.x86_64.rpm --force

2.1.5安装zlib

1
2
3
rpm -ivh zlib-1.2.3-29.el6.x86_64.rpm

rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm

2.2 安装nginx

Nginx官网下载最新Stable版本,本次下载安装版本为1.41.2(20190417)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 下载解压

tar -xzvf nginx-1.14.2.tar.gz

# 移动源代码到对应目录下
sudo mv /path/to/nginx-1.14.2 /usr/local/
cd /usr/local/nginx-1.14.2
#
./configure --prefix=/usr/local/nginx --with-zlib=/home/webadmin/nginx-1.8.1/auto/lib/zlib --with-pcre=/home/webadmin/nginx-1.8.1/auto/lib/pcre

# 编译
make
#安装
make install

# 运行nginx
cd /usr/local/nginx/sbin
./nginx

8.验证

检查nginx.conf配置文件是否正确。

1
/usr/local/nginx/sbin/nginx  -t

正确之后,浏览器打开localhost:8080,如果可访问 welcome to nginx 页面,表示配置完成。

2.3 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 通过help查看常用命令
/usr/local/nginx/sbin/nginx -h

Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/local/nginx/)
-c filename : set configuration file (default: conf/nginx.conf)
-g directives : set global directives out of configuration file
1
2
3
4
5
6
7
./nginx -v  显示nginx的版本号
./nginx -V 显示nginx的版本号和编译信息
./nginx -t 检查nginx配置文件的正确性
./nginx -t 检查nginx配置文件的正确定及配置文件的详细配置内容
./nginx -s 向主进程发送信号,如:./nginx -s reload 配置文件变化后重新加载配置文件并重启nginx服务
./nginx -p 设置nginx的安装路径
./nginx -c 设置nginx配置文件的路径

2.4 关闭Nginx代理服务器防火墙

1
2
3
4
5
6
7
8
# 临时关闭
systemctl stop firewalld.service

# 禁止开机启动
systemctl disable firewalld

# 查看防火墙状态
systemctl status firewalld

2.5 端口验证

确保映射需要的端口到外网,如80、8080、8081

2.6 自启动设置

1、在系统服务目录里创建nginx.service文件

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

2、写入内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3、设置开机自启动

1
systemctl enable nginx.service

4、查看Nginx状态

1
systemctl status nginx.service

很奇怪,明明启动成功了,为什么显示Active: inactive (dead)?

5、杀死Nginx重启Nginx

1
2
3
pkill  -9  nginx
ps aux | grep nginx
systemctl start nginx

再次查看状态,变成了active。

6、重启服务器测试效果

1
reboot

7、再次连接后,查看服务状态

1
systemctl  status  nginx.service

看到Nginx已经启动,至此,Nginx自启动配置成功。

PS: 批量安装 rpm -Uvh ./*.rpm –nodeps –force

Read More

2019-07-02
10009 jdk环境搭建

卸载

查看已经安装的jdk

1
2
3
4
5
[root@bogon jre]# rpm -qa|grep jdk
java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64
java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_6412345

卸载命令

1
[root@bogon jre]# yum -y remove java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_641

卸载完成之后Java命令不被识别

1
2
[root@bogon lib]# java -version
bash: java: command not found...12

安装

去官网下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
解压到安装目录

1
[root@bogon software]# tar -zxvf jdk-8u101-linux-x64.tar.gz -C /usr/local/java/

安装完毕之后在/etc/profile文件末尾添加

1
2
3
4
5
[root@bogon software]# vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

使/etc/profile生效

1
[root@bogon jdk1.8.0_101]# source /etc/profile

检测安装是否成功

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
[root@bogon jdk1.8.0_101]# java -version
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
[root@bogon jdk1.8.0_101]# javac
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
-classpath <path> Specify where to find user class files and annotation processors
-cp <path> Specify where to find user class files and annotation processors
-sourcepath <path> Specify where to find input source files
-bootclasspath <path> Override location of bootstrap class files
-extdirs <dirs> Override location of installed extensions
-endorseddirs <dirs> Override location of endorsed standards path
-proc:{none,only} Control whether annotation processing and/or compilation is done.
-processor <class1>[,<class2>,<class3>...] Names of the annotation processors to run; bypasses default discovery process
-processorpath <path> Specify where to find annotation processors
-parameters Generate metadata for reflection on method parameters
-d <directory> Specify where to place generated class files
-s <directory> Specify where to place generated source files
-h <directory> Specify where to place generated native header files
-implicit:{none,class} Specify whether or not to generate class files for implicitly referenced files
-encoding <encoding> Specify character encoding used by source files
-source <release> Provide source compatibility with specified release
-target <release> Generate class files for specific VM version
-profile <profile> Check that API used is available in the specified profile
-version Version information
-help Print a synopsis of standard options
-Akey[=value] Options to pass to annotation processors
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
-Werror Terminate compilation if warnings occur
@<filename> Read options and filenames from file

https://www.cnblogs.com/zhongkaiuu/p/BC.html
问题:JCE cannot authenticate the provider BC

1
2
3
1. 找到 java.security 在jvm安装地方 /path_to_your_jvm/jre/lib/security
security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider
3. 添加 bcprov-jdk16-146.jar到 /path_to_your_jvm/jre/lib/ext (提供maven的地址)

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
[webadmin@wenhuatest2250 security]$ pwd
/usr/local/jdk1.6.0_45/jre/lib/security
[webadmin@wenhuatest2250 security]$ ll
total 116
-rw-r--r--. 1 webadmin webadmin 2177 Mar 27 2013 blacklist
-rw-r--r--. 1 webadmin webadmin 81202 Mar 27 2013 cacerts
-rw-r--r--. 1 webadmin webadmin 2253 Mar 27 2013 java.policy
-rw-r--r--. 1 webadmin webadmin 13481 Jul 31 18:15 java.security
-rw-r--r--. 1 webadmin webadmin 109 Mar 27 2013 javaws.policy
-rw-r--r--. 1 webadmin webadmin 2940 Mar 27 2013 local_policy.jar
-rw-r--r--. 1 webadmin webadmin 0 Mar 27 2013 trusted.libraries
-rw-r--r--. 1 webadmin webadmin 2469 Mar 27 2013 US_export_policy.jar
[webadmin@wenhuatest2250 security]$ stat java.security
File: ‘java.security’
Size: 13481 Blocks: 32 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 6508959 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/webadmin) Gid: ( 1000/webadmin)
Context: unconfined_u:object_r:usr_t:s0
Access: 2019-08-22 09:15:39.110675245 +0800
Modify: 2019-07-31 18:15:20.880153567 +0800
Change: 2019-07-31 18:15:20.904165564 +0800
Birth: -

[webadmin@wenhuatest2250 ext]$ pwd
/usr/local/jdk1.6.0_45/jre/lib/ext
[webadmin@wenhuatest2250 ext]$ ll
total 3192
-rw-r--r--. 1 webadmin webadmin 1997327 Jul 31 17:43 bcprov-jdk15on-1.47.jar
-rw-r--r--. 1 webadmin webadmin 8238 Mar 27 2013 dnsns.jar
-rw-r--r--. 1 webadmin webadmin 845352 Jul 8 16:36 localedata.jar
-rw-r--r--. 1 webadmin webadmin 429 Mar 27 2013 meta-index
-rw-r--r--. 1 webadmin webadmin 170315 Mar 27 2013 sunjce_provider.jar
-rw-r--r--. 1 webadmin webadmin 232338 Mar 27 2013 sunpkcs11.jar
Read More

2019-07-02
10007 centos7 主从msyql5.7

1 安装mysql 如教程7

主服务器的my.cnf:

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
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
#skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/pid/mysqld.pid
user=mysql
server-id=1
port=3306
##要给从机同步的库
#binlog-do-db=
##不给从机同步的库(多个写多行)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#server-id=1
##开启二进制日志
log-bin=/usr/local/mysql/binary/mysql1-bin
max-binlog-size = 500M
##自动清理 7 天前的log文件,可根据需要修改
expire_logs_days=7
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=16M
[client]
socket=/var/lib/mysql/mysql.sock

从服务器的my.cnf :

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
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
#skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=16M
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/pid/mysqld.pid
user=mysql
server-id=2
port=3306
##从库上的参数
read_only = 1
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=1 #从机禁止写
super_read_only=1 #从机禁止写
[client]
socket=/var/lib/mysql/mysql.sock
1
2
# mkdir -p /usr/local/mysql/{data,logs,pid}
# chown -R webadmin:webadmin /usr/local/mysql

配置主从

在主服务器上授权从服务器复制帐号 (每次重启mysql,都要执行一次)

1
2
3
4
5
# mysql -uroot -p
Enter password:

mysql > grant replication slave on *.* to webadmin@'172.17.22.51.%' identified by 'def_passwd';
mysql > show master status\G

从服务器上配置连接主服务器 (重启mysql,不需要每次都执行一次,仅执行一次即可)

1
2
3
4
5
6
7
8
9
10
11
12
13
# mysql -uroot -p
Enter password:
mysql > stop slave;
mysql >change master to
master_host='172.17.22.50',
master_port=3306,
master_user='webadmin',
master_password='def_passwd',
master_log_file='mysql1-bin.000008',
master_log_pos=454;

mysql > start slave;
mysql > show slave status\G

验证

主服务器上创建数据库、表、并插入数据

1
2
3
4
5
6
7
8
9
10
mysql > CREATE DATABASE test_ab default charset utf8;
mysql > CREATE TABLE test_ab.a1(id int(2),name varchar(20));
mysql > INSERT INTO test_ab.a1(id,name) VALUES(1,"测试1");
mysql> select * from test_ab.a1;
+------+---------+
| id | name |
+------+---------+
| 1 | 测试1 |
+------+---------+
1 row in set (0.00 sec)

从服务器上查询该数据,验证是否复制过来

1
2
3
4
5
6
7
mysql> select * from test;
+------+---------+
| id | name |
+------+---------+
| 1 | 测试1 |
+------+---------+
1 row in set (0.00 sec)

至此完成。

Read More

2019-07-02
10009.3 安装jboss7.1

jboss配置修改

1
2
3
4
5
6
7
8
9
10
11
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:172.17.22.50}"/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:172.17.22.50}"/>
</interface>
</interfaces>

jboss启动

1
LAUNCH_JBOSS_IN_BACKGROUND=1 JBOSS_PIDFILE=/usr/local/jboss-as-7.1.1.Final/standalone/jboss-standalone.pid  nohup sh /usr/local/jboss-as-7.1.1.Final/bin/standalone.sh &> /dev/null 2>&1&

jboss 暂停

1
/usr/local/jboss-as-7.1.1.Final/bin/jboss-cli.sh  --connect --command=:shutdown
Read More

2019-07-02
10009.1 安装nginx

[Centos下 Nginx安装与配置]

https://www.cnblogs.com/zhanghaoyong/p/7737536.html

https://blog.csdn.net/u012946310/article/details/85106653 –https

Nginx是一款轻量级的网页服务器、反向代理服务器。相较于Apache、lighttpd具有占有内存少,稳定性高等优势。它最常的用途是提供反向代理服务。

安装


在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装。也可以通过直接下载安装包的方法,以下命令均需root权限执行

首先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库)。选定/usr/local为安装目录,以下具体版本号根据实际改变。

1.安装PCRE库

1
2
3
4
5
6
7
$ cd /usr/local/
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
$ tar -zxvf pcre-8.36.tar.gz
$ cd pcre-8.36
$ ./configure
$ make
$ make install

2.安装zlib库

1
2
3
4
5
6
7
$ cd /usr/local/ 
$ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar -zxvf zlib-1.2.8.tar.gz
$ cd zlib-1.2.8
$ ./configure
$ make
$ make install

3.安装ssl

1
2
3
4
5
6
$ cd /usr/local/
$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -zxvf openssl-1.0.1j.tar.gz
$ ./config
$ make
$ make install

4.安装nginx

1
2
3
4
5
6
7
8
9
10
$ cd /usr/local/
$ wget http://nginx.org/download/nginx-1.8.0.tar.gz
$ tar -zxvf nginx-1.8.0.tar.gz
$ cd nginx-1.8.0
$ ./configure --prefix=/usr/local/nginx (用下面的)

(./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.36 --with-zlib=/usr/local/zlib-1.2.8 --with-http_stub_status_module --with-http_ssl_module --with-openssl=/usr/local/openssl-1.0.1j)

$ make
$ make install

在–prefix后面接以下命令:

1
2
--with-pcre=/usr/local/pcre-8.36 指的是pcre-8.36 的源码路径。
--with-zlib=/usr/local/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。

点击此处下载安装脚本

5.启动

1
$ /usr/local/nginx/sbin/nginx

检查是否启动成功:

打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。

部分命令如下:

重启:
$ /usr/local/nginx/sbin/nginx -s reload

停止:
$ /usr/local/nginx/sbin/nginx -s stop

测试配置文件是否正常:
$ /usr/local/nginx/sbin/nginx -t

强制关闭:
$ pkill nginx

配置


以上安装方法nginx的配置文件位于

1
/usr/local/nginx/conf/nginx.conf

Nginx配置文件常见结构的从外到内依次是「http」「server」「location」等等,缺省的继承关系是从外到内,也就是说内层块会自动获取外层块的值作为缺省值。

Server

接收请求的服务器需要将不同的请求按规则转发到不同的后端服务器上,在 nginx 中我们可以通过构建虚拟主机(server)的概念来将这些不同的服务配置隔离。

1
2
3
4
5
6
server {
listen 80;
server_name localhost;
root html;
index index.html index.htm;
}

例如我们笔戈玩下的两个子项目 passport 和 wan 就可以通过在 nginx 的配置文件中配置两个 server,servername 分别为 passport.bigertech.com 和 wan.bigertech.com。这样的话不同的 url 请求就会对应到 nginx 相应的设置,转发到不同的后端服务器上。

这里的 listen 指监听端口,server_name 用来指定IP或域名,多个域名对应统一规则可以空格分开,index 用于设定访问的默认首页地址,root 指令用于指定虚拟主机的网页跟目录,这个地方可以是相对地址也可以是绝对地址。

通常情况下我们可以在 nginx.conf 中配置多个server,对不同的请求进行设置。就像这样:

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 80;
server_name host1;
root html;
index index.html index.htm;
}
server {
listen 80;
server_name host2;
root /data/www/html;
index index.html index.htm;
}

但是当 server 超过2个时,建议将不同对虚拟主机的配置放在另一个文件中,然后通过在主配置文件 nginx.conf 加上 include 指令包含进来。更便于管理。

1
include vhosts/*.conf;

就可以把vhosts的文件都包含进去啦。

Localtion

每个 url 请求都会对应的一个服务,nginx 进行处理转发或者是本地的一个文件路径,或者是其他服务器的一个服务路径。而这个路径的匹配是通过 location 来进行的。我们可以将 server 当做对应一个域名进行的配置,而 location 是在一个域名下对更精细的路径进行配置。

以上面的例子,可以将root和index指令放到一个location中,那么只有在匹配到这个location时才会访问root后的内容:

1
2
3
4
location / {
root /data/www/host2;
index index.html index.htm;
}

location 匹配规则

1
2
3
4
~      波浪线表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= 进行普通字符精确匹配

匹配例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
location  = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以"/"开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
[ configuration D ]
}

请求:
/ -> 符合configuration A
/documents/document.html -> 符合configuration B
/images/1.gif -> 符合configuration C
/documents/1.jpg ->符合 configuration D

静态文件映射

访问文件的配置主要有 root 和 aliasp’s 两个指令。这两个指令的区别容易弄混:

alias

alias后跟的指定目录是准确的,并且末尾必须加 /。

1
2
3
location /c/ {
alias /a/;
}

如果访问站点http://location/c访问的就是/a/目录下的站点信息。

root

root后跟的指定目录是上级目录,并且该上级目录下要含有和location后指定名称的同名目录才行。

1
2
3
location /c/ {
root /a/;
}

这时访问站点http://location/c访问的就是/a/c目录下的站点信息。

如果你需要将这个目录展开,在这个location的末尾加上「autoindex on; 」就可以了

转发

配置起来很简单比如我要将所有的请求到转移到真正提供服务的一台机器的 8001 端口,只要这样:

1
2
3
location / {
proxy_pass 172.16.1.1:8001;
}

这样访问host时,就都被转发到 172.16.1.1的8001端口去了。

负载均衡

1
2
3
4
5
6
7
8
9
10
upstream myserver; {
ip_hash;
server 172.16.1.1:8001;
server 172.16.1.2:8002;
server 172.16.1.3;
server 172.16.1.4;
}
location / {
proxy_pass http://myserver;
}

我们在 upstream 中指定了一组机器,并将这个组命名为 myserver,这样在 proxypass 中只要将请求转移到 myserver 这个 upstream 中我们就实现了在四台机器的反向代理加负载均衡。其中的 ip_hash 指明了我们均衡的方式是按照用户的 ip 地址进行分配。另外还有轮询、指定权重轮询、fair、url_hash几种调度算法。

总结


以上是最简单的通过 nginx 实现静态文件转发、反向代理和负载均衡的配置。在 nginx 中所有的功能都是通过模块来实现的,比如当我们配置 upstream 时是用 upstream 模块,而 server 和 location 是在 http core 模块,其他的还有流控的 limt 模块,邮件的 mail 模块,https 的 ssl 模块。他们的配置都是类似的可以再 nginx 的模块文档中找到详细的配置说明。

Read More

2019-07-02
10008 一主两从三哨兵

环境准备

三台独立的linux主机

内网IP分别为: 172.31.175.142、172.31.175.143、172.31.175.144

分别创建带主目录的普通用户, 比如useradd wx -m

安装redis

分别在各个主机上安装redis,以172.31.175.142为例,步骤如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#下载4.0稳定版
wget http://download.redis.io/releases/redis-4.0.11.tar.gz
#解压到用户主目录
tar -xzvf redis-4.0.11.tar.gz -C /home/wx
#进入用户主目录
cd /home/wx
#重命名解压的文件
mv redis-4.0.11 redis
#进入redis目录
cd redis
#编译
make
#安装,PREFIX指定安装路径
make PREFIX=/home/wx/redis install

主从/哨兵配置

一主(master)二从(slave)三哨兵(sentinel)的配置目标, 如下
在这里插入图片描述
redis.conf配置主从, sentinel.conf配置哨兵

conf里面很多初始的配置项可以不做修改, 对于需要修改或新增的配置项, 说明如下

  • 通用配置

下面3项,务必在每个redis.conf里进行修改,在每个sentinel.conf里新增(默认没有)

1
2
3
4
5
6
7
8
#支持内网/本地访问,比如 bind 172.31.175.142 127.0.0.1
bind 本机内网IP 127.0.0.1
#支持后台运行,默认值为no
daemonize yes
#日志文件,比如redis.log、sentinel.log
logfile xxx.log
#允许外网访问
protected-mode no
  • slave的配置

在2个slave的redis.conf下指定master

1
2
#指定master
slaveof 172.31.175.142 6379
  • sentinel的配置

在3个sentinel.conf下指定监控的master

1
2
#指定监控的master,最后一位表示quorum(法人数量),即认定master'客观下线'成立的最低票数
sentinel monitor mymaster 172.31.175.142 6379 2

主从/哨兵运行

分别启动主从redis, 验证没问题,再分别启动哨兵,假设已进入redis/bin目录

  • 运行redis

1, 启动redis

1
./redis-server ../redis.conf

2, 查看日志

1
tail -100f ../redis.log

3, 连接redis

1
./redis-cli

4, 查看主从信息

cli连接redis成功后, 输入 info replication

下面是master的replication信息
在这里插入图片描述
下面是其中一个slave的replication信息
在这里插入图片描述
5, 测试主从同步

在master上写入变量, 在slave上查看是否同步, 此过程略.

  • 运行哨兵
1
./redis-sentinel  ../sentinel.conf

一个哨兵的日志如下, 可以看出哨兵正在监听,并已识别到2个slave
在这里插入图片描述
故障转移

模拟发生故障, 进入master主机172.31.175.142, kill掉redis-server进程.

接下来, 查看各个哨兵的日志, 大抵可以看出哨兵的工作过程, 如下

1, 主观下线(sdown)

当某个哨兵心跳检测master超时后,则认定其sdown

+sdown master mymaster 172.31.175.142 6379

2, 客观下线(odown)

当认定sdown的哨兵数>=quorum时,则master下线事实最终成立,即odown

+odown master mymaster 172.31.175.142 6379 #quorum 2/2

3, 选举哨兵leader

各哨兵协商,选举出一个leader,由其进行故障转移操作

+vote-for-leader 1dd7873228b4bf30c1668d55a28b3036072ee9de 1

4, 故障转移

选择一个slave作为新的master, 并将其他节点设置为新master的slave (刚才已下线的老master的配置文件也会被设置slaveof…)

+switch-master mymaster 172.31.175.142 6379 172.31.175.144 6379

当故障转移成功后, redis是一主一从, 如下
在这里插入图片描述
在这里插入图片描述
进入新的master 172.31.175.144, 查看redis的主从信息, 还剩一从172.31.175.143
在这里插入图片描述
故障恢复

模拟故障恢复,进入老的master 172.31.175.142, 重启redis-server, 之后查看其redis主从信息, 发现老的master已经变成slave了,如下
在这里插入图片描述
//因为172.31.175.142的redis.conf在故障转移时被修改了,所以重启之后就直接成了slave

进入新的master 172.31.175.144下,再去查看最新的主从信息, 发现加入了新的slave, 如下
在这里插入图片描述
故障恢复之后, 最新的主从关系,还是一主二从三哨兵, 只不过master换了地方, 如下
在这里插入图片描述
如果想要调整master, 则需要手工操作, 为了方便对配置文件的修改, 建议在故障发生和转移之前将配置文件备份.

Read More

2019-07-02
10006 centos7 离线安装msyql5.7

https://www.cnblogs.com/mujingyu/p/7689116.html

前言:经过一天半的折腾,终于把 mysql 5.7.17 版本安装上了 centos 7 系统上,把能参考的博客几乎都看了一遍,终于发现这些细节问题,然而翻了无数的文章,基本上都没有提到这些,所以小生尽量把这些细节写下来,一方面是供初学者们参考,另一方面也是对自己花这么长时间的摸索的一个总结,如有不足之处欢迎各路高手指正。

一、安装前的检查

  1.1 检查 linux 系统版本

    [root@localhost ~]# cat /etc/system-release

      说明:小生的版本为 linux 64位:CentOS Linux release 7.4.1708 (Core)

  1.2 检查是否安装了 mysql

    [root@localhost ~]# rpm -qa | grep mysql

      若存在 mysql 安装文件,则会显示 mysql安装的版本信息

        如:mysql-connector-odbc-5.2.5-6.el7.x86_64

      卸载已安装的MySQL,卸载mysql命令,如下:

        [root@localhost ~]# rpm -e –nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64

      将/var/lib/mysql文件夹下的所有文件都删除干净。

    细节注意:

      检查一下系统是否存在 mariadb 数据库,如果有,一定要卸载掉,否则可能与 mysql 产生冲突。

      小生的系统安装模式的是最小安装,所以没有这个数据库。

      检查是否安装了 mariadb:[root@localhost ~]# rpm -qa | grep mariadb

      如果有就使劲卸载干净:

        systemctl stop mariadb
        rpm -qa | grep mariadb
        rpm -e –nodeps mariadb-5.5.52-1.el7.x86_64
        rpm -e –nodeps mariadb-server-5.5.52-1.el7.x86_64
        rpm -e –nodeps mariadb-libs-5.5.52-1.el7.x86_64

  1.3 系统内存检查

    检查一下 linux 系统的虚拟内存大小,如果内存不足 1G,启动 mysql 的时候可能会产生下面这个错误提示:  

      Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code.

      See “systemctl status mysqld.service” and “journalctl -xe” for details.[FAILED]

    小生起初安装的时候使用的是虚拟机自动分区,内存设置的是 1G,结果在这上面话费了大量的精力和时间去调试始终也启动没成功。

    最后在一位 远走的兔子 博客里找到了这个问题的答案:    

  通过lnmp安装mysql之后,显示mysql is not running。出错如下:

    Starting MySQL..The server quit without updating PID file (/usr/local/mysql/var/localhost.localdomain.pid)

  网上各种找解决方案,大部分都是什么文件权限、mysql 日志太大,重装等问题。一一试了解决方案,然并卵……

  最后,打开看了lnmp的官方网站的安装教程 https://lnmp.org/install.html,才知道原来是因为自己安装时选择的mysql版本是5.6,而**安装5.6以及以上版本的mysql需要服务器的内存至少在1G以上**。而我是在VPS上装的。内存在256MB,不出错才有问题。瞬间心塞。

  最后先卸载 lnmp,再安装。安装完全可以参照官方教程。

二、从 mysql 官网下载并上传 mysql安装包

  2.1 下载 mysql 安装包

    小生使用的是 mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

    img

  2.2 上传安装文件到 linux 系统

    使用 ftp 上传至 linux 系统中,小生上传至 /var/ftp/pub 文件目录下

细节注意:

出于安全问题,建议使用 md5sum 命令核对一下文件源:[root@localhost pub]# md5sum mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

三、安装 mysql

  3.1 解压安装包,并移动至 home 目录下

    解压 mysql 的 gz 安装包: [root@localhost pub]# tar -zvxf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

    /usr/local 目录下创建文件夹存 mysql:[root@localhost pub]# mkdir /usr/local/msyql

    将文件移动到 /usr/local 目录下,并重命名文件夹:[root@localhost pub]# mv mysql-5.7.17-linux-glibc2.5-x86_64/* /usr/lcoal/mysql/

  3.2 添加系统用户

    添加 mysql 组和 mysql 用户:

      添加 mysql 组:[root@localhost ~]# groupadd mysql

      添加 mysql 用户:[root@localhost ~]# useradd -r -g mysql mysql

      扩展:

        查看是否存在 mysql 组:[root@localhost ~]# more /etc/group | grep mysql

        查看 msyql 属于哪个组:[root@localhost ~]# groups mysql

        查看当前活跃的用户列表:[root@localhost ~]# w

  3.3 检查是否安装了 libaio

    [root@localhost pub]# rpm -qa | grep libaio

    若没有则安装

      版本检查:[root@localhost pub]# yum search libaio

      安装:[root@localhost pub]# yum -y install libaio

  3.3 安装 mysql

    进入安装 mysql 软件目录:[root@localhost ~]# cd /usr/local/mysql/

    安装配置文件:[root@localhost mysql]# cp ./support-files/my-default.cnf /etc/my.cnf(提示是否覆盖,输入“ y ”同意)

      修改被覆盖后的 my.cnf:[root@localhost mysql]# vim /etc/my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/usr/local/mysql/sock/mysql.sock
[mysqld]
#skip-name-resolve
#设置3306端口
port = 3306
socket=/usr/local/mysql/sock/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
log-error=/usr/local/mysql/log/mysqld.log
pid-file=/usr/local/mysql/pid/mysqld.pid
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=16M

创建 data 文件夹:[root@localhost mysql]# mkdir ./data

修改当前目录拥有者为 mysql 用户:[root@localhost mysql]# chown -R mysql:mysql ./

初始化 mysqld:[root@localhost mysql]# ./bin/mysqld –initialize –user=mysql –basedir=/usr/local/mysql/ –datadir=/usr/local/mysql/data/

    img

 四、配置 mysql

  4.1 设置开机启动

    a. 复制启动脚本到资源目录:[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

    b. 增加 mysqld 服务控制脚本执行权限:[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld

    c. 将 mysqld 服务加入到系统服务:[root@localhost mysql]# chkconfig –add mysqld

    d. 检查mysqld服务是否已经生效:[root@localhost mysql]# chkconfig –list mysqld

      命令输出类似下面的结果:

        mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

      表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用 service 命令控制 mysql 的启动和停止。

      查看启动项:chkconfig –list | grep -i mysql

      删除启动项:chkconfig –del mysql

    e. 启动 mysqld:[root@localhost mysql]# service mysqld start

  4.2 环境变量配置

    将mysql的bin目录加入PATH环境变量,编辑 /etc/profile文件:[root@localhost mysql]# vim /etc/profile

PATH = $PATH:/usr/local/mysql/bin

export PATH

    执行命令使其生效:[root@localhost mysql]# source /etc/profile

    用 export 命令查看PATH值:[root@localhost mysql]# echo $PATH

五、登录 mysql

  5.1 测试登录

    登录 mysql:[root@localhost mysql]# mysql -uroot -p(登录密码为初始化的时候显示的临时密码)

    初次登录需要设置密码才能进行后续的数据库操作:SET PASSWORD = PASSWORD(‘123456’);(密码设置为了123456)

    修改密码为 password:update user set authentication_string=PASSWORD(‘password’) where User=’root’;

  5.2 防火墙端口偶设置,便于远程访问

    [root@localhost ~]$ firewall-cmd –zone=public –add-port=3306/tcp –permanent

    [root@localhost ~]$ firewall-cmd –reload

  开启防火墙mysql3306端口的外部访问

  CentOS升级到7之后,使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口

  –zone : 作用域,网络区域定义了网络连接的可信等级。

    这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接

  –add-port : 添加端口与通信协议,格式为:端口/通讯协议,协议是tcp 或 udp

  –permanent : 永久生效,没有此参数系统重启后端口访问失效

  5.3 使用 SQLyog 远程连接出现不允许连接问题:

    首先使用 dos 窗口 ping 一下 linux,排除网络连通问题,其次使用 SQLyog 连接测试一下。

    解决方法:登录 linux mysql 在用户管理表新增用户帐号

      mysql> use msyql

      mysql> create user ‘user-name‘@’ip-address’ identified by ‘password’;(红色标记为需要修改的地方)

    其他方案:

      授权root用户可以进行远程连接,注意替换以下代码中的“password”为 root 用户真正的密码,

      另外请注意如果你的root用户设置的是弱口令,那么非常不建议你这么干!:   

mysql> grant all privileges on . to root@”%” identified by “password” with grant option;

mysql> flush privileges;


问题一:

https://blog.csdn.net/a1010256340/article/details/77530131

1
2
3
4
chmod 644 /etc/my.cnf
然后执行:
service mysql restart
即可。

问题二:Can’t connect to local MySQL server through socket的解决方法

(重启mysql 解决)

http://www.cnntt.com/archives/2505

Read More