杨海振
当自己的才华撑不起野心时,那就沉下心来学习吧!
随笔 - 15,  文章 - 0,  评论 - 0,  阅读 - 8669

环境描述:虚拟机准备两台,一台作为nginx服务器+mysql服务器,IP为:192.168.20.68;另外一台作为2台Tomcat服务器,IP为:192.168.20.69。客户端发来请求,首先由nginx处理,如果为静态内容直接由nginx响应,将结果直接给客户端;如果为动态内容,则由nginx反代至后端的Tomcat服务器。

一、优化步骤

1.1. 配置yum仓库
rm -f /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
1.2. 安装基础软件包
yum install net-tools vim tree htop iftop \
iotop lrzsz sl wget unzip telnet nmap nc psmisc \
dos2unix bash-completion bash-completion-extras sysstat \
rsync nfs-utils httpd-tools -y
1.3.关闭防火墙firewalld
systemctl disable firewalld
systemctl stop firewalld
1.4. 关闭selinux
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
1.5. 调整单个进程最大能打开文件的数量
echo '* - nofile 65535' >> /etc/security/limits.conf

2. 基于优化后的虚拟机进行克隆

连接克隆(需要依赖于母体)
完整克隆(完完全全的复制一份,占用磁盘空间)
2.1. 对新克隆后的主机进行如下操作:
修改主机名 hostnamectl set-hostname backup
修改IP地址 sed -i 's#200#41#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
删除UUID:sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth[01]
重启服务器

3.密钥对的生成

ssh-keygen
3.1. 一键非交互式创建密钥(可用于自动化部署的)的方法
ssh-keygen -t dsa -P '' -f ~/.ssh/id_rsa > /dev/null 2>&1
或
echo -e "\n" | ssh-keygen -t dsa -N ""
3.2.分发公钥
ssh-copy-id -i ~/.ssh/id_rsa.pub IP

//在IP为192.168.20.68的服务器上安装和配置nginx关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config

二、创建系统用户nginx

useradd -r -M -s /sbin/nologin nginx
1.1. 安装依赖环境
yum -y install pcre-devel openssl openssl-devel gd-devel
yum -y groups install 'Development Tools'
1.2. 创建日志存放目录
mkdir -p /var/log/nginx
chown -R nginx.nginx /var/log/nginx/
1.3. 下载nginx
cd /usr/src/
[root@server src]# wget http://nginx.org/download/nginx-1.14.0.tar.gz
1.4. 编译
[root@server ~]# cd /usr/src/
[root@server src]# ls
debug  kernels  nginx-1.14.0.tar.gz
[root@server src]# tar xf nginx-1.12.0.tar.gz
[root@server src]# cd nginx-1.14.0
[root@server nginx-1.14.0]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
[root@server nginx-1.14.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
1.5. 安装
[root@server nginx-1.14.0]# make -j 2 && make install
1.6. nginx安装后配置配置环境变量
[root@server nginx-1.14.0]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@server nginx-1.14.0]#  source /etc/profile.d/nginx.sh

//注:

[root@nginx-server nginx-1.12.0]# echo $PATH
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
1.7. 启动nginx
[root@server nginx-1.14.0]# nginx
[root@server nginx-1.14.0]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128     *:80                  *:*                  

三、安装mysql

1.1. 安装依赖包
[root@server ~]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel
1.2. 创建用户和组
[root@server ~]# groupadd mysql
[root@server ~]# useradd -r -g mysql -s /sbin/nologin mysql
1.3. 下载二进制格式的mysql软件包
[root@server ~]# cd /usr/src/
[root@server src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
1.4. 解压软件至/usr/local
[root@server src]#  tar xf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz -C  /usr/local/
[root@server src]# cd /usr/local/
[root@server local]#ln -sv mysql-5.7.32-linux-glibc2.12-x86_64/ mysql
mysql -> mysql-5.7.32-linux-glibc2.12-x86_64/
[root@server local]# ll
lrwxrwxrwx.  1 root root  36 96 17:30 mysql -> mysql-5.7.22-linux-glibc2.12-x86_64/
1.5. 修改目录/usr/local/mysql的属主属组
[root@server local]# chown -R mysql.mysql /usr/local/mysql
[root@server local]# ll /usr/local/mysql -d
lrwxrwxrwx. 1 mysql mysql 36 96 17:30 /usr/local/mysql -> mysql-5.7.22-linux-glibc2.12-x86_64/
1.6. 添加环境变量
[root@server local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@server local]# source /etc/profile.d/mysql.sh
[root@server local]#  echo $PATH
/usr/local/mysql/bin:/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
1.7. 建立数据存放目录
[root@server local]# mkdir -p /opt/data
[root@server local]# chown -R mysql.mysql /opt/data/
[root@server local]#  ll /opt/
总用量 0
drwxr-xr-x. 2 mysql mysql 6 96 17:34 data
1.8. 初始化数据库
[root@server local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/
1.9. 配置mysql
[root@server local]# ln -sv /usr/local/mysql/include/ /usr/local/include/mysql
"/usr/local/include/mysql" -> "/usr/local/mysql/include/"
[root@server local]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@server local]#  ldconfig -v
1.10. 生成配置文件
[root@mysql-server local]# cp /etc/my.cnf /etc/my.cnf.bak
[root@server local]# cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket  = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
EOF
1.11. 配置服务启动脚本
[root@server local]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@server local]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
[root@server local]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /etc/init.d/mysqld
1.12. 启动mysql
[root@server local]# service mysqld start
Starting MySQL.Logging to '/opt/data/server.err'.
... SUCCESS!
[root@server local]# ps -ef | grep mysql
root      42077      1  0 17:57 pts/2    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/opt/data --pid-file=/opt/data/mysql.pid
mysql     42255  42077 15 17:57 pts/2    00:00:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/opt/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=server.err         --pid-file=/opt/data/mysql.pid --socket=/tmp/mysql.sock --port=3306
root      42291   4672  0 17:57 pts/2    00:00:00 grep --color=auto mysql

[root@server local]# ss -antl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      80     :::3306               :::*                  
1.13. 修改密码,使用临时密码登录
[root@server local]# mysql -uroot -p
Enter password:

mysql> set password = password('server123');
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> \q
Bye

四、Tomcat安装

//在虚拟机配置两台tomcat项目部署

1. 关闭防火墙和selinux

[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl disable firewalld
[root@server ~]#  setenforce 0
[root@server ~]# sed -ri 's/^(SELINUX=).*/\1disabled/g' /etc/selinux/config

2. Java环境安装

2.1. 安装jdk环境

https://blog.csdn.net/ajavaer/article/details/85107097?ops_request_misc=&request_id=&biz_id=102&utm_term=lnmt+redis&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-5-.pc_search_result_before_js&spm=1018.2226.3001.4187

[root@server ~]# mkdir /home/java/jdk
[root@server home]# cd /home/java/jdk
2.2. 将压缩包进行解压
[root@server jdk]#  tar -zxvf jdk-8u191-linux-i586.tar.gz
2.3. 进行环境配置
vi  /etc/profile
export JAVA_HOME=/home/java/jdk/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java -version

3. tomcat部署

3.1. 下载tomcat
[root@server ~]# cd /usr/src/
[root@server src]#  wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.29/bin/apache-tomcat-9.0.29.tar.gz
3.2. 创建tomcat存放目录
[root@server src]# cd /usr/local/
[root@server local]# mkdir tomacat{1,2}
[root@server local]# ls
bin  games    lib    libexec  sbin   src       tomacat2
etc  include  lib64  nginx    share  tomacat1
3.3. 将tomcat解压存放目录
[root@server local]# cd /usr/src/
[root@server src]# ls
apache-tomcat-9.0.8.tar.gz  debug  kernels
[root@server src]# tar xf apache-tomcat-9.0.8.tar.gz -C  /usr/local/tomacat1
[root@server src]# tar xf  apache-tomcat-9.0.8.tar.gz -C  /usr/local/tomacat2
3.4. 创建软连接
[root@server src]# cd /usr/local/tomacat1
[root@server tomacat1]# ln -s apache-tomcat-9.0.8/  tomcat1
[root@server tomacat1]# ll
总用量 0
drwxr-xr-x. 9 root root 160 95 21:52 apache-tomcat-9.0.8
lrwxrwxrwx. 1 root root  20 95 21:54 tomcat1 -> apache-tomcat-9.0.8/
[root@server tomacat1]# cd /usr/local/tomacat2
[root@server tomacat2]# ln -s apache-tomcat-9.0.8/ tomcat2
[root@server tomacat2]# ll
总用量 0
drwxr-xr-x. 9 root root 160 95 21:52 apache-tomcat-9.0.8
lrwxrwxrwx. 1 root root  20 95 21:55 tomcat2-> apache-tomcat-9.0.8/
3.5. 创建测试目录并创建测试文件
[root@server ~]#  mkdir  /usr/local/tomacat1/tomcat1/webapps/test
[root@server ~]# mkdir  /usr/local/tomacat2/tomcat2/webapps/test
[root@server ~]# cd /usr/local/tomacat1/tomcat1/webapps/test
[root@server test]# vi index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
[root@server test]# cd /usr/local/tomacat2/tomcat2/webapps/test
[root@server test]# vi index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("8888888888");
%>
</body>
</html>
3.6. 修改tomcat2的端口,否则端口起冲突。配置文件为:server.xml
[root@server ~]# cd /usr/local/tomacat2/tomcat2/
[root@server tomcat2]# ls
bin   lib      logs    RELEASE-NOTES  temp     work
conf  LICENSE  NOTICE  RUNNING.txt    webapps
[root@server tomcat2]# cd conf/
[root@server conf]# ls
catalina.policy       jaspic-providers.xsd  tomcat-users.xsd
catalina.properties   logging.properties    web.xml
context.xml           server.xml
jaspic-providers.xml  tomcat-users.xml

[root@server conf]# vi server.xml
[root@server conf]# /usr/local//tomacat1/tomcat1/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomacat1/tomcat1
Using CATALINA_HOME:   /usr/local/tomacat1/tomcat1
Using CATALINA_TMPDIR: /usr/local/tomacat1/tomcat1/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomacat1/tomcat1/bin/bootstrap.jar:/usr/local/tomacat1/tomcat1/bin/tomcat-juli.jar
Tomcat started.
[root@server conf]# /usr/local//tomacat2/tomcat2/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomacat2/tomcat2
Using CATALINA_HOME:   /usr/local/tomacat2/tomcat2
Using CATALINA_TMPDIR: /usr/local/tomacat2/tomcat2/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomacat2/tomcat2/bin/bootstrap.jar:/usr/local/tomacat2/tomcat2/bin/tomcat-juli.jar
Tomcat started.

//输入192.168.20.69:8080 访问
配置nginx

//输入192.168.20.69:8080/test 访问

//第二台tomcat
//输入192.168.20.69:8081访问

3.7. 在nginx配置文件修改配置文件,配置负载均衡和两个tomcat的反向代理
sendfile        on;
keepalive_timeout  65;

    upstream web {   //添加此内容,实现负载均衡
      server 192.168.228.30:8080;
      server 192.168.228.30:8081;
    }

server {
    listen       80;
    server_name  localhost;


    location / {
        root   html;
        index  index.html index.htm;
    }

    location ~* \.(jsp|do)$ {    \\添加此行内容,实现动静分离
         proxy_pass http://web;
    }
3.8. 检查语法并加载nginx
[root@server local]# vim /usr/local/nginx/conf/nginx.conf
[root@server local]# nginx -t
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
[root@server local]# nginx -s reload

五、安装Redis

5.1. 下载redis安装包
[root@server ~]# mkdir /home/redis
[root@server ~]# cd /home/redis
[root@server redis]# wget http://download.redis.io/releases/redis-4.0.6.tar.gz
5.2. yum安装gcc依赖
yum install gcc
5.3. 解压压缩包
[root@server redis]# tar -xzvf redis-4.0.6.tar.gz 
5.4. 编译安装
[root@server redis]# cd redis-4.0.6/
[root@server redis-4.0.6]# make MALLOC=libc
5.5. 将redis目录下的文件加到/usr/local/bin目录
[root@server redis-4.0.6]# cd src && make install
5.6. 修改redis的启动方式为后台启动,打开redis配置文件
[root@server redis-4.0.6]# vi /home/redis/redis-4.0.6/redis.conf

将
daemonize no
修改为
daemonize yes
5.7. 在配置文件redis.conf中,默认的bind 接口是127.0.0.1,也就是本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接,如果需要修改支持远程连接,则修改配置文件的bind 127.0.0.1改为bind 0.0.0.0

//修改完配置文件后,启动redis

cd /home/redis/redis-4.0.6/src
[root@server src]# ./redis-server ../redis.conf
posted on   沧海浮尘  阅读(198)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示