Java环境搭建
一、JDK(JRE)
- 下载官方jdk,下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,我们下载Java SE Development Kit 8u231这个版本(jdk1.8)
- 下载完后存放到Linux的/usr/local目录下,并进行解压
cd /usr/local
tar -zxf jdk-8u231-linux-x64.tar.gz
- 配置JAVA环境变量
#打开文件进行配置
vim /etc/profile
#在文件末尾添加
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export JAVA_HOME=/usr/local/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
#JDK1.8或以上不用配置
export CLASS_PATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#保存并刷新文件, 让环境变量生效
source /etc/profile
- 验证JDK安装是否
java -version
二、 安装SSL相关组件,安装Tomcat
去官网下载最新tar.gz版本,并存放到/usr/local目录下。下载地址:https://tomcat.apache.org/download-90.cgi
#安装SSL相关组件
yum install -y openssl openssl-devel
#解压Tomcat
tar -zxf apache-tomcat-9.0.21.tar.gz
#启动Tomcat
./startup.sh
#记得关闭防火墙 如果使用阿里云服务器,需要在阿里云控制台上开启8080端口
systemctl stop firewalld.service
三、安装Mysql
- 卸载mariadb数据库
#查看mariadb数据库
rpm -qa | grep mariadb
#卸载mariadb数据库: rpm -e --nodeps mariadb文件名, 如:
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
- 卸载已安装的mysql
#查看 mysql 数据库
rpm -qa | grep -i mysql
#卸载 mysql 数据库
rpm -e mysql文件名
# 如果有关联文件,不能直接卸载。可以用一下命令强制卸载:rpm -e --nodeps mysql文件名)
rpm -e --nodeps mysql文件名
#删除etc目录下的my.cnf文件
rm /etc/my.cnf
#删除残留目录
find / -name mysql -print
#将上述的结果目录全部通过rm -rf命令删除掉.
# 安装基础软件
yum -y install openssl openssl-devel
yum -y install libaio libaio-devel
yum -y install perl perl-devel
yum -y install perl-JSON.noarch
yum -y install autoconf
#关闭selinux,进入到/etc/selinux/config文件,将SELINUX=enforcing 改为SELINUX=disabled
vim /etc/selinux/config
#重启
reboot
- 从MySql官网上下载最新的yum
repository版的rpm包,并存放到/usr/local目录下,下载地址:https://dev.mysql.com/downloads/repo/yum/
或者从MySql官网上下载最新的https://dev.mysql.com/downloads/mysql/
- 如果下载的是rpm包,则安装刚下载的rpm包,然后下载mysql-server
yum -y localinstall mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server
- 如果下载的是tar包,则进行解压后逐个安装
#解压
tar -xvf mysql-8.0.18-1.el7.x86_64.rpm-bundle.tar
#移除所有已安装的mysql依赖,安装过程未报依赖错误时不用执行此句
yum remove mysql-*
#严格按照下面的顺序逐个安装
rpm -ivh mysql-community-common-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm
#签名报错可在后面加上--force --nodeps
#rpm -ivh mysql-community-server-8.0.18-1.el7.x86_64.rpm --force --nodeps
- 修改MySQL的my.cnf配置文件
vim /etc/my.cnf
#修改如下
[mysqld]
port=3306 #mysql默认的端口就是3306
max_connections=200 #最大连接数
default-authentication-plugin=mysql_native_password #设置mysql8版本的数据库的密码加密方式
datadir=/var/lib/mysql #存放数据库的数据的目录地址
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
- 如果是tar包形式安装,需要进行初始化和授权
mysqld --initialize --console
chown -R mysql:mysql /var/lib/mysql/
- 启动mysql服务
systemctl start mysqld.service
- 查询初始密码
cat /var/log/mysqld.log | grep password
- 使用初始密码修改数据库密码
#登录数据库
mysql -uroot -p+OAZhk/yo8ty
#降低密码策略
SET GLOBAL validate_password.policy=0;
#设置新密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOUR_PASSWORD';
#开启远程连接
mysql> use mysql;
mysql> update user set host='%' where user='root';
mysql> flush privileges;
mysql> exit;
#提交
flush privileges;
#退出并重启重启mysql
systemctl restart mysqld.service
四、安装nginx
- 安装gcc环境、perl库、zlib、openssl等
#nginx编译依赖gcc环境
yum install -y gcc-c++
#pcre:(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式
yum install -y pcre pcre-devel
#该库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel
#一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http)
yum install -y openssl openssl-devel
#重启
reboot
- 官网下载最新的nginx源码包, 上传至Linux服务器中的/usr/local文件下。下载地址:http://nginx.org/
并解压
tar -zxf nginx-1.14.2.tar.gz
cd nginx-1.14.2
- 编译并安装
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
make
make install
- 检查安装有效性
#显示安装Nginx的路径, 会发现安装目录是/usr/local/nginx
whereis nginx
cd /usr/local/nginx/
- 编辑nginx的配置文件,进行优化,参考优化配置文件如下
#编辑nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
#查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
#参考如下:
user root;
worker_processes 4;
worker_rlimit_nofile 102400;
events {
use epoll;
worker_connections 65535;
multi_accept on;
}
http {
access_log off;
error_log /dev/null;
server_tokens off;
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
reset_timedout_connection on;
gzip on;
gzip_min_length 2k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain text/javascript text/xml text/css application/json application/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6]\."
gzip_vary on;
gzip_proxied any;
tcp_nopush on;
tcp_nodelay on;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 16;
proxy_connect_timeout 8s;
proxy_send_timeout 8s;
proxy_read_timeout 8s;
send_timeout 3s;
upstream {name} {
server 192.168.1.0:9001 max_fails=5 fail_timeout=30s weight=1;
server 192.168.1.1:9001 max_fails=5 fail_timeout=30s weight=1;
server 192.168.1.2:9001 max_fails=5 fail_timeout=30s weight=1;
}
server {
listen 80;
listen 443 ssl;
server_name localhost;
ssl_certificate cert/214600202240691.pem;
ssl_certificate_key cert/214600202240691.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
proxy_set_header host $host;
proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://{name};
}
}
server {
listen 8080;
server_name localhost;
location / {
root {path};
}
}
}
- 验证Nginx配置文件的有效性
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
#如果出现如下提示, 则表示配置文件有效。
#nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
#nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
- 进入nginx的sbin目录下, 并(启动|重新加载|退出)Nginx
cd /usr/local/nginx/sbin
#启动Nginx
./nginx -c /usr/local/nginx/conf/nginx.conf
#停止Nginx
./nginx -s quit
#重新加载配置文件
./nginx -s reload
#拓展
- nginx的日志按照天切割
#在你喜欢的某个目录中创建split_nginx_log.sh
vim split_nginx_log.sh
#输入如下脚本,然后保存退出
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/
PID=/usr/local/nginx/logs/nginx.pid
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
kill -USR1 `cat ${PID}`
#修改此文件的权限
chmod +x ./split_nginx_log.sh
#建立定时任务,并输入任务脚本(如:每天凌晨00:00定时执行该脚本)
#编辑定时任务
crontab -e
#输入任务脚本
00 00 * * * /bin/bash /usr/local/nginx/split_nginx_log.sh
- nginx常用日志查询
#查询访问最频繁的URL
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more
#查看访问者ip以及该ip下访问的总次数. 在logs文件夹下执行如下代码。得到的结果中,第一段为访问次数, 第二段为对应的ip
awk '{print $1}' access.log |sort |uniq -c|sort -n
- nginx配置黑名单
#在nginx中的conf文件夹下新建一个黑名单ip文件, 命名为blacklist.conf,以后新增加黑名单ip只需编辑这个文件即可。 加入如下内容
deny 120.27.XX.XX;
#在nginx的配置文件nginx.conf中加入如下配置,可以放到http, server, location, limit_except语句块中.
include blacklist.conf;
#重新加载nginx
./nginx -s reload
引自:Pegasus