常用软件安装文档

人总是在接近幸福时倍感幸福,在幸福进行时却患得患失

Posted by yishuifengxiao on 2022-02-18

一 基础环境准备

1.1 安装docker环境

1.1.1 卸载旧版本

较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

1
2
3
4
5
6
7
8
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

1.1.2 设置仓库

安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

1
2
3
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

使用以下命令来设置稳定的仓库。

1
2
3
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

1.1.3 安装 Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

1
sudo yum install docker-ce docker-ce-cli containerd.io

也可以使用脚本安装

使用官方安装脚本自动安装

安装命令如下:

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

1
curl -sSL https://get.daocloud.io/docker | sh

1.1.4 F&Q

1) 如果运行docker 命令出现

1
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

时,表明docker进程未运行。

解决办法

1
2
3
4
5
6
7
systemctl daemon-reload

sudo service docker restart

sudo service docker status (should see active (running))

sudo docker run hello-world

2) 若出现以下问题

package docker-ce-3:19.03.11-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed

解决方法:

进入阿里云镜像地址:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/ 找到你想要的或者最新的containerd.io包,拼接在阿里云地址后面,

如下:

yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm

然后再执行

1
yum install docker-ce docker-ce-cli containerd.io

即可。

1.1.5 配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

1
2
3
4
5
6
7
8
9
10
11
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1t52bj4j.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

1.2 安装java环境

1.2.1 卸载历史版本

1 查看是否有历史版本

1
java -version

查看已安装java版本

1
yum list installed |grep java

2 卸载历史版本

卸载JDK相关文件

1
yum -y remove *openjdk*

卸载tzdata-java

1
yum -y remove tzdata-java.noarch

1.2.2 安装新版的java

1 新建目录

1
mkdir -p /usr/local/java

2 上传安装包到该目录并解压

如果本地不能上传,可以从远程使用命令

1
scp root@192.168.0.104:/home/software/jdk-8u221-linux-x64.tar.gz /usr/local/java

如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下

1
2
#scp 命令使用端口号 4588
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

scp命令格式如下

1
scp [可选参数] file_source file_target

解压安装包

1
tar -xvzf jdk-8u221-linux-x64.tar.gz

3 设置环境变量

先备份环境变量

1
cp /etc/profile /etc/profile.bak

在原始文件的末尾加上

1
2
3
4
export JAVA_HOME=/usr/local/java/jdk1.8.0_221
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/li/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

使环境变量立即生效

1
source /etc/profile

检查环境变量是否生效

1
java -version

二 防火墙及安全

2.1 centos7 查看防火墙

2.1.1 查看firewall服务状态

1
systemctl status firewalld

2.1.2 查看firewall的状态

1
firewall-cmd --state

2.1.3 开启、重启、关闭、firewalld.service服务

1
2
3
4
5
6
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop

其他命令

1
2
3
4
5
#停止firewall
systemctl stop firewalld.service

#禁止firewall开机启动
systemctl disable firewalld.service

2.2 防护墙规则

2.2.1 查看防火墙规则

1
firewall-cmd --list-all

操作防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

2.3 切换为iptables防火墙

切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。

2.3.1 关闭firewall

1
service firewalld stop systemctl disable firewalld.service #禁止firewall开机启动

2.3.2 安装iptables防火墙

1
yum install iptables-services #安装

2.3.3 编辑iptables防火墙配置

1
vi /etc/sysconfig/iptables #编辑防火墙配置文件

下边是一个完整的配置文件:

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
Firewall configuration written by system-config-firewall

Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

开启iptables

1
2
service iptables start #开启
systemctl enable iptables.service #设置防火墙开机启动

2.4 iptables 防火墙

2.4.1 查看防火墙状态

1
chkconfig iptables --list

2.4.2 关闭防火墙

1 即时生效,重启后复原

1
2
开启:			 service iptables start 
关闭: service iptables stop

2 永久性生效,重启后不会复原

1
2
开启:			 chkconfig iptables on
关闭: chkconfig iptables off

2.4.3 开启指定端口

编辑/etc/sysconfig/iptables 文件
添加以下内容:

1
2
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

三 常用软件安装

3.1 mysql数据库

3.1.1 docker安装mysql数据库

安装命令如下

1
2

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -d mysql:5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --lower_case_table_names=1

示例1

docker run -p 3306:3306 —name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -d mysql:5.6 —character-set-server=utf8mb4 —collation-server=utf8mb4_unicode_ci —lower_case_table_names=1

示例2

docker run —name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=pwd123 -d mysql:5.5 —character-set-server=utf8mb4 —collation-server=utf8mb4_unicode_ci

查看运行情况

1
docker ps -a

安装完成后进行连接测试

问题解决

如果启动mysql时出现以下问题,说明需要重启docker

Status: Downloaded newer image for mysql:5.6
0df0b470e099821cccaf261c3c38bee32bfbba95c837b1822f63de051293e144
docker: Error response from daemon: driver failed programming external connectivity on endpoint mymysql (801742e0e4c8a5ac5f04d299f39a385eaf4b385955bd8ae09eb121d83a32f793): (iptables failed: iptables —wait -t nat -A DOCKER -p tcp -d 0/0 —dport 3306 -j DNAT —to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.

重启docker服务后再启动容器

1
2
systemctl restart docker
docker start foo

3.1.2 导入数据

1
mysql  -uroot -p --default-character-set=utf8  demo </home/demo.sql

具体的导入数据库的命令的格式如下:

1
mysql  -uroot -p --default-character-set=utf8  目标数据库名字 <导入脚本的路径

--default-character-set=utf8是为防止导入的数据出现乱码

创建数据库

1
CREATE DATABASE 数据库名;

删除数据库

1
drop database <数据库名>;

删除数据表

1
DROP TABLE table_name ;

3.1.3 修改密码

下面是具体步骤
一、知道原来的myql数据库的root密码;

1、 在终端命令行输入

1
mysqladmin -u root -p password "新密码" 回车 ,Enter password:

【输入原来的旧密码】
2、 登录mysql系统修改, mysql -uroot -p 回车 Enter password: 【输入原来的密码】

1
2
3
4
5
6
7
mysql>use mysql;

mysql> update user set password=password("新密码") where user='root';

mysql> flush privileges;

mysql> exit;

然后使用刚才输入的新密码即可登录。

3.1.4 F&Q

centos7下解决yum install mysql-server没有可用包

第一步:安装从网上下载文件的wget命令

1
[root@master ~]# yum -y install wget

第二步:下载mysql的repo源

1
[root@master ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

第三步:安装mysql-community-release-el7-5.noarch.rpm包

1
[root@master ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm

第四步:查看下

1
2
3
[root@master ~]# ls -1 /etc/yum.repos.d/mysql-community*
/etc/yum.repos.d/mysql-community.repo
/etc/yum.repos.d/mysql-community-source.repo

会获得两个mysql的yum repo源:/etc/yum.repos.d/mysql-community.repo/etc/yum.repos.d/mysql-community-source.repo

第五步:安装mysql

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

3.1.5 远程访问

设置密码

1
mysqladmin -u root password '密码'

设置远程访问权限

1
GRANT ALL privileges on *.* TO 'root'@'%' identified by '密码' with grant option;

立即生效

1
flush privileges ;

开启相应的mysql的防火墙端口

3.2 redis数据库

3.2.1 docker安装redis

安装命令如下

1
docker run -d --name myredis -p 6379:6379 redis --requirepass "密码"

docker run -d —name redis -p 6380:6379 redis —requirepass “密码”

安装完成后进行连接测试

查看运行情况

1
docker ps -a

3.2.2 相关命令

清空数据库

1
flushall

3.3 mongo数据库

3.3.1 docker安装mongo

安装命令如下:

mongo5.0以上的版本使用mongo来执行mongodb命令已经不支持了,你需要改用mongosh来替代mongo!

先不带密码启动

1
docker run -itd --name mongo -p 27017:27017 mongo

然后执行

1
docker exec -it mongo mongosh

下面的命令在mongo5.0以后不支持

1
docker exec -it mongo mongo admin

创建用户

1
2
3
4
5
6
7
#创建一个名为 admin,密码为 123456 的用户。

> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

# 尝试使用上面创建的用户信息进行连接。

> db.auth('admin', '123456')

3.4 docker安装nginx

安装脚本如下:

1
2
3
4
5
6
docker run --name nginx_test_cors \
-p 8664:80 \
-v /home/webapps/ROOT:/usr/share/nginx/html:ro \
-v /home/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/logs:/var/log/nginx \
-d nginx \

docker run —name nginx_test_cors -p 8664:80 -v /home/webapps/ROOT:/usr/share/nginx/html:ro -v /home/nginx.conf:/etc/nginx/nginx.conf -d nginx

完整示例

1
2
3
4
5
6
7
8
9
docker run -d -p 80:80  \
-p 443:443 \
--name nginxweb \
--link answer-server:answerserver \
-v /usr/local/docker/nginx/html:/usr/share/nginx/html \
-v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/docker/nginx/logs:/var/log/nginx \
nginx
  • -d # 表示在一直在后台运行容器
  • -p 80:80 # 对端口进行映射,将本地8081端口映射到容器内部的80端口
  • —name # 设置创建的容器名称
  • -v # 将本地目录(文件)挂载到容器指定目录;
  • —link answer-server:answerserver 这计划是指需要转向本机docker容器的别名

nginx.conf文件示例

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
user  nginx;
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;



sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

server {
listen 80;
listen [::]:80;
server_name localhost;

#access_log /var/log/nginx/host.access.log main;

location / {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Credentials: true;
root /usr/share/nginx/html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
}

3.5 docker安装minio

1
docker run -d -p 8100:9000 -p 8101:9001 --restart=always -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=123456Asd -v /usr/local/minio/data:/data minio/minio server /data --console-address ":9001"

docker run -d -p 8100:9000 -p 8101:9001 —restart=always -e MINIO_ACCESS_KEY=admin -e MINIO_SECRET_KEY=123456Asd -v /usr/local/minio/data:/data minio/minio server /data —console-address “:9001”

控制台端口为 8101


3.6 docker安装activemq

1
docker run --name=activemq  -d -p 8161:8161 -p 61616:61616 -e ACTIVEMQ_ADMIN_LOGIN=admin -e ACTIVEMQ_ADMIN_PASSWORD=123456 --restart=always webcenter/activemq:latest

docker run —name=activemq -d -p 8161:8161 -p 61616:61616 -e ACTIVEMQ_ADMIN_LOGIN=admin -e ACTIVEMQ_ADMIN_PASSWORD=123456 —restart=always webcenter/activemq:latest



四 服务器环境搭建

生成安装路径

1
mkdir -p /usr/local/server

4.1 安装编译工具及库文件

1
yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

4.2 安装 PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能

2 上传安装文件并解压

进入目录

1
cd /usr/local/server/

上传安装文件到此目录

也可以执行以下命令进行在线下载

1
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

下载完成之后进行解压

1
tar -xvzf pcre-8.35.tar.gz

3 编译安装

进入安装包目录

1
cd pcre-8.35

编译安装

1
2
3
./configure

make && make install

4 查看pcre版本

1
pcre-config --version

得到的结果如下

1
2
[root@localhost pcre-8.35]# pcre-config --version
8.35

表示安装成功

4.3 安装nginx

4.3.1 上传文件到指定目录

1
cd /usr/local/server/

上传安装文件到此目录

也可以执行以下命令进行在线下载

1
wget http://nginx.org/download/nginx-1.18.0.tar.gz

4.3.2 解压

解压命令如下

1
tar -xvzf nginx-1.18.0.tar.gz

进入安装包目录

1
cd nginx-1.18.0/

4.3.3 编译安装

安装命令如下

1
./configure --prefix=/usr/local/server/nginx-1.18.0 --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/server/pcre-8.35

./configure —prefix=/usr/local/server/nginx-1.18.0 —with-http_stub_status_module —with-http_ssl_module —with-pcre=/usr/local/server/pcre-8.35

接着执行以下命令

1
2
3
make

make install

4.3.4 确认安装状态

执行上述命令后,会在安装目录下生成一个 sbin 名字的文件夹,此时,基本上可以认为安装成功了

执行以下命令

1
mkdir -p /usr/local/server/nginx-1.18.0/logs

接着执行

1
2
3
/usr/local/server/nginx-1.18.0/sbin

./nginx -v

此时,如果出现

1
2
[root@localhost sbin]# ./nginx -v
nginx version: nginx/1.18.0

表明确定安装成功了

此时,在当前目录下执行

1
./nginx

即可启动nginx了

接着执行

1
2
3
4
[root@localhost sbin]# ps -ef|grep nginx
root 71489 1 0 02:21 ? 00:00:00 nginx: master process ./nginx
nobody 71490 71489 0 02:21 ? 00:00:00 nginx: worker process
root 71546 9696 0 02:24 pts/1 00:00:00 grep --color=auto nginx

如果出现上述的输出,表明nginx进程启动了

在访问 http://目标服务器地址/ ,如果访问成功,则表明确实安装成功

4.4 安装静态资源服务器

必须在完成nginx 安装的基础上进行

4.4.1 生成静态资源路径

命令如下

1
mkdir -p /home/demo

随意放置一个文件到该目录里

4.4.2 配置nginx配置文件

在修改之前,备份nginx配置文件

1
2
cd /usr/local/server/nginx-1.18.0/conf
cp nginx.conf nginx.conf.bak

修改配置文件如下

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 解决访问静态资源403的问题
user root;
#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

# 照片
# 解决访问静态资源404的问题
location /image/ {
alias /home/demo/;
}


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

}

上述配置中增加的配置为

在最上面加上

1
2
# 解决访问静态资源403的问题
user root;

在server节点下增加

1
2
3
4
5
# 照片
# 解决访问静态资源404的问题
location /image/ {
alias /home/demo/;
}

其中的/home/demo/就是上一步中配置静态资源未知

接下来重启nginx

1
2
3
cd /usr/local/server/nginx-1.18.0/sbin

./nginx -s reload

重启成功后,访问

http://192.168.195.128/image/aa.jpg

如果能访问当前资源,则表明配置成功

4.5 安装tomcat服务器

4.5.1 上传文件到服务器

进入文件安装目录

1
cd /usr/local/server

上传安装文件到当前目录

或者执行一下命令进行下载

1
wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz

4.5.2 解压并启动

解压命令如下

1
tar -xvzf apache-tomcat-9.0.34.tar.gz

接着执行

1
2
cd /usr/local/server/apache-tomcat-9.0.34/bin
./startup.sh

启动成功后,访问

http://192.168.195.128:8080/

如果当前目录能够访问,表明安装成功

4.5.3 安装文件上传应用

进行目录

1
cd /usr/local/server/apache-tomcat-9.0.34/webapps

上传文件服务器应用到当前目录

如果不能上传,可执行命令

1
scp root@192.168.0.104:/home/software/file.war /usr/local/server/apache-tomcat-9.0.34/webapps

接下来重启tomcat

1
2
3
4
5
cd /usr/local/server/apache-tomcat-9.0.34/bin

./shutdown.sh

./startup.sh

4.5.4 修改nginx配置文件

在server节点下增加以下配置

1
2
3
4
# 文件上传
location /file {
proxy_pass http://localhost:8080/file;
}

此时完整的配置文件为

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# 解决访问静态资源403的问题
user root;
#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

# 照片
# 解决访问静态资源404的问题
location /image/ {
alias /home/demo/;
}

# 文件上传
location /file {
proxy_pass http://localhost:8080/file;
}



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

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

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


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

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

}

配置成功后,重启nginx

1
2
3
cd /usr/local/server/nginx-1.18.0/sbin

./nginx -s reload

4.5.5 上传测试

使用postman进行上传测试

测试地址为

http://192.168.195.128/file/upload

如果得到的响应为

1
2
3
4
5
6
7
{
"code": 200,
"msg": "上传成功",
"requtest-id": "f4e0c268843e4bb6baf1adaac8ca0ddf",
"data": "e219c272b5534139b23f74344b5191f6.jpg",
"response-time": "2020-05-09 18:18:00"
}

则表示文件上传成功

此时,访问 http://192.168.195.128/image/e219c272b5534139b23f74344b5191f6.jpg ,能够访问成功,则表明上传文件功能正常

五 应用程序安装

5.1 初始化数据库

连接好mysql数据库,新建一个名为 demo 的数据库,并导入初始化脚本。

5.2 安装应用程序

进入tomcat的部署目录

1
cd /usr/local/server/apache-tomcat-9.0.34/webapps

接下来删除无关的项目

上传后端程序到当前目录,并重命名为 ROOT.war

如果无法上传,可以执行命令

1
scp root@192.168.0.104:/home/software/demo.war /usr/local/server/apache-tomcat-9.0.34/webapps

接下来重启tomcat

待安装包解压后,修改配置连接信息

修改后端连接配置

进行目录 /usr/local/server/apache-tomcat-9.0.34/webapps/ROOT/WEB-INF/classes 修改配置连接

修改后的配置为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# datasource 
datasource.url=192.168.195.128:3306/demo
datasource.username=root
datasource.password=密码


################# Redis connection
spring.redis.host=192.168.195.128
spring.redis.password=密码
spring.redis.port=6379

server.port=9500

spring.jpa.hibernate.ddl-auto=update


#yishuifengxiao.swagger.base-package=com.yishuifengxiao.work.demo.web

修改前端连接配置

进入目录 /usr/local/server/apache-tomcat-9.0.34/webapps/ROOT/WEB-INF/classes/static/js,修改app.xxxx.js中的配置信息

需要修改的节点为

  • pro : 请求的主要地址
  • url : 文件上传地址
  • imgUrl :默认的图片地址

需要将其中的ip替换为对应的域名

修改完成后,重新tomcat服务器

5.3 修改nginx配置

1 首先在 http 节点下增加以下配置

1
2
3
upstream servers {
server 127.0.0.1:8080;
}

2 接下来在server节点下,增加以下配置

1
2
3
4
5
6
7
#其他的
location / {
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_pass http://servers;
}

在上述代码中

1
2
3
proxy_set_header Host  $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

的目的是为转发请求头

此时,完整的配置为

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# 解决访问静态资源403的问题
user root;
#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {

upstream servers {
server 127.0.0.1:8080;
}


include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

# 照片
# 解决访问静态资源404的问题
location /image/ {
alias /home/demo/;
}

# 文件上传
location /file {
proxy_pass http://localhost:8080/file;
}


# 其他的配置
location / {
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_pass http://servers;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

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


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

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

}

配置完成后,重启nginx

1
2
3
cd /usr/local/server/nginx-1.18.0/sbin

./nginx -s reload

重启完成后,如果能访问 http://192.168.195.128/#/ 则初步表明配置成功

接下来进行其他的验证即可。

六 开机自启动

6.1 nginx开机自启动

1、先创建开机自启脚本(nginx.service)

1
2
cd /etc/systemd/system
vi nginx.service

2 、修改nginx.service文件内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 仅修改 /usr/local/nginx/sbin/nginx 这个路径即可(修改为你的nginx路径)

[Unit]
Description=nginx service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

3、设置文件权限

1
chmod 755 nginx.service

4、设置开机自启动

1
2
systemctl daemon-reload
systemctl enable nginx

5、检查命令是否正常

1
2
systemctl start nginx # nginx启动
systemctl stop nginx # nginx停止

6、其他命令

1
2
3
4
5
6
7
8
9
10
11
# 启动nginx服务
systemctl start nginx.service

# 重新启动nginx服务
systemctl restart nginx.service

# 查看nginx服务当前状态
systemctl status nginx.service

# 停止开机自启动
systemctl disable nginx.service