云服务器部署-JavaWeb-环境

0、前言

2020-03-15 修改,补充增加了内容。

1、环境、工具及版本

  • CentOS Linux 7.4.1708 (Core)
  • Amazon Corretto 11
  • MySQL 5.7.28 或 MySQL 8.0.18
  • Nginx 1.16.1

2、安装 JDK/JRE 参考步骤

2.1、yum 安装

1)添加 yum 存储库

在该页面:https://docs.aws.amazon.com/zh_cn/corretto/latest/corretto-11-ug/downloads-list.html 选择适用的发行包,拷贝链接后,使用以下命令安装:

1
rpm -Uvh https://d3pxv6yz143wms.cloudfront.net/11.0.3.7.1/java-11-amazon-corretto-devel-11.0.3.7-1.x86_64.rpm

也可以下载到本地执行安装:

1
rpm -Uvh java-11-amazon-corretto-devel-11.0.3.7-1.x86_64.rpm

2)开始安装

1
[root@iZ9vbe1cif1bx32Z ~]## yum install java

3)输入命令:java -version,查看 JDK 是否安装成功,如果安装成功则显示版本号信息:

1
2
3
4
[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.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 文件,在末尾添加内容后保存:

1
2
3
4
##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,环境变量设置可改为:

1
2
3
4
5
##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 是否安装成功。

3、安装 MySQL 参考步骤

采用官网介绍的安装方法,步骤如下。原文详见:A Quick Guide to Using the MySQL Yum Repository

1)查询并移除 CentOS 7 默认安装的 mariaDB,执行该步骤需要获得 root 权限:

1
2
3
[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/ 选择适用的发行包,拷贝链接后,使用以下命令安装:

1
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

也可以下载到本地执行安装:

1
rpm -Uvh mysql80-community-release-el7-3.noarch.rpm

3)选择版本

在 yum 存储库中,不同版本的 MySQL Community Server 托管在不同的子存储库中。默认情况下启用最新版本(当前为 MySQL 8.0)的子存储库,而所有其他系列(例如,MySQL 5.7 系列)的子存储库均被禁用。使用以下命令可查看 yum 存储库中的所有子存储库,并查看已启用或禁用的子存储库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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 系列的子存储库:

1
2
[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 将使用最新的系列

通过以下命令,验证是否已启用正确的子存储库:

1
2
3
4
[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 服务器的软件包以及其他必需的软件包:

1
[root@iZ9vbe1cif1bx32Z ~]## yum install mysql-community-server

5)启动 MySQL 服务

1
[root@iZ9vbe1cif1bx32Z ~]## service mysqld start

6)检查状态

使用命令 service mysqld status,出现以下提示说明服务正常运行(MySQL 5.7 和 8.0 的显示结果基本相同)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[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)查看初始临时密码

1
[root@iZ9vbe1cif1bx32Z ~]## grep 'temporary password' /var/log/mysqld.log

8)使用生成的临时密码登录

1
[root@iZ9vbe1cif1bx32Z ~]## mysql -uroot -p

9)尽快为超级用户帐户设置自定义密码

1
mysql> alter user 'root'@'localhost' identified by 'MyNewPass4!';

注意:MySQL 的 validate_password 插件默认安装。要求密码至少包含一个大写字母,一个小写字母,一位数字和一个特殊字符,并且密码总长度至少为 8 个字符。

4、MySQL 通用及专有设置

4.1、用户控制及授权

1)创建用户 test 并设置密码

1
mysql> create user test identified by '123aI~A!';

注:可不进入 user 表执行该语句

2)查看用户 test 的权限(没有分配前,无权限):

1
2
3
4
5
6
7
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 的访问:

1
grant execute,insert,select,update on database.* to 'test'@'%';

常用权限有以下几种:

  • all privileges,所有权限
  • select,读取权限
  • delete,删除权限
  • update,更新权限
  • create,创建权限
  • drop,删除数据库、数据表权限

4)取消来自远程服务器的 AA 用户对数据库 db 里的表 tb 的所有权限

1
revoke all on db.tb from AA@"%";

5)刷新权限

1
flush privileges;

6)删除用户

1
drop user test@'%';

注:可不进入 user 表执行该语句

7)查看所有用户信息(8.0 版本显示结果稍有不同)

1
2
3
4
5
6
7
8
9
10
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)

4.2、重置密码

1)定位 /etc/my.cnf,在 my.cnf 文件 [mysqld] 下添加 skip-grant-tables 字符串,开启免密码登陆

2)执行 service mysqld restart,重启服务,使配置生效

3)执行 mysql -u root -p,无需键入内容,直接回车即可登录

4)清空密码

1
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!'; 重新设置密码

4.3、移除 MySQL

1)停止服务:service mysqld stop

2)执行 rpm -qa | grep -i mysql 查看 MySQL 组件:

1
2
3
4
5
6
[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)组件彼此之间有依赖关系,按顺序逐项执行移除

1
2
3
4
5
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(删除) 逐项执行移除完全为止。可能包含的目录如下:

1
2
3
4
5
[root@iZ9vbe1cif1bx32Z ~]## find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql

4.4、MySQL 8 使用简单密码

MySQL 8 默认不能输入全数字的简单密码,需要进行如下设置:

1
2
mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;

4.5、MySQL 8 开启外部第三方客户端连接权限

MySQL 8.0 采用了 caching_sha2_password 加密,是 sha256 的改进版加密方式,多数第三方客户端都不支持这种加密方式,自带的命令行可支持。具体可参看 官方文档 有关该内容说明。要解决该问题,需要修改加密方式。以 root 用户为例,如果要配置其他用户或授权 IP,对应修改名称和地址即可。

1
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPass4!';

5、安装 nginx 参考步骤

5.1、yum 安装(配置文件,稳定版)

采用官网介绍的安装方法,步骤如下。原文详见:Installation instructions

1)新建配置文件 /etc/yum.repos.d/nginx.repo,内容如下:

1
2
3
4
5
6
7
[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

4)查看运行状态:ps -ef | grep nginx,若有 master process 和 worker process 两个进程说明正常启动。

其他常用命令行:

  • 查看版本:nginx -v
  • 停止服务: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 确认是否卸载情况

5.2、yum 安装(手动,稳定版)

1)在该页面:http://nginx.org/packages/centos/7/x86_64/RPMS/ 选择适用的发行包,拷贝链接后,使用以下命令安装:

1
rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.1-1.el7.ngx.x86_64.rpm

也可以下载到本地执行安装:

1
rpm -Uvh nginx-1.16.1-1.el7.ngx.x86_64.rpm

2)执行 yum install nginx 即可

3)启动服务:systemctl start nginx.service

5.3、编译安装

nginx 中 gzip 模块需要 zlib 库,rewrite 模块需要 pcre 库,ssl 功能需要 openssl 库。以 /usr/mix 安装目录为例:

  • 建立 mix 目录
1
$ mkdir mix
  • 安装 GCC 和 GCC-C++
1
2
$ yum install gcc
$ yum install gcc-c++

注意:
若未安装 GCC,安装 Nginx 会报如下错误:

1
./configure: error: C compiler cc is not found

若未安装 GCC-C++,安装 PCRE 库时报如下错误:

1
configure: error: You need a C++ compiler for C++ support.
  • 编译安装 PCRE 库
1
2
3
4
5
6
$ 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 库
1
2
3
4
5
6
$ 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
1
2
3
4
5
6
$ 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 的源码路径
1
2
3
4
5
6
$ 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
1
$ ./usr/mix/nginx/sbin/nginx
  • 查看工作情况
1
$ ps -ef | grep nginx
  • 其他命令
1
2
3
./sbin/nginx -s reload            ## 重新载入配置文件
./sbin/nginx -s reopen ## 重启 Nginx
./sbin/nginx -s stop ## 停止 Nginx

5.4、问题及解决方案

5.4.1、nginx 设置反向代理后,页面上的 js css 文件无法加载

可添加如下配置:

1
2
3
location ~ .*\.(js|css)$ {
proxy_pass http://127.0.0.1:8866;
}

完整示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
}

5.4.2、输入域名或 IP,访问不到主页

1)查看云服务器商防火墙是否放行 80 端口;

2)系统防火墙是否放行 80 端口,相关命令如下:

  • systemctl status firewalld.service,查看系统防火墙状态(running/dead)
  • firewall-cmd --permanent --add-port=80/tcp,开启 80 端口(重启系统启防火墙后生效)
  • firewall-cmd --reload,重启系统防火墙
  • firewall-cmd --list-ports,查看系统防火墙已开启端口

附加内容:防火墙的开启和关闭

  • 临时关闭防火墙:systemctl stop firewalld
  • 临时开启防火墙:systemctl start firewalld
  • 永久关闭防火墙:systemctl disable firewalld
  • 永久开启防火墙:systemctl enable firewalld

注意事项:临时关闭或开启防火墙,当重启时会回复之前的状态;永久开启或关闭防火墙,重启后生效。

附加内容:自启动服务命令

  • 查看服务是否开机启动:systemctl is-enabled firewalld.service
  • 查看已启动的服务列表:systemctl list-unit-files|grep enabled
  • 查看启动失败的服务列表:systemctl –failed

附加内容:添加/删除开放端口

  • 默认作用域下,每次修改端口和服务相当于修改 /etc/firewalld/zones/public.xml 文件,也可以直接操作文件
  • 添加 http 服务:firewall-cmd --zone=public --add-service=http --permanent
  • 查看端口是否开放,开启显示 yes:firewall-cmd --query-port=80/tcp
  • 查看服务是否开放,开启显示 yes:firewall-cmd --query-service=ssh
  • 删除开放的端口:firewall-cmd --remove-port=80/tcp --permanent
  • 删除开放的服务:firewall-cmd --zone=public --remove-service=http --permanent
  • 查看所有开启的服务:firewall-cmd --list-services
  • 列出指定作用域的所有设置:firewall-cmd --zone=public --list-all
  • 查看所有可用区域:firewall-cmd --get-zones
  • 列出所有预设服务:firewall-cmd --get-services,将列出 /usr/lib/firewalld/services/ 中的服务器名称。配置文件是以服务本身命名的 service-name.xml
  • 列出所有区域的设置:firewall-cmd --list-all-zones

注 1:缺省时的作用域为 public,即默认带参数 --zone=public,可通过 firewall-cmd --get-default-zone 命令查看,可通过 firewall-cmd --set-default-zone=dmz 命令更改

注 2:--permanent 参数为永久生效

注 3:/etc/firewalld/zones/ 目录下保存作用域配置文件。如 public.xml 是当前生效配置;public.xml.old 是上一次生效配置。

附加内容:防火墙作用域

  • public :仅允许访问本机的 ssh,ping,dhcp 服务(默认)
  • trusted:允许任何访问
  • block:阻塞任何来访请求,明确拒绝
  • drop:丢弃任何来访的数据包,直接丢弃

附加内容:其他防火墙操作

定义规则

  • 设置某个 ip 访问某个服务:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'
  • 删除配置:firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //
  • 设置某个 ip 访问某个端口:firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'
  • 删除配置:firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'
  • 将 1.2.3.4 这个源地址的连接全部给 drop 掉:firewall-cmd --add-rich-rule='rule family="ipv4" source address="1.2.3.4" drop'

伪装 IP

  • 检查是否允许伪装 IP:firewall-cmd --query-masquerade
  • 允许防火墙伪装 IP:firewall-cmd --add-masquerade
  • 禁止防火墙伪装 IP:firewall-cmd --remove-masquerade

请求转发

  • 将 80 端口的请求转发至 8080:firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
  • 将 80 端口的请求转发至 1 92.168.0.1:firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1
  • 将 80 端口的请求转发至 192.168.0.1 的 8080 端口:firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080

6、部署过程中的其他问题

6.1、解压 filename.tar.xz 文件

使用命令:tar -xvf filename.tar.xz

6.2、在 linux 服务器运行 jar 文件

通常的方法是:

1
$ java -jar test.jar

但是这种方式在 SSH 窗口关闭时程序将中止运行,或者是运行时没法切出去执行其他任务,有没有办法让 jar 在后台运行。要解决这个问题,可以使用:

1
$ nohup java -jar test.jar &

即不挂断运行命令,账户退出或终端关闭时,程序仍然运行。当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到 nohup.out 的文件中,除非另外指定了输出文件。例如:

1
$ nohup java -jar test.jar >temp.txt &

此时把日志文件输入到指定的文件中,没有则会自动创建。

附加内容:两种报错的解决

▲ 提示 nohup: failed to run commandjava’: No such file or directory`

▲ 或者使用 ./startup.sh 开启 tomcat 服务报错:

1
2
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 即可。

6.3、linux kill 命令

格式:kill [参数][进程号]

6.4、linux 查询端口情况

netstat 命令各个参数说明如下:

1
2
3
4
5
-t : 指明显示TCP端口
-u : 指明显示UDP端口
-l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
-n : 不进行DNS轮询,显示IP(可以加速操作)

要显示当前服务器上所有端口及进程服务,与 grep 结合可查看某个具体端口及服务情况:

1
2
3
netstat -ntlp   //查看当前所有tcp端口
netstat -ntulp |grep 80 //查看所有80端口使用情况
netstat -ntulp | grep 3306 //查看所有3306端口使用情况

查询出来的结果,根据 ID 号可以用 kill 命令终止后台运行的任务。

附加内容:使用 netstate 报 -bash: netstate: command not found
网络工具没有安装,执行 yum install net-tools,安装即可

6.5、jobs 命令:

查看当前终端后台运行的任务。jobs 的状态可以是 running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。

注:该命令可在使用 nohup 后紧接使用。

6.7、scp 上传或下载文件

  • 可执行 yum install openssh-clients 命令进行安装
  • 上传文件到服务器:scp /Users/spirit/Documents/WechatIMG135.jpeg root@192.168.1.1:/usr/local
  • 上传文件夹到服务器:scp -r /Users/spirit/Documents/fileFolder root@192.168.1.1:/usr/local
  • 从服务器下载文件:scp root@192.168.1.1:/usr/local/WechatIMG135.jpeg /Users/spirit/Documents
  • 从服务器下载文件夹:scp -r root@192.168.1.1:/usr/local/fileFolder /Users/spirit/Documents

参数说明:

  • -1:强制 scp 命令使用协议 ssh1
  • -2:强制 scp 命令使用协议 ssh2
  • -4:强制 scp 命令只使用 IPv4 寻址
  • -6:强制 scp 命令只使用 IPv6 寻址
  • -B:使用批处理模式(传输过程中不询问传输口令或短语)
  • -C:允许压缩。(将-C 标志传递给 ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q:不显示传输进度条。
  • -r:递归复制整个目录。
  • -v:详细方式显示输出。scp 和 ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c:cipher,以 cipher 将数据传输进行加密,这个选项将直接传递给 ssh。
  • -F:ssh_config,指定一个替代的 ssh 配置文件,此参数直接传递给 ssh。
  • -i:identity_file,从指定文件中读取传输时使用的密钥文件,此参数直接传递给 ssh。
  • -l:limit,限定用户所能使用的带宽,以 Kbit/s 为单位。
  • -o:ssh_option,如果习惯于使用 ssh_config(5)中的参数传递方式,
  • -P:port,注意是大写的 P, port 是指定数据传输用到的端口号
  • -S:program,指定加密传输时所使用的程序。此程序必须能够理解 ssh(1)的选项。