云服务器Linux部署war、jar包,并在nginx配置域名
一,打包
Jar包
一个Springboot项目默认打包jar包,无需修改配置,点击右侧Maven-Lifecycle-package打包即可
注意:
需要先检查pom.xml文件,可能此时打包完的jar包会出现
no main manifest attribute, in test-0.0.1-SNAPSHOT.jar
xxx.jar中没有主清单属性
由于IDEA默认使用spring-boot-maven-plugin
插件,默认设置 <skip>
为true,这会导致 Spring Boot 插件跳过重新打包 JAR 文件的步骤,进而不生成包含 Main-Class 属性的清单文件。
解决办法:移除或注释掉即可
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<mainClass>com.github.nan.web.NanWebApplication</mainClass>
<!-- <skip>true</skip> --> <!-- 移除或设置为 false -->
</configuration>
</plugin>
</plugins>
</build>
War包
需要将pom.xml文件的packaging设置为war
<packaging>war</packaging>
如果使用tomcat启动服务,则需要排除tomcat的依赖。同时,添加servlet-api的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency>
在build使用一下插件打包
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build>
最后点击右侧Maven-Lifecycle-package打包即可
二,服务器环境部署
1.MySQL安装
将安装包放到指定目录
Linux指令:
cd ..返回上一级
cd /xx/xx/xx 进入其中一个目录
mkdir xxx创建一个文件夹
下载某一版本安装包
下载5.7版本
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
下载8.0版本
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
安装下载好的安装包
sudo rpm -ivh mysqxxxxx.noarch.rpm
安装MySQL,出现的所有提示,y到底即可
输入指令确定是否安装好
mysql -V
MySQL命令
sudo systemctl start mysqld 启动MySQL
sudo systemctl start mysqld 查看MySQL运行状态
sudo systemctl reload mysqld 重启MySQL
sudo systemctl stop mysqld 关闭MySQL
取得MySQL初始化随机密码
grep "password" /var/log/mysqld.log
可以看到我们的初始密码是 l>KbWhk6K&+Y
登录MySQL
mysql -h 127.0.0.1 -u root -p
输入刚刚获取的初始密码
进入这个页面,代表mysql登入成功
修改密码
update user set authentication_string=password("新密码")where user='root';修改密码
flush privileges;立即应用
exit;退出mysql
重新登录MySQL,并输入新密码即可
跳过/忘记密码
vim /etc/my.cnf 按i进入编辑模式 最后一行加入 skip-grant-tables 点击esc,输入:wq保存并推出 重启mysqld mysql -h 127.0.0.1 -u root -p 直接回车进入mysql 修改密码即可
创建远程账户
如果需要远程访问,还需要开通远程访问权限,否则将会报错
create user '新用户名'@'%' identified with mysql_native_password by '密码'; grant all privileges on *.* to '新用户名'@'%' with grant option; flush privileges;
MySQL安装完成,可以远程访问了
2.Java安装
下载
在 Oracle 官网下载一个适用于Linux平台的JDK工具包【jdk-8u202-linux-x64.tar.gz】
Oracle Java Technologies | Oracle下载地址
通过软件传入服务器中,我这里使用的是Xftp 8
将安装包放入某个文件夹内
mkdir -p /xxx/java
解压到目录
tar -vzxf jdk-8u202-linux-x64.tar.gz
配置环境变量
1). 编辑/etc/profile文件,进入命令模式 vim /etc/profile 2). 在命令模式中,输入指令 G , 切换到文件最后 G 3). 在命令模式中输入 i/a/o 进入插入模式,然后切换到文件最后一行 i 4). 将上述的配置拷贝到文件中 JAVA_HOME=/usr/local/jdk1.8.0_171 PATH=$JAVA_HOME/bin:$PATH 5). 从插入模式,切换到指令模式 ESC 6). 按:进入底行模式,然后输入wq,回车保存 :wq 7). 刷新配置文件 source /etc/profile
检验是否安装成功
java -version
出现这个代表Java安装成功
三.安装Tomcat
记得检查JDK与Tomcat版本问题,版本不对应后续问题会很多
Apache Tomcat® - Welcome!下载地址
上传到服务器任意文件夹,并进入文件夹
安装
tar -zxvf apache-tomcat-7.0.57.tar.gz -C 指定目录
cd 刚刚指定的目录/apache-tomcat-7.0.57/ 进入Tomcat目录
bin文件中包括Tomcat工具,包括启动,停止等
conf文件包括Tomcat配置文件
webapps文件存放war包,用于程序的启动
Tomcat启动与停止
cd bin/ 进入工具包中
./startup.sh 启动Tomcat
./shutdown.sh 关闭Tomcat
代表成功启动
配置
如果想要修改Tomcat启动的端口号
进入conf目录下
cd conf/
打开server.xml文件
vim server.xm
找到Connector开头的代码,将后面的8080修改为任意端口号,只要你所修改的端口号没被其它应用占有,修改后保存。
如果出现 The valid characters are defined in RFC 7230 and RFC 3986 问题
增加以下配置
<Connector port="xxxx" protocol="HTTP/1.1" connectionTimeout="20000"
relaxedQueryChars="[]|{}^\`"<>"
relaxedPathChars="[]|{}^\`"<>"
redirectPort="8443" />
访问 http://你的ip:端口号可以访问Tomcat地址
看到这个页面代表Tomcat成功安装了
四.Nginx安装
准备工作
1.先安装gcc-c++编译器
yum install gcc-c++
yum install -y openssl openssl-devel2.再安装pcre包
yum install -y pcre pcre-devel
3.再安装zlib包yum install -y zlib zlib-devel
进行nginx的安装
1.在/usr/local/下创建文件nginx文件
mkdir 任意位置/nginx
2.在网上下nginx包上传至Linux(https://nginx.org/download/),也可以直接下载wget https://nginx.org/download/nginx-1.19.9.tar.gz
3.解压并进入nginx目录tar -zxvf nginx-1.19.9.tar.gz
cd nginx-1.19.9
4.使用nginx默认配置./configure
5.编译安装make
make install
6.查找安装路径whereis nginx
Nginx位置一般为 /usr/local/nginx
7.进入sbin目录,可以看到有一个可执行文件nginx,直接./nginx执行就OK了。./nginx
9.查看是否启动成功ps -ef | grep nginx
10.然后在网页上访问自己的IP就可以了默认端口为80(出现如下欢迎界面就成功了!)
Nginx命令
./nginx 启动
./nginx -s stop 停止
./nginx -s reload 重启
修改配置文件
配置文件位置 Nginx位置/conf/nginx.conf
配置一般在此处修改
修改完后,重启Nginx即可生效
五.部署服务
至此所有准备已完成,可以开始部署服务了
War包
移入Tomcat下webapps文件中,启动Tomcat即可部署服务
Jar包
将jar包移入任意文件夹中,需要确定一个输出日志的位置
1.后台启动,不影响当前窗口的使用,日志在指定位置的文件内查看
nohup java -jar xxx.jar > 指定输出日志位置 2>&1 &
2.前台启动,只有结束当前程序后才能在使用此窗口,日志会直接显示在当前窗口
java -jar xxx.jar > 指定输出日志位置 2>&1 &
至此服务启动完毕
六.Nginx配置
如果需要配置域名,以及代理,需要配置一下内容
server {
listen 80; #监听端口
listen [::]:80;
server_name 你的域名;
#root /xx; #如果没有本地文件不用配置# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;location /xxx/ { #如果80端口监听到带有/xxx就会转到部署的服务
proxy_pass http://127.0.0.1:8080/; #本地部署的服务地址
# Proxy headers
proxy_set_header Upgrade $http_upgrade;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
error_page 404 /404.html;
location = /404.html {
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
}}
如果需要一个端口一个域名,监听多个服务
增加一个location配置即可
location /xxx/ { #如果80端口监听到带有/xxx就会转到部署的服务
proxy_pass http://127.0.0.1:8080/; #本地部署的xxx服务地址
# Proxy headers
proxy_set_header Upgrade $http_upgrade;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}location /yyy/ { #如果80端口监听到带有/yyy就会转到部署的服务
proxy_pass http://127.0.0.1:8081/; #本地部署的yyy服务地址
# Proxy headers
proxy_set_header Upgrade $http_upgrade;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}
如果需要部署多个域名多个服务
增加一个server即可
server {
listen 80; #监听端口
listen [::]:80;
server_name 你的域名;# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;location /xxx/ { #如果80端口监听到带有/xxx就会转到部署的服务
proxy_pass http://127.0.0.1:8080/; #本地部署的服务地址
# Proxy headers
proxy_set_header Upgrade $http_upgrade;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}}
server {
listen 80; #监听端口
listen [::]:80;
server_name 你的另一个域名;# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;location /yyy/ { #如果80端口监听到带有/yyy就会转到部署的服务
proxy_pass http://127.0.0.1:8081/; #本地部署的服务地址
# Proxy headers
proxy_set_header Upgrade $http_upgrade;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
}}
如果需要 websocket
需要添加location配置
location ~/websocket {
proxy_pass http://127.0.0.1:8080/websocket;你的websocket访问地址
# Proxy headers
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade"; # 修正此行,确保正确处理连接升级
proxy_read_timeout 600s;
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_set_header X-Forwarded-Proto $scheme;
}
至此服务已部署服务器