一、环境、工具及版本
- CentOS Linux 7.4.1708 (Core)
- Amazon Corretto 11
- MySQL 5.7.28 或 MySQL 8.0.18
- Nginx 1.16.1
二、安装 JDK/JRE 参考步骤
1、yum 安装
(1)添加 yum 存储库
在该页面:https://docs.aws.amazon.com/zh_cn/corretto/latest/corretto-11-ug/downloads-list.html 选择适用的发行包,拷贝链接后,使用以下命令安装:
rpm -Uvh https://d3pxv6yz143wms.cloudfront.net/11.0.3.7.1/java-11-amazon-corretto-devel-11.0.3.7-1.x86_64.rpm
也可以下载到本地执行安装:
rpm -Uvh java-11-amazon-corretto-devel-11.0.3.7-1.x86_64.rpm
(2)开始安装
[root@iZ9vbe1cif1bx32Z ~]# yum install java
(3)输入命令:java -version
,查看 JDK 是否安装成功,如果安装成功则显示版本号信息:
[root@iZ9vbe1cif1bx32Z ~]# java -version
openjdk version "11.0.3" 2019-04-16 LTS
OpenJDK Runtime Environment Corretto-11.0.3.7.1 (build 11.0.3+7-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.3.7.1 (build 11.0.3+7-LTS, mixed mode)
2、手动安装
(1)在 etc 下建立存放目录,可以用图形化工具建立,或者命令行:mkdir /etc/java
(2)在 etc 下使用命令:wget https://d3pxv6yz143wms.cloudfront.net/11.0.3.7.1/amazon-corretto-11.0.3.7.1-linux-x64.tar.gz
,或将本地文件上传。
(3)在 etc 下执行命令:tar zxvf jdk-8u171-linux-x64.tar.gz -C /etc/java/
(4)解压完成后,修改 /etc/profile
文件,在末尾添加内容后保存:
#set java environment
export JAVA_HOME=/etc/java/amazon-corretto-11.0.3.7.1-linux-x64
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME:$PATH
附加内容:若安装 JDK 8,环境变量设置可改为:
#set java environment
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_171
export JRE_HOME=/usr/java/jdk/jdk1.8.0_171/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
(5)使用命令:source /etc/profile
,让环境变量生效
(6)输入命令:java -version
,查看 JDK 是否安装成功。
三、安装 tomcat 参考步骤(未更新)
1、在 etc 下建立存放目录,可以用图形化工具建立,或者命令行:mkdir /etc/tomcat
2、连接服务器,将本地的 apache-tomcat-7.0.88.tar.gz
上传
3、在 etc 下执行命令:tar zxvf apache-tomcat-7.0.88.tar.gz -C /etc/tomcat
4、进入 tomcat 目录的 bin,编辑 setclasspath.sh
,在末尾添加内容后保存:
export JAVA_HOME=/etc/java/amazon-corretto-11.0.3.7.1-linux-x64
export JRE_HOME=/usr/java/jdk/jdk1.8.0_171/jre
注:若安装 JDK 8 以上版本,已经不再有 JRE,而且 tomcat 7 也并不支持新版本。
5、进入 tomcat 目录的 bin,输入 ./startup.sh
即可启动 tomcat,如果启动成功则显示以下信息:
[root@izwabcdefghijklh8jykfdz bin]# ./startup.sh
Using CATALINA_BASE: /usr/java/tomcat/apache-tomcat-7.0.88
Using CATALINA_HOME: /usr/java/tomcat/apache-tomcat-7.0.88
Using CATALINA_TMPDIR: /usr/java/tomcat/apache-tomcat-7.0.88/temp
Using JRE_HOME: /usr/java/jdk/jdk1.8.0_171/jre
Using CLASSPATH: /usr/java/tomcat/apache-tomcat-7.0.88/bin/bootstrap.jar:/usr/java/tomcat/apache-tomcat-7.0.88/bin/tomcat-juli.jar
Tomcat started.
6、在阿里云防火墙规则中开启 8080 端口。
7、此时在浏览器输入公网 IP 和端口号:xxx.xxx.xxx.xxx:8080
,若显示 tomcat 主页就说明部署成功
四、安装 MySQL 参考步骤
采用官网介绍的安装方法,步骤如下。原文详见:A Quick Guide to Using the MySQL Yum Repository
1、查询并移除 CentOS 7 默认安装的 mariaDB,执行该步骤需要获得 root 权限:
[root@iZ9vbe1cif1bx32Z ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@iZ9vbe1cif1bx32Z ~]# yum -y remove mariadb-libs
2、添加 yum 存储库
在该页面:https://dev.mysql.com/downloads/repo/yum/ 选择适用的发行包,拷贝链接后,使用以下命令安装:
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
也可以下载到本地执行安装:
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
3、选择版本
在 yum 存储库中,不同版本的 MySQL Community Server 托管在不同的子存储库中。默认情况下启用最新版本(当前为 MySQL 8.0)的子存储库,而所有其他系列(例如,MySQL 5.7 系列)的子存储库均被禁用。使用以下命令可查看 yum 存储库中的所有子存储库,并查看已启用或禁用的子存储库:
[root@iZ9vbe1cif1bx32Z ~]# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community disabled
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - disabled
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community disabled
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - disabled
mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community disabled
mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - disabled
mysql-connectors-community/x86_64 MySQL Connectors Community enabled: 128
mysql-connectors-community-source MySQL Connectors Community - disabled
mysql-tools-community/x86_64 MySQL Tools Community enabled: 100
mysql-tools-community-source MySQL Tools Community - Sourc disabled
mysql-tools-preview/x86_64 MySQL Tools Preview disabled
mysql-tools-preview-source MySQL Tools Preview - Source disabled
mysql55-community/x86_64 MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - disabled
mysql56-community/x86_64 MySQL 5.6 Community Server disabled
mysql56-community-source MySQL 5.6 Community Server - disabled
mysql57-community/x86_64 MySQL 5.7 Community Server disabled
mysql57-community-source MySQL 5.7 Community Server - disabled
mysql80-community/x86_64 MySQL 8.0 Community Server enabled: 145
mysql80-community-source MySQL 8.0 Community Server - disabled
若安装最新版本则无需进行配置。要安装旧版本,例如 MySQL 5.7 系列,需禁用最新版本的子存储库并启用旧版本子存储库。以下命令禁用 8.0 系列的子存储库并启用 5.7 系列的子存储库:
[root@iZ9vbe1cif1bx32Z ~]# yum-config-manager --disable mysql80-community
[root@iZ9vbe1cif1bx32Z ~]# yum-config-manager --enable mysql57-community
注意:
- 若提示找不到
yum-config-manager
命令,安装即可:yum -y install yum-utils
- 应该随时只为一个系列启用子存储库。如果启用了多个系列的子存储库,那么 yum 将使用最新的系列
通过以下命令,验证是否已启用正确的子存储库:
[root@iZ9vbe1cif1bx32Z ~]# yum repolist enabled | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community 128
mysql-tools-community/x86_64 MySQL Tools Community 100
mysql57-community/x86_64 MySQL 5.7 Community Server 384
4、开始安装
通过以下命令安装 MySQL 服务器的软件包以及其他必需的软件包:
[root@iZ9vbe1cif1bx32Z ~]# yum install mysql-community-server
5、启动 MySQL 服务
[root@iZ9vbe1cif1bx32Z ~]# service mysqld start
6、检查状态
使用命令 service mysqld status
,出现以下提示说明服务正常运行(MySQL 5.7 和 8.0 的显示结果基本相同)。
[root@iZ9vbe1cif1bx32Z ~]# service mysqld status
Redirecting to /bin/systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2019-10-28 17:53:00 CST; 3h 25min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 3731 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 3681 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 3735 (mysqld)
CGroup: /system.slice/mysqld.service
└─3735 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mys...
Oct 28 17:52:56 iZ9vbe1cif1bx32Z systemd[1]: Starting MySQL Server...
Oct 28 17:53:00 iZ9vbe1cif1bx32Z systemd[1]: Started MySQL Server.
7、查看初始临时密码
[root@iZ9vbe1cif1bx32Z ~]# grep 'temporary password' /var/log/mysqld.log
8、使用生成的临时密码登录
[root@iZ9vbe1cif1bx32Z ~]# mysql -uroot -p
9、尽快为超级用户帐户设置自定义密码
mysql> alter user 'root'@'localhost' identified by 'MyNewPass4!';
注意:MySQL 的 validate_password 插件默认安装。要求密码至少包含一个大写字母,一个小写字母,一位数字和一个特殊字符,并且密码总长度至少为 8 个字符。
五、MySQL 通用及专有设置
1、用户控制及授权
(1)创建用户 test 并设置密码
mysql> create user test identified by '123aI~A!';
注:可不进入 user 表执行该语句
(2)查看用户 test 的权限(没有分配前,无权限):
mysql> show grants for 'test'@'%';
+----------------------------------+
| Grants for test@% |
+----------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' |
+----------------------------------+
1 row in set (0.00 sec)
(3)给用户 test 在 database 数据库中对的所有表授权,如:EXECUTE(执行存储过程),INSERT,SELECT,UPDATE 权限,'%' 表示来自任意 IP 的访问:
grant execute,insert,select,update on database.* to 'test'@'%';
常用权限有以下几种:
- all privileges,所有权限
- select,读取权限
- delete,删除权限
- update,更新权限
- create,创建权限
- drop,删除数据库、数据表权限
(4)刷新权限
flush privileges;
(5)删除用户
drop user test@'%';
注:可不进入 user 表执行该语句
(6)查看所有用户信息(8.0 版本显示结果稍有不同)
mysql> select user, host, authentication_string from mysql.user;
+---------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+---------------+-----------+-------------------------------------------+
| root | localhost | *ACE4C05F67A275C00548651B22A066C15B2AB728 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| test | % | *112D65D910D5E3AFCD5624275229F2C0F1B5ADE4 |
+---------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)
2、重置密码
(1)定位 /etc/my.cnf,在 my.cnf 文件 [mysqld]
下添加 skip-grant-tables
字符串,开启免密码登陆
(2)执行 service mysqld restart
,重启服务,使配置生效
(3)执行 mysql -u root -p
,无需键入内容,直接回车即可登录
(4)清空密码
update mysql.user set authentication_string='' where user='root';
(5)将 skip-grant-tables
字符串删除,执行 service mysqld restart
,重启服务,使配置生效
(6)执行 mysql -u root -p
,无需键入内容,直接回车即可登录
(7)执行 alter user 'root'@'localhost' identified by 'MyNewPass4!';
重新设置密码
3、移除 MySQL
(1)停止服务:service mysqld stop
(2)执行 rpm -qa | grep -i mysql
查看 MySQL 组件:
[root@iZ9vbe1cif1bx32Z ~]# rpm -qa | grep -i mysql
mysql-community-libs-5.7.28-1.el7.x86_64
mysql80-community-release-el7-3.noarch
mysql-community-common-5.7.28-1.el7.x86_64
mysql-community-client-5.7.28-1.el7.x86_64
mysql-community-server-5.7.28-1.el7.x86_64
(3)组件彼此之间有依赖关系,按顺序逐项执行移除
rpm -ev mysql-community-server-5.7.28-1.el7.x86_64
rpm -ev mysql-community-client-5.7.28-1.el7.x86_64
rpm -ev mysql-community-libs-5.7.28-1.el7.x86_64
rpm -ev mysql-community-common-5.7.28-1.el7.x86_64
rpm -ev mysql80-community-release-el7-3.noarch
(4)删除相关目录。执行 find / -name mysql
(查找) 和 rm -rf xxx
(删除) 逐项执行移除完全为止。可能包含的目录如下:
[root@iZ9vbe1cif1bx32Z ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
4、MySQL 8 使用简单密码
MySQL 8 默认不能输入全数字的简单密码,需要进行如下设置:
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;
5、MySQL 8 开启外部第三方客户端连接权限
MySQL 8.0 采用了caching_sha2_password 加密,是 sha256 的改进版加密方式,多数第三方客户端都不支持这种加密方式,自带的命令行可支持。具体可参看 官方文档 有关该内容说明。要解决该问题,需要修改加密方式。以 root 用户为例,如果要配置其他用户或授权 IP,对应修改名称和地址即可。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPass4!';
六、安装 nginx 参考步骤
1、yum 安装(配置文件,稳定版)
采用官网介绍的安装方法,步骤如下。原文详见:Installation instructions
(1)新建配置文件 /etc/yum.repos.d/nginx.repo
,内容如下:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
(2)配置中 enabled=1
,因此默认安装稳定版,直接执行 yum install nginx
即可
(3)启动服务:systemctl start nginx.service
其他常用命令行:
- 停止服务:
systemctl stop nginx.service
- 重启服务:
systemctl restart nginx.service
- 开机启动服务:
systemctl enable nginx.service
- 全局配置文件路径:
/etc/nginx/nginx.conf
- 网站文件存放路径:
/usr/share/nginx/html
- 网站默认站点配置文件路径:
/etc/nginx/conf.d/default.conf
- 自定义 Nginx 站点配置文件存放路径:
/etc/nginx/conf.d/
- 查看服务器私有 IP:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
- 卸载:
yum remove nginx
,之后可用which nginx
确认是否卸载情况
2、yum 安装(手动,稳定版)
(1)在该页面:http://nginx.org/packages/centos/7/x86_64/RPMS/ 选择适用的发行包,拷贝链接后,使用以下命令安装:
rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm
也可以下载到本地执行安装:
rpm -Uvh nginx-1.16.1-1.el7.ngx.x86_64.rpm
(2)执行 yum install nginx
即可
(3)启动服务:systemctl start nginx.service
3、编译安装
nginx 中 gzip 模块需要 zlib 库,rewrite 模块需要 pcre 库,ssl 功能需要 openssl 库。以 /usr/mix
安装目录为例:
- 建立 mix 目录
$ mkdir mix
- 安装 GCC 和 GCC-C++
$ yum install gcc
$ yum install gcc-c++
注意:
若未安装 GCC,安装 Nginx 会报如下错误:
./configure: error: C compiler cc is not found
若未安装GCC-C++,安装 PCRE 库时报如下错误:
configure: error: You need a C++ compiler for C++ support.
- 编译安装 PCRE 库
$ cd /usr/
$ wget https://sourceforge.net/projects/pcre/files/pcre/8.43/pcre-8.43.tar.gz
$ tar -zxvf pcre-8.43.tar.gz -C /usr/mix/
$ cd mix/pcre-8.43
$ ./configure
$ make && make install
注意:这里使用 pcre 而不用 pcre2
- 编译安装 zlib 库
$ cd /usr/
$ wget http://www.zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz -C /usr/mix/
$ cd mix/zlib-1.2.11
$ ./configure
$ make && make install
- 编译安装 openssl
$ cd /usr/
$ wget https://www.openssl.org/source/openssl-1.0.2r.tar.gz
$ tar -zxvf openssl-1.0.2r.tar.gz -C /usr/mix/
$ cd mix/openssl-1.0.2r
$ ./config
$ make && make install
- 编译安装 nginx,并添加 PCRE、zlib 、openssl 的源码路径
$ cd /usr/
$ wget http://nginx.org/download/nginx-1.16.0.tar.gz
$ tar -zxvf nginx-1.16.0.tar.gz -C /usr/mix/
$ cd mix/nginx-1.16.0
$ ./configure --prefix=/usr/mix/nginx --with-pcre=/usr/mix/pcre-8.43 --with-zlib=/usr/mix/zlib-1.2.11 --with-openssl=/usr/mix/openssl-1.0.2r
$ make && make install
- 启动 Nginx,默认端口为 80
$ ./usr/mix/nginx/sbin/nginx
- 查看工作情况
$ ps -ef | grep nginx
- 其他命令
./sbin/nginx -s reload # 重新载入配置文件
./sbin/nginx -s reopen # 重启 Nginx
./sbin/nginx -s stop # 停止 Nginx
4、nginx 设置反向代理后,页面上的 js css 文件无法加载
可添加如下配置:
location ~ .*\.(js|css)$ {
proxy_pass http://127.0.0.1:8866;
}
完整示例:
listen 80;
server_name www.test.com;
location /{
proxy_pass http://xxx.xxx.xxx.xxx:9002;
index index.html;
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;
}
location ~ .*\.(js|css)$ {
proxy_pass http://xxx.xxx.xxx.xxx:9002;
}
七、部署过程中的其他问题
1、解压 filename.tar.xz 文件
使用命令:tar -xvf filename.tar.xz
2、在 linux 服务器运行 jar 文件
通常的方法是:
$ java -jar test.jar
但是这种方式在 SSH 窗口关闭时程序将中止运行,或者是运行时没法切出去执行其他任务,有没有办法让 jar 在后台运行。要解决这个问题,可以使用:
$ nohup java -jar test.jar &
即不挂断运行命令,账户退出或终端关闭时,程序仍然运行。当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到 nohup.out 的文件中,除非另外指定了输出文件。例如:
$ nohup java -jar test.jar >temp.txt &
此时把日志文件输入到指定的文件中,没有则会自动创建。
附加内容:两种报错的解决
▲ 提示 nohup: failed to run command
java': No such file or directory`
▲ 或者使用 ./startup.sh 开启 tomcat 服务报错:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
以上情况,执行一次 source /etc/profile 即可。
3、linux kill 命令
格式:kill [参数] [进程号]
4、linux 查询端口情况
netstat 命令各个参数说明如下:
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询,显示IP(可以加速操作)
要显示当前服务器上所有端口及进程服务,与 grep 结合可查看某个具体端口及服务情况:
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp |grep 80 //查看所有80端口使用情况
netstat -ntulp | grep 3306 //查看所有3306端口使用情况
查询出来的结果,根据 ID 号可以用 kill 命令终止后台运行的任务。
5、jobs 命令:
查看当前终端后台运行的任务。jobs 的状态可以是 running,stopped,Terminated。+
号表示当前任务,-
号表示后一个任务。
注:该命令可在使用 nohup 后紧接使用。