Linux安装jdk,mysql,tomcat,redis和nginx

Linux安装jdk,mysql,tomcat,redis和nginx

首先安装lrzsz: yum -y install lrzsz

1. jdk

下载地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
在这里插入图片描述

下载的包丢在/usr/local/java里,解压配置环境

[root@localhost /]# cd /usr/local/
[root@localhost local]# ll
总用量 366304
drwxr-xr-x. 2 root root         6 411 2018 bin
drwxr-xr-x. 2 root root         6 411 2018 etc
drwxr-xr-x. 2 root root         6 411 2018 games
drwxr-xr-x. 2 root root         6 411 2018 include
drwxr-xr-x. 2 root root         6 1121 16:59 java
-rw-r--r--. 1 root root 179953682 1120 13:28 jdk-11.0.5_linux-x64_bin.tar.gz
-rw-r--r--. 1 root root 194151339 1121 16:17 jdk-8u231-linux-x64.tar.gz
drwxr-xr-x. 2 root root         6 411 2018 lib
drwxr-xr-x. 2 root root         6 411 2018 lib64
drwxr-xr-x. 2 root root         6 411 2018 libexec
drwxr-xr-x. 2 root root         6 1121 17:00 mysql
-rw-r--r--. 1 root root    983040 1121 16:51 mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
drwxr-xr-x. 2 root root         6 411 2018 sbin
drwxr-xr-x. 5 root root        49 1122 00:19 share
drwxr-xr-x. 2 root root         6 411 2018 src
drwxr-xr-x. 2 root root         6 1121 17:00 tomcat
[root@localhost local]# mkdir java
[root@localhost local]# cd java
[root@localhost java]# ll
总用量 175740
-rw-r--r--. 1 root root 179953682 1120 13:28 jdk-11.0.5_linux-x64_bin.tar.gz
[root@localhost java]# tar -zxvf jdk-11.0.5_linux-x64_bin.tar.gz
jdk-11.0.5/README.html
jdk-11.0.5/bin/jaotc
jdk-11.0.5/bin/jar
jdk-11.0.5/bin/jarsigner
...
jdk-11.0.5/release
[root@localhost java]# ll
总用量 175740
drwxr-xr-x. 8 root root       115 1122 14:57 jdk-11.0.5
-rw-r--r--. 1 root root 179953682 1120 13:28 jdk-11.0.5_linux-x64_bin.tar.gz
[root@localhost java]#  rm -rf jdk-11.0.5_linux-x64_bin.tar.gz
[root@localhost java]# ll
总用量 0
drwxr-xr-x. 8 root root 115 1122 14:57 jdk-11.0.5
[root@localhost java]# vim /etc/profile

HOSTNAME=`/usr/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge

export JAVA_HOME=/usr/local/java/jdk-11.0.5
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin


[root@localhost java]# source /etc/profile
[root@localhost java]# java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)

2. mysql

下载地址:https://dev.mysql.com/downloads/mysql/5.7.html

【mysql最新安装教程,看最新的吧,我也是参照他们的】:
https://www.jianshu.com/p/276d59cbc529
https://www.cnblogs.com/fanshudada/p/9781794.html

在这里插入图片描述

下载官网的安装包,上传的/usr/local/mysql/,解压rpm包,安装rpm包,启动服务,修改密码

[root@localhost mysql]# rz

[root@localhost mysql]# ll
总用量 595272
-rw-r--r--. 1 root root 609556480 1120 14:57 mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

[root@localhost mysql]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar 
mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-test-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-server-5.7.28-1.el7.x86_64.rpm

[root@localhost mysql]# ll
总用量 1190544
-rw-r--r--. 1 root root  609556480 1120 14:57 mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
-rw-r--r--. 1 7155 31415  45109364 930 16:04 mysql-community-client-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415    318768 930 16:04 mysql-community-common-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   7037096 930 16:04 mysql-community-devel-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415  49329100 930 16:04 mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415  23354908 930 16:04 mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 136837816 930 16:04 mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   4374364 930 16:04 mysql-community-libs-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415   1353312 930 16:04 mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 208694824 930 16:05 mysql-community-server-5.7.28-1.el7.x86_64.rpm
-rw-r--r--. 1 7155 31415 133129992 930 16:05 mysql-community-test-5.7.28-1.el7.x86_64.rpm

[root@localhost mysql]# rpm -ivh mysql-community-* --force --nodeps
警告:mysql-community-client-5.7.28-1.el7.x86_64.rpm:V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:mysql-community-common-5.7.28-1.e################################# [ 10%]
   2:mysql-community-libs-5.7.28-1.el7################################# [ 20%]
   3:mysql-community-client-5.7.28-1.e################################# [ 30%]
   4:mysql-community-server-5.7.28-1.e################################# [ 40%]
   5:mysql-community-devel-5.7.28-1.el################################# [ 50%]
   6:mysql-community-embedded-5.7.28-1################################# [ 60%]
   7:mysql-community-embedded-devel-5.################################# [ 70%]
   8:mysql-community-test-5.7.28-1.el7################################# [ 80%]
   9:mysql-community-libs-compat-5.7.2################################# [ 90%]
  10:mysql-community-embedded-compat-5################################# [100%]

[root@localhost ~]# chown mysql:mysql -R /var/lib/mysql
[root@localhost ~]# mysqld --initialize

[root@localhost mysql]# systemctl start mysqld

[root@localhost mysql]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2019-11-22 16:37:42 CST; 5s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 21826 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 21771 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 21829 (mysqld)
    Tasks: 27
   CGroup: /system.slice/mysqld.service
           └─21829 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

1122 16:37:38 localhost.localdomain systemd[1]: Starting MySQL Server...
1122 16:37:42 localhost.localdomain systemd[1]: Started MySQL Server.
[root@localhost mysql]# mysqladmin --version
mysqladmin  Ver 8.42 Distrib 5.7.28, for Linux on x86_64


[root@localhost mysql]# grep 'temporary password' /var/log/mysqld.log
2019-11-22T08:37:40.517483Z 1 [Note] A temporary password is generated for root@localhost: A#eK/PrrI6fs

[root@localhost mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.28

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> alter user 'root'@'localhost' identified by 'myroot123.';
Query OK, 0 rows affected (0.01 sec)

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

mysql> set global validate_password_number_count=3;
Query OK, 0 rows affected (0.00 sec)

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

mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> grant all privileges on *,* to 'root' @'%' identified by 'root';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)


  • Mysql服务加入到系统服务并自动启动操作:
    chkconfig --add mysql
    自动启动:
    chkconfig mysql on
    查询列表:
    chkconfig

  • 关于mysql远程访问设置
    在linux中很多软件的端口都被”防火墙”限制,我们需要将防火墙关闭
    防火墙打开3306端口
    /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
    /etc/rc.d/init.d/iptables save
    /etc/init.d/iptables status
    学习阶段直接将防火墙关闭
    service iptables stop;

5.7.30版本的安装

[root@iZ2ze40xad79x6oeye6f2jZ mysql5.7]# tar zxvf  mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz 
mysql-5.7.30-linux-glibc2.12-x86_64/bin/myisam_ftdump
...
mysql-5.7.30-linux-glibc2.12-x86_64/docs/INFO_SRC

[root@iZ2ze40xad79x6oeye6f2jZ mysql5.7]# ll
total 644552
drwxr-xr-x 9 root  root        129 May 18 22:01 mysql-5.7.30-linux-glibc2.12-x86_64
-rw-r--r-- 1 mysql mysql 660017902 May 18 21:45 mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

[root@iZ2ze40xad79x6oeye6f2jZ mysql5.7]# mv mysql-5.7.30-linux-glibc2.12-x86_64 ../mysql
[root@iZ2ze40xad79x6oeye6f2jZ mysql5.7]# cd ..
[root@iZ2ze40xad79x6oeye6f2jZ local]# ll
total 0
drwxr-xr-x  7 mysql mysql 160 May 11 04:33 aegis
drwxr-xr-x. 2 mysql mysql 218 Feb 18 16:10 bin
...
drwxr-xr-x  9 root  root  129 May 18 22:01 mysql
drwxr-xr-x  2 mysql mysql  56 May 18 22:11 mysql5.7
...
drwxr-xr-x. 2 mysql mysql   6 May 11  2019 src
drwxr-xr-x  3 mysql mysql  69 May 18 16:57 tomcat

[root@iZ2ze40xad79x6oeye6f2jZ local]# cd mysql
[root@iZ2ze40xad79x6oeye6f2jZ mysql]# ll
total 288
drwxr-xr-x  2 root root    4096 May 18 22:01 bin
drwxr-xr-x  2 root root      55 May 18 22:01 docs
drwxr-xr-x  3 root root    4096 May 18 22:01 include
drwxr-xr-x  5 root root     230 May 18 22:01 lib
-rw-r--r--  1 7161 31415 275235 Mar 24 01:35 LICENSE
drwxr-xr-x  4 root root      30 May 18 22:01 man
-rw-r--r--  1 7161 31415    587 Mar 24 01:35 README
drwxr-xr-x 28 root root    4096 May 18 22:01 share
drwxr-xr-x  2 root root      90 May 18 22:01 support-files
[root@iZ2ze40xad79x6oeye6f2jZ mysql]# groupadd mysql 
groupadd: group 'mysql' already exists
[root@iZ2ze40xad79x6oeye6f2jZ mysql]# useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql
useradd: user 'mysql' already exists
[root@iZ2ze40xad79x6oeye6f2jZ mysql]# chown -R mysql.mysql /usr/local/mysql/

[root@iZ2ze40xad79x6oeye6f2jZ mysql]#  wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm 
--2020-05-18 22:16:11--  http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
Resolving mirror.centos.org (mirror.centos.org)... 147.75.93.107, 2401:78c0::e00e
...
	file /lib64/libaio.so.1.0.1 from install of libaio-0.3.107-10.el6.x86_64 conflicts with file from package libaio-0.3.112-1.el8.x86_64
[root@iZ2ze40xad79x6oeye6f2jZ mysql]# rm -rf data/

[root@iZ2ze40xad79x6oeye6f2jZ bin]# ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
2020-05-18T14:30:51.068891Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-05-18T14:30:52.122664Z 0 [Warning] InnoDB: New log files created, LSN=45790
...
2020-05-18T14:30:53.157136Z 1 [Note] A temporary password is generated for root@localhost: KCa5ratfao)y

[root@iZ2ze40xad79x6oeye6f2jZ bin]# vi /etc/my.cnf

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

[mysqld]
datadir=/usr/local/mysql/data
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=400
innodb_file_per_table=1
#表名大小写不明感,敏感为
lower_case_table_names=1


[root@iZ2ze40xad79x6oeye6f2jZ bin]# /usr/local/mysql/support-files/mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/data/iZ2ze40xad79x6oeye6f2jZ.err'.
                                                           [  OK  ]
[root@iZ2ze40xad79x6oeye6f2jZ bin]# ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 
[root@iZ2ze40xad79x6oeye6f2jZ bin]# ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
[root@iZ2ze40xad79x6oeye6f2jZ bin]# service mysql restart
Shutting down MySQL..                                      [  OK  ]
Starting MySQL.                                            [  OK  ]

[root@iZ2ze40xad79x6oeye6f2jZ bin]#  mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 84
Server version: 5.7.30

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set password for root@localhost = password('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set user.Host='%' where user.User='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye

[root@iZ2ze40xad79x6oeye6f2jZ bin]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@iZ2ze40xad79x6oeye6f2jZ bin]# chmod +x /etc/init.d/mysqld
[root@iZ2ze40xad79x6oeye6f2jZ bin]# chkconfig --add mysqld
[root@iZ2ze40xad79x6oeye6f2jZ bin]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

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

3. tomcat

下载地址: https://tomcat.apache.org/download-90.cgi

在这里插入图片描述

官网下载压缩包,在/usr/local创建tomcat文件夹,导入解压包,解压文件,进入bin文件目录启动服务,浏览器查看服务是否启动

[root@localhost tomcat]# rz                                              
 
[root@localhost tomcat]# ll
总用量 10752
-rw-r--r--. 1 root root 11007394 1122 17:19 apache-tomcat-9.0.29.tar.gz

[root@localhost tomcat]# tar -zxvf apache-tomcat-9.0.29.tar.gz 
apache-tomcat-9.0.29/conf/
apache-tomcat-9.0.29/conf/catalina.policy
apache-tomcat-9.0.29/conf/catalina.properties
...
apache-tomcat-9.0.29/bin/version.sh

[root@localhost tomcat]# ll
总用量 10752
drwxr-xr-x. 9 root root      220 1122 17:20 apache-tomcat-9.0.29
-rw-r--r--. 1 root root 11007394 1122 17:19 apache-tomcat-9.0.29.tar.gz

[root@localhost tomcat]# cd apache-tomcat-9.0.29/
[root@localhost apache-tomcat-9.0.29]# ll
总用量 124
drwxr-x---. 2 root root  4096 1122 17:20 bin
-rw-r-----. 1 root root 18982 1117 01:32 BUILDING.txt
drwx------. 2 root root   238 1117 01:32 conf
-rw-r-----. 1 root root  5408 1117 01:32 CONTRIBUTING.md
drwxr-x---. 2 root root  4096 1122 17:20 lib
-rw-r-----. 1 root root 57092 1117 01:32 LICENSE
drwxr-x---. 2 root root     6 1117 01:29 logs
-rw-r-----. 1 root root  2333 1117 01:32 NOTICE
-rw-r-----. 1 root root  3255 1117 01:32 README.md
-rw-r-----. 1 root root  6849 1117 01:32 RELEASE-NOTES
-rw-r-----. 1 root root 16262 1117 01:32 RUNNING.txt
drwxr-x---. 2 root root    30 1122 17:20 temp
drwxr-x---. 7 root root    81 1117 01:30 webapps
drwxr-x---. 2 root root     6 1117 01:29 work
[root@localhost apache-tomcat-9.0.29]# cd bin
[root@localhost bin]# ll
总用量 864
-rw-r-----. 1 root root  35062 1117 01:30 bootstrap.jar
-rw-r-----. 1 root root  15953 1117 01:30 catalina.bat
-rwxr-x---. 1 root root  23595 1117 01:30 catalina.sh
-rw-r-----. 1 root root   1664 1117 01:32 catalina-tasks.xml
...

-rwxr-x---. 1 root root   1908 1117 01:30 version.sh

[root@localhost bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/tomcat/apache-tomcat-9.0.29
Using CATALINA_HOME:   /usr/local/tomcat/apache-tomcat-9.0.29
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-9.0.29/temp
Using JRE_HOME:        /usr/local/java/jdk-11.0.5
Using CLASSPATH:       /usr/local/tomcat/apache-tomcat-9.0.29/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-9.0.29/bin/tomcat-juli.jar
Tomcat started.

4. redis

下载地址:https://redis.io/download
在这里插入图片描述

yum install gcc-c++
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar xzf redis-5.0.7.tar.gz
cd redis-5.0.7
make

【步骤一】安装gcc-c++
redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。
输入命令:
yum install gcc-c++

【步骤二】安装redis
1.下载redis
wget http://download.redis.io/releases/redis-5.0.7.tar.gz

2.解压
tar xzf redis-5.0.7.tar.gz
3.编译安装、
切换至程序目录,并执行make命令编译:
cd redis-5.0.7
make

执行安装命令
make PREFIX=/usr/local/redis install
make install安装完成后,会在/usr/local/bin目录下生成下面几个可执行文件,它们的作用分别是:
redis-server:Redis服务器端启动程序
redis-cli:Redis客户端操作工具。也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具
redis-check-aof:数据修复工具
redis-check-dump:检查导出工具

【步骤三】配置redis
1.复制配置文件到/usr/local/redis/bin目录:
cd redis-5.0.7
cp redis.conf /usr/local/redis/bin

【步骤四】启动redis
1.进入redis/bin目录
cd redis/bin

启动redis服务端
./redis-server redis.conf

2.克隆新窗口,启动redis客户端
./redis-cli

5. nginx

1 下载地址: http://nginx.org/en/download.html

在这里插入图片描述

2.1 什么是Nginx
Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。

Nginx 应用场景:
1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。

2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

3、反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

2.2 Nginx在Linux下的安装
重新准备一台虚拟机作为服务器。比如IP地址为192.168.177.129

2.2.1环境准备
(1)需要安装 gcc 的环境
yum install gcc-c++
(2)第三方的开发包。

  • PCRE
    PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。
    yum install -y pcre pcre-devel
    注:pcre-devel 是使用 pcre 开发的一个二次开发库。nginx 也需要此库。

  • zlib
    zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。
    yum install -y zlib zlib-devel

  • OpenSSL
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。
    yum install -y openssl openssl-devel

2.2.2 Nginx下载
官方网站下载 nginx:http://nginx.org/
我们课程中使用的版本是 1.8.0 版本。

2.2.3 Nginx安装
第一步:把 nginx 的源码包nginx-1.8.0.tar.gz上传到 linux 系统
第二步:解压缩
tar zxvf nginx-1.8.0.tar.gz
第三步:进入nginx-1.8.0目录 使用 configure 命令创建一 makeFile 文件。

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

执行后可以看到Makefile文件

---- 知识点小贴士 ----
Makefile是一种配置文件, Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
---- 知识点小贴士 ----
configure参数

./configure \
--prefix=/usr \                                                        指向安装目录
--sbin-path=/usr/sbin/nginx \                                 指向(执行)程序文件(nginx)
--conf-path=/etc/nginx/nginx.conf \                      指向配置文件
--error-log-path=/var/log/nginx/error.log \              指向log
--http-log-path=/var/log/nginx/access.log \            指向http-log
--pid-path=/var/run/nginx/nginx.pid \                      指向pid
--lock-path=/var/lock/nginx.lock \                         (安装文件锁定,防止安装文件被别人利用,或自己误操作。)
--user=nginx \
--group=nginx \
--with-http_ssl_module \           启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)
--with-http_flv_module \           启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
--with-http_stub_status_module \     启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
--with-http_gzip_static_module \   启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
--http-client-body-temp-path=/var/tmp/nginx/client/ \ 设定http客户端请求临时文件路径
--http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 设定http代理临时文件路径
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 设定http fastcgi临时文件路径
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 设定http uwsgi临时文件路径
--http-scgi-temp-path=/var/tmp/nginx/scgi \ 设定http scgi临时文件路径
--with-pcre 启用pcre库

第四步:编译
make
第五步:安装
make install

2.3 Nginx启动与访问
注意:启动nginx 之前,上边将临时文件目录指定为/var/temp/nginx/client, 需要在/var 下创建此 目录
mkdir /var/temp/nginx/client -p
进入到Nginx目录下的sbin目录
cd /usr/local/nginx/sbin
输入命令启动Nginx
./nginx
启动后查看进程
ps aux|grep nginx

地址栏输入虚拟机的IP即可访问(默认为80端口)

关闭 nginx:
./nginx -s stop
或者
./nginx -s quit

重启 nginx:
1、先关闭后启动。
2、刷新配置文件:
./nginx -s reload

3.Nginx静态网站部署

3.1 静态网站的部署
将/资料/静态页面/index目录下的所有内容 上传到服务器的/usr/local/nginx/html下即可访问

3.2 配置虚拟主机
虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。虚拟主机技术极大的促进了网络技术的应用和普及。同时虚拟主机的租用服务也成了网络时代的一种新型经济形式。

3.2.1 端口绑定
(1)上传静态网站:
将/资料/静态页面/index目录上传至 /usr/local/nginx/index下
将/资料/静态页面/regist目录上传至 /usr/local/nginx/regist下
(2)修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf

server {
        listen       81; # 监听的端口
        server_name  localhost; # 域名或ip
        location / {	# 访问路径配置
            root   index;# 根目录
            index  index.html index.htm; # 默认首页
        }
        error_page   500 502 503 504  /50x.html;	# 错误页面
        location = /50x.html {
            root   html;
        }
    }


server {
   listen       82; # 监听的端口
   server_name  localhost; # 域名或ip
   location / {	# 访问路径配置
       root   regist;# 根目录
       index  regist.html; # 默认首页
   }
   error_page   500 502 503 504  /50x.html;	# 错误页面
   location = /50x.html {
       root   html;
   }
}

给出若依的配置文件:

注意:需要自己修改服务器的地址

worker_processes  1;


events {
    worker_connections  1024;
}


http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;


	server {
		listen 80; # 监听的端口
		server_name  127.0.0.1; # 域名或ip
		
		location / {	# 访问路径配置
			root /usr/local/ruoyi/dist/;# 根目录
			try_files $uri $uri/ /index.html;
			index index.html index.htm; # 默认首页
		}
		
		#location /prod-api {
			#proxy_pass         http://127.0.0.1:8080/; #没斜杠/就是不拼接prod-api  有就是拼接 `http://127.0.0.1:8080/api/prod-api`
			#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_redirect off;
			#proxy_set_header REMOTE-HOST $remote_addr;
			#proxy_set_header X-NginX-Proxy true;
			#proxy_http_version 1.1;
			#proxy_read_timeout 10;
		#}
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8080/;
		}
		
		
	}

}

(3)访问测试:
地址栏输入http://192.168.177.129/:81 可以看到首页面
地址栏输入http://192.168.177.129/:82 可以看到注册页面

3.2.2 域名绑定
什么是域名:

域名(DomainName),是由一串用“点”分隔的字符组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具” 。域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称。域名按域名系统(DNS)的规则流程组成。在DNS中注册的任何名称都是域名。域名用于各种网络环境和应用程序特定的命名和寻址目的。通常,域名表示互联网协议(IP)资源,例如用于访问因特网的个人计算机,托管网站的服务器计算机,或网站本身或通过因特网传送的任何其他服务。世界上第一个注册的域名是在1985年1月注册的。

域名级别:
(1)顶级域名

顶级域名又分为两类: 一是国家顶级域名(national top-leveldomainnames,简称nTLDs),200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等;
二是国际顶级域名(international top-level domain names,简称iTDs),例如表示工商企业的 .Com .Top,表示网络提供商的.net,表示非盈利组织的.org,表示教育的.edu,以及没有限制的中性域名如.xyz等。大多数域名争议都发生在com的顶级域名下,因为多数公司上网的目的都是为了赢利。但因为自2014年以来新顶级域名的发展,域名争议案件数量增长幅度越来越大[5] 。为加强域名管理,解决域名资源的紧张,Internet协会、Internet分址机构及世界知识产权组织(WIPO)等国际组织经过广泛协商,
在原来三个国际通用顶级域名:(com)的基础上,新增加了7个国际通用顶级域名:firm(公司企业)、store(销售公司或企业)、Web(突出WWW活动的单位)、arts(突出文化、娱乐活动的单位)、rec(突出消遣、娱乐活动的单位)、info(提供信息服务的单位)、nom(个人),并在世界范围内选择新的注册机构来受理域名注册申请。
例如:baidu.com

(2)二级域名

二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称,例如 ibm,yahoo,microsoft等;在国家顶级域名下,它是表示注册企业类别的符号,例如.top,com,edu,gov,net等。
中国在国际互联网络信息中心(Inter NIC)正式注册并运行的顶级域名是CN,这也是中国的一级域名。在顶级域名之下,中国的二级域名又分为类别域名和行政区域名两类。类别域名共7个,包括用于科研机构的ac;用于工商金融企业的com、top;用于教育机构的edu;用于政府部门的 gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于中国各省、自治区和直辖市。
例如:map.baidu.com

(3)三级域名

三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成, 各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。如无特殊原因,建议采用申请人的英文名(或者缩写)或者汉语拼音名 (或者缩写)作为三级域名,以保持域名的清晰性和简洁性。
例如: item.map.baidu.com

域名与IP绑定:
一个域名对应一个 ip 地址,一个 ip 地址可以被多个域名绑定。
本地测试可以修改 hosts 文件(C:\Windows\System32\drivers\etc)
可以配置域名和 ip 的映射关系,如果 hosts 文件中配置了域名和 ip 的对应关系,不需要走dns 服务器。
192.168.177.129 www.hmtravel.com
192.168.177.129 regist.hmtravel.com

做好域名指向后,修改nginx配置文件

 server {
        listen       80;
        server_name  www.hmtravel.com;
        location / {
            root   cart;
            index  cart.html;
        }
    }
    server {
        listen       80;
        server_name  regist.hmtravel.com;
        location / {
            root   search;
            index  search.html;
        }
    }

执行以下命令,刷新配置
[root@localhost sbin]# ./nginx -s reload

测试:
地址栏输入http://www.hmtravel.com/

地址栏输入http://regist.hmtravel.com/

4.Nginx反向代理与负载均衡

4.1 反向代理
4.1.1 什么是反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
首先我们先理解正向代理,如下图:

正向代理是针对你的客户端,而反向代理是针对服务器的,如下图

4.1.2 配置反向代理-准备工作
(1) 将travel案例部署到tomcat中(ROOT目录),上传到服务器。
(2)启动TOMCAT,输入网址http://192.168.177.129:8080 可以看到网站首页

4.1.3 配置反向代理
(1)在Nginx主机修改 Nginx配置文件

   upstream tomcat-travel{
	   server 192.168.177.129:8080;
    }

    server {
        listen       80; # 监听的端口
        server_name  www.hmtravel.com; # 域名或ip
        location / {	# 访问路径配置
            # root   index;# 根目录
	    proxy_pass http://tomcat-travel;
            index  index.html index.htm; # 默认首页
        }
}

(2)重新启动Nginx 然后用浏览器测试:http://www.hmtravel.com (此域名须配置域名指向)

4.2 负载均衡

4.2.1 什么是负载均衡
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

4.2.2 配置负载均衡-准备工作
(1)将刚才的存放工程的tomcat复制三份,修改端口分别为8080 ,8081,8082 。
(2)分别启动这三个tomcat服务。
(3)为了能够区分是访问哪个服务器的网站,可以在首页标题加上标记以便区分。

4.2.3 配置负载均衡
修改 Nginx配置文件:

  upstream tomcat-travel {
	   server 192.168.177.129:8080;
	   server 192.168.177.129:8081;
	   server 192.168.177.129:8082;
    }

   server {
       listen       80; # 监听的端口
       server_name  www.hmtravel.com; # 域名或ip
       location / {	# 访问路径配置
           # root   index;# 根目录
    proxy_pass http://tomcat-travel;

           index  index.html index.htm; # 默认首页
       }
       error_page   500 502 503 504  /50x.html;	# 错误页面
       location = /50x.html {
           root   html;
       }
   }

地址栏输入http:// www.hmtravel.com / 刷新观察每个网页的标题,看是否不同。
经过测试,三台服务器出现的概率各为33.3333333%,交替显示。
如果其中一台服务器性能比较好,想让其承担更多的压力,可以设置权重。
比如想让NO.1出现次数是其它服务器的2倍,则修改配置如下:

    upstream tomcat-travel {
	   server 192.168.177.129:8080;
	   server 192.168.177.129:8081 weight=2;
	   server 192.168.177.129:8082;
    }

经过测试,每刷新四次,有两次是8081

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值