centos7.2
MYSQL安装
JDK安装
ACTIVEMQ安装
防火墙和白名单配置
Tomcat下载与安装
Redis下载与安装
nginx安装与配置实现负载均衡
在安装前需要确定现在这个系统有没有 mysql,如果有那么必须卸载(在 centos7 自带的是 mariaDb 数据库,所以第一步是卸载数据库)。
卸载系统自带的Mariadb:
查看mariadb数据库:
rpm -qa | grep mariadb
卸载mariadb数据库:
rpm -e --nodeps mariadb文件名
卸载已安装的mysql:
查看 mysql 数据库:
rpm -qa | grep -i mysql
卸载 mysql 数据库:
rpm -e mysql文件名 # 如果有关联文件,不能直接卸载。可以用一下命令强制卸载:rpm -e --nodeps mysql文件名)
删除etc目录下的my.cnf文件:
rm /etc/my.cnf
mysql官方(http://dev.mysql.com/downloads/repo/yum/)获取Yum Repository。
获取rpm镜像文件
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
md5校验文件
md5sum mysql57-community-release-el7-11.noarch.rpm ##md5校验
安装mysql
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum -y install mysql-server
设置mysql为自启动
systemctl enable mysqld #设置开机启动
systemctl disable mysqld #关闭开机启动
重启mysql服务
service mysqld restart [start, stop, restart, try-restart, reload, force-reload, status] #后面的都是可选项
查看3306端口是否启动
netstat -ln | grep 3306
首次查看自动产生的随即密码
grep "password" /var/log/mysqld.log
或者使用
cat /var/log/mysqld.log | grep password
修改密码策略(支持简单密码)也可以看下一步的配置文件关闭密码插件
set global validate_password_policy=0; ###基于密码长度(修改为LOW方式)
set global validate_password_length=1 ###
修改配置文件(vim /etc/my.cnf)
编辑配置文件
vim /etc/my.cnf
插入以下文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
validate_password=off
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
登录并修改密码
登录
mysql -uroot -p
修改密码
set password=password('新密码');
# 或者set PASSWORD = PASSWORD('新密码'); 也可以
生效
flush privileges; #刷新
添加远程访问权限
#登录mysql
mysql> use mysql
mysql> update user set host='%' where user='root';
mysql> select host,user from user;
mysql> flush privileges;
#退出mysql,重启mysql服务生效
mysql导入DATETIME字段数据时遇到错误incorrect datetime value ‘0000-0-0 00:00:00’ for column
mysql允许将’0000-00-00’保存为“伪日期”,如果不使用no_zero_date sql模式就可以啦
查看模式
show variables like 'sql_mode';
设置模式(把上面查出来的复制一遍然后去掉no_zero_date即可)
set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
如果无效果,那就修改mysql的配置文件【my.ini】
vim /etc/my.ini
追加
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
flush privileges;
重启
总结
NO_ZERO_IN_DATE和NO_ZERO_DATE 去掉是取消对日期中有0的限制
ONLY_FULL_GROUP_BY 去掉非聚合列的检查(就是有时操作的时候报错但是已经执行成功了)
mysql的一些常用命令
mysql -uroot(账户账号) -padmin(账户密码) #登录MYSQL
insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); #创建用户(注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。)
grant 权限 on 数据库.数据库的表名 to 用户名@登录主机(访问数据库的主机) identified by "密码"; #用户授权
create database testDB; #用户创建一个数据库(testDB)
grant all privileges on testDB.* to test@localhost identified by '1234'; #给test用户授予testDB数据库的所有权限(授权之后需要刷新权限)
flush privileges; #刷新系统权限表
grant select,update on testDB.* to test@localhost identified by '1234'; #授予test用户部分权限
Delete FROM user Where User='test' and Host='localhost'; #删除用户
drop database testDB; #删除用户的数据库
drop user 用户名@'%'; #删除用户
update mysql.user set password=password('新密码') where User="test" and Host="localhost"; #修改指定用户密码
show database; #列出所有数据库
use '数据库名'; #切换数据库
show tables; #列出所有表
describe 表名; #显示数据表结构
drop database 数据库名; #删除数据库
drop table 数据表名; #删除表名
select * from user \G; #一般在linux查询的时候横向查询显示不太友好,可以在查询的语句后面加上"\G"就可以纵向显示
下载jdk传送门
检查版本,卸载openjdk
java -version #查看jdk安装版本
rpm -qa | grep java #查看安装的包信息
#卸载上面查到的安装包,卸载完
[root@localhost ~]# rpm -e --nodeps tzdata-java-2014i-1.el7.noarch
[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.71-2.5.3.1.el7_0.x86_64
[root@localhost ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64
上传下载的jdk或者wget
rz #进行上传(也可以自己使用ftp上传)
或者
wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.rpm #jdk1.8版本的
安装jdk
rpm -ivh jdk-8u181-linux-x64.rpm
验证安装
java -version
配置环境变量
vi /etc/profile
追加信息
JAVA_HOME=/usr/java/jdk1.8.0_25
JRE_HOME=/usr/java/jdk1.8.0_25/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使修改生效
[root@localhost ~]# source /etc/profile //使修改立即生效
[root@localhost ~]# echo $PATH //查看PATH值
查看系统环境状态
[root@localhost ~]# echo $PATH
下载activeMQ传送门
下载
使用此插件进行上传刚刚上一步(下载activeMQ传送门)下载的文件
rz
或者直接卸载(5.15.5)版本
wget http://apache.fayea.com/activemq/5.15.5/apache-activemq-5.15.5-bin.tar.gz
解压
tar -zxvf apache-activemq-5.15.5-bin.tar.gz
启动
进入bin目录
[root@iz2ze7qyvg1mht4uptlc5uz bin]# pwd
/usr/local/java/apache-activemq-5.15.4/bin
./activemq start
查看启动情况(进程)
ps -ef | grep activemq
防火强添加端口开放(8161,61616)
安装防火墙
yum -y install iptables-services
编辑防火墙的配置文件
vi /etc/sysconfig/iptables
基本操作
查看防火墙状态
service iptables status
停止防火墙
service iptables stop
启动防火墙
service iptables start
重启防火墙
service iptables restart
永久关闭防火墙
chkconfig iptables off
永久关闭后重启
chkconfig iptables on
禁止iptables开机启动
systemctl disable iptables.service
设置防火墙开机启动
systemctl enable iptables.service
查看防火墙状态
service iptables status
增加开放端口
这个需要看看配置文件的位置
/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
或者
vim /etc/sysconfig/iptables
# 加入如下代码,比着两葫芦画瓢 :)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
保存后重启防火墙
service iptables restart
基本操作
查看状态systemctl status firewalld
或者
firewall-cmd --state
开启
service firewalld start
重启
service firewalld restart
关闭
service firewalld stop
查看防火墙规则
firewall-cmd --list-all
禁止firewall开机启动
systemctl disable firewalld.service
设置防火墙开机启动
systemctl enable firewalld.service
端口操作
#查询端口是否开放
firewall-cmd --query-port=8080/tcp
#开放80端口
firewall-cmd --permanent --zone=public --add-port=80/tcp
#移除端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
查看配置文件的端口开放
cat /etc/firewalld/zones/public.xml
重启防火墙
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
参数解释
1. firwall-cmd:是Linux提供的操作firewall的一个工具;
2. --permanent:表示设置为持久;
3. --add-port:标识添加的端口;
下载tomcat传送门
下载
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz
解压
tar -xzvf apache-tomcat-9.0.2.tar.gz
修改系统配置
[root@JDK-Tomcat apache-tomcat-9.0.2]# vi /etc/profil
export TOMCAT_HOME=/usr/local/tomcat/apache-tomcat-8.5.32/
[root@JDK-Tomcat bin]# source /etc/profile
设置Tomcat开机自启动
在Tomcat的bin下面的catalina.sh添加以下配置
export JAVA_HOME=/usr/java/jdk1.8.0_151
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.32/bin/catalina.sh start
#编辑/etc/rc.d/rc.local配置文件
/usr/local/tomcat/apache-tomcat-8.5.32/bin/startup.sh
#给/etc/rc.d/rc.local加上执行权限,这个很重要,别忘了!否则不会执行!
chmod u+x /etc/rc.d/rc.local
优化
#在/usr/local/tomcat/apache-tomcat-8.5.32/bin/catalina.sh新增如下一行:
JAVA_OPTS="-XX:MaxPermSize=192M -Xms1000M -Xmx2000M"
验证
关闭服务器,重启观察是否正常开机自启动?
下载redis传送门
下载
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
配置编译环境:
sudo yum install gcc-c++
解压
tar -xzvf redis-4.0.10.tar.gz
编译
#进入redis的解压目录
make install
编辑配置文件
vim /usr/local/redis/redis.conf
① 在bind 127.0.0.1修改为bind 0.0.0.0(设置为可以远程访问)
② 默认为保护模式,把 protected-mode yes 改为 protected-mode no
③ 默认为不守护进程模式,把daemonize no 改为daemonize yes(后台启动)
④ 将 requirepass foobared前的“#”去掉,密码改为你想要设置的密码(我为了练习用,设置为123456)
⑤ 可以改rdb的文件位置dir ./改为 dir /usr/redis/db(你的rdb目录)
⑥ 可以改redis的日志文件位置logfile "",改为logfile "redis6379.log"
⑦ 保存
redis开机启动设置方式
这个是补充的,可以进去设置redis启动的方式,下面的启动方式貌似没有指定redis的配置文件,我就使用了下面文章的配置(开机启动方式)
redis的三种启动方式
跟随系统启动
./usr/local/java/redis-4.0.10/utils/install_server.sh
Redis服务查看、开启、关闭:
a.通过ps -ef|grep redis命令查看Redis进程
b.开启Redis服务操作通过/etc/init.d/redis_6379 start命令,也可通过(service redis_6379 start)
c.关闭Redis服务操作通过/etc/init.d/redis_6379 stop命令,也可通过(service redis_6379 stop)
d.重启 /etc/init.d/redis_6379 restart
创建redis的软连接
# 相当于超链接
ln -s /usr/local/redis/redis-cli /usr/bin/redis
端口开启
vim /etc/sysconfig/iptables
增加
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
重启
systemctl restart iptables.service
验证
不报错就可以了
telnet ip 6379
下载nginx传送门
下载
wget http://dl.Fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
(ps:网上有一些源是不完全的,只是安装了简单的nginx,其他一些依赖并没有一起安装,导致配置文件不 全。请用这里的连接,完整可用。)
安装nginx
rpm -ivh epel-release-latest-7.noarch.rpm
yum install nginx
基础操作
systemctl enable nginx (加入开机启动)
systemctl start nginx (开启nginx)
systemctl status nginx (查看状态)
systemctl stop nginx (关闭nginx)
systemctl restart nginx (重启nginx)
nginx -s reload (重载配置文件-不会重启)
tenginx的基础命令
nginx 启动
nginx -s reload 重新启动
nginx -s stop 停止
ps -ef | grep nginx :查看nginx进程是否运行
netstat -unltp | grep nginx :查看nginx端口监听情况
nginx实现负载均衡
顾名思义就是将多个请求分发到不同的服务上,实现均衡的负载,减小单个服务的压力。
使用Nginx实现反向代理作用(代理域名解析不同端口)
$ vi /etc/nginx/nginx.conf (修改配置文件,全局配置文件)
修改实例
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
#(默认为自动,可以自己设置,一般不大于cpu核数)
worker_processes auto;
#(错误日志路径)
error_log /var/log/nginx/error.log;
#(pid文件路径)
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
#(设置网路连接序列化,防止惊群现象发生,默认为on)
accept_mutex on;
#(设置一个进程是否同时接受多个网络连接,默认为off)
multi_accept on;
#(一个进程的最大连接数)
worker_connections 1024;
}
http {
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;
sendfile on;
#(这里注释掉)
#tcp_nopush on;
tcp_nodelay on;
#(连接超时时间)
keepalive_timeout 65;
types_hash_max_size 2048;
#开启压缩
gzip on;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
# 这里设置负载均衡,负载均衡有多种策略,nginx自带的有轮询,权重,ip-hash,响应时间等策略。
# 默认为平分http负载,为轮询的方式。
# 权重则是按照权重来分发请求,权重高的负载大
# ip-hash,根据ip来分配,保持同一个ip分在同一台服务器上。
# 响应时间,根据服务器都nginx 的响应时间,优先分发给响应速度快的服务器。
#集中策略可以适当组合
upstream tomcat { #(tomcat为自定义的负载均衡规则名,可以自己定义)
ip_hash; #(ip_hash则为ip-hash方法)
server 192.168.14.132:8080 weight=5; #(weihgt为权重)
server 192.168.14.133:8080 weight=3;
## 可以定义多组规则
}
server {
#(默认监听80端口)
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 / {
# proxy_pass http://tomcat; (反向代理,填上你自己的负载均衡规则名)
# 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_connect_timeout 90; (下面这几个都只是一些超时设置,可不要)
#proxy_send_timeout 90;
#proxy_read_timeout 90;
}
# location ~\.(gif|jpg|png)$ { (比如,以正则表达式写)
# root /home/root/images;
# }
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # 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 {
# }
# }
}
反向代理作用
现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
配置实例
upstream tomcatserver1 {
server 192.168.72.49:8081;
}
upstream tomcatserver2 {
server 192.168.72.49:8082;
}
server {
listen 80;
server_name 8081.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver1;
index index.html index.htm;
}
}
server {
listen 80;
server_name 8082.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcatserver2;
index index.html index.htm;
}
}
配置讲解原文传送门
Nginx作为近年来较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。下面演示如何进行配置使Nginx发挥作用。