商城spring boot+spring cloud项目笔记

编程入门 行业动态 更新时间:2024-10-23 06:26:54

商城spring boot+spring cloud项目<a href=https://www.elefans.com/category/jswz/34/1770047.html style=笔记"/>

商城spring boot+spring cloud项目笔记

gulimall项目
参考:别人写得很好的笔记在这里
还有这里

第一章 项目的结构和配置

一.虚拟机
1.1下载virtual box/

1.2
使用vagrant快速创建linux虚拟机

推荐使用vagrant创建虚拟机。代替原来的。
搜索vagrant下载页面/
-Download-Windows 64-bit

1.3使用vagrant创建虚拟机
打开cmd指令框
-vagrant
-vagrant init centos/7
-vagrant up
就启动了虚拟机!
上面指令说明:
(查看vagrant镜像仓库
centos/7代表linux系统)
-init之后查看本机中users/45058中生成了一个vagrantfile

-whoami查看用户
-exit退出当前层级

连接虚拟机
-vagrant ssh

1.4虚拟网络设置-端口转发
cmd中输入
-ipconfig
查看virtual box host-only network:
192.168.56.1

打开vagrantfile中的private network
相应修改ip地址为: 192.168.56.10

重载vagrant
-vagrant reload
vagrant操作命令中输入
-ip addr
查看inet 192.168.56.10

测试:
主机ping虚拟机,
虚拟机ping主机
ping 192.168.56.10
cmd新建一个窗口,ping一下虚拟机的ip
ping 192.168.1.153
虚拟机ping本地ip地址,也能得到回复。

二.docker技术
linux安装docker,docker基于镜像启动container的运行环境
每个容器都是一个完整的运行环境。容器之间相互隔离,一个down不影响另一个。

docker hub中可搜索各种软件的镜像

2.1设置docker

文档/
-remove old…
-install…
-config manager…
-cli io…
-start…

-sudo docker images查看镜像
-sudo systemctl enable docker开机自启动

国内阿里云镜像加速(此处忽略)

2.2
docker安装mysql

2.2.1安装
-sudo docker pull mysql:5.7
-sudo docker images检查镜像是否下载
-su root

配置:端口映射:
前者为外部数据,
后者为在容器中的名字,log,数据,配置conf,用户密码
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

显示一个很长的id,就说明mysql的docker container安装好了
-docker ps查看当前所有的容器
-docker ps -a查看所有的容器

2.2.2配置mysql config文件

[root@localhost vagrant]# cd /mydata/
[root@localhost mydata]# ls
mysql
[root@localhost mydata]# cd mysql/
[root@localhost mysql]# ls
conf data log
[root@localhost mysql]#cd conf/
[root@localhost conf]#ls
[root@localhost conf]#vi myf
(粘贴配置文件中编码信息)
-i (insert mode)
(paste)
-esc(esc the insert mode)
:wq (save and exit)


[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
init_connect=‘SET NAMES utf8’
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve


[root@localhost conf]# ls
myf
[root@localhost conf]# docker restart mysql
mysql
[root@localhost conf]# docker exec -it mysql /bin/bash
root@a354f1646445:/# cd /etc/mysql/
root@a354f1646445:/etc/mysql# ls
myf
root@cf5e62ba0b3f:/etc/mysql# cat myf
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
init_connect=‘SET NAMES utf8’
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
root@cf5e62ba0b3f:/etc/mysql#

(mysql container配置结束)

几个简单的vagrant指令
vagrant up启动虚拟机
vagrant ssh连接虚拟机
su root切至根用户
密码vagrant
docker pull [app]:[version]
docker images查看所有镜像
docker ps查看所有进程
docker stop [container_ID]停止指定container
docker rm [container_ID]移除指定container
exit;退出容器回到linux主系统
docker run --rm [image_name]移除指定image
docker exec -it mysql /bin/bash 访问容器内部(每一个容器里面都是一个linux系统, 在容器内部可以进行各种命令操作, 退出容器回到linux主系统,exit即可)

2.2.2数据库sqlyog可视化
下载sqlyog软件
配置如下,即可连接docker容器中的mysql,进行可视化操作:

输入虚拟机的ip地址
-test connection
-connect

2.2.3移除
移除container
remove一个container,先stop,再remove:
[root@localhost vagrant]#

docker stop c545ee27e346

[root@localhost vagrant]#

docker rm c545ee27e346

在删除完容器后,还要手动将本地的关于容器的配置目录给删掉:
[root@localhost vagrant]#

rm -rf /mydata/mysql

移除image
[root@localhost vagrant]#

docker image rm f07dfa83b528 -f

2.3redis

2.3.1
docker安装redis

[root@localhost vagrant]# docker pull redis

[root@localhost vagrant]# mkdir -p /mydata/redis/conf
[root@localhost vagrant]# cd /mydata/
[root@localhost mydata]# ls
mysql redis
[root@localhost mydata]# cd redis/
[root@localhost redis]# ls
conf
[root@localhost redis]# cd conf/
[root@localhost conf]# touch redis.conf
[root@localhost conf]#

docker run -p 6379:6379 --name redis
-v ~/redis/data:/data
-v ~/redis/conf/redis.conf:/etc/redis/redis.conf
-d redis redis-server /etc/redis/redis.conf

68f4a1c73800d518d3cc6571e016147ff197218a43d35c132e531611803111b9

[root@localhost conf]# docker ps
[root@localhost conf]#

docker exec -it redis redis-cli

上行指令执行了redis客户端
127.0.0.1:6379> set a b
OK
127.0.0.1:6379> get a
““b””"
(redis 设置完成)

实现持久化:先输入pwd,再编辑redis.conf 加入:appendonly yes

127.0.0.1:6379>

exit

[root@localhost conf]#

pwd

/mydata/redis/conf
[root@localhost conf]#

ls

redis.conf
[root@localhost conf]#

vi redis.conf

(insert: appendonly yes)
[root@localhost conf]#

docker restart redis

[root@localhost conf]#

docker exec -it redis redis-cli

127.0.0.1:6379> set elsa huang
OK
127.0.0.1:6379> get elsa
“huang”
127.0.0.1:6379> exit
[root@localhost conf]# docker restart redis
redis
[root@localhost conf]# docker ps
[root@localhost conf]# docker exec -it redis redis-cli
127.0.0.1:6379> get elsa
“huang”
(持久化成功)

2.3.2redis可视化
redisDataManager(RDM)
![在这里插入图片描述](.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzg3OTkwOQ==,size_16,color_FFFFFF,t_70#pic_centers

三.maven环境配置
intellij中maven环境配置和vscode配置

查询文章,排除设置障碍:

3.1maven下载安装
Maven 下载地址:.cgi
解压zip到本地磁盘

3.2
在Windows系统中设置 Maven 环境变量
-search “edit the system environment variables” in system
必须先安装jdk,配置JAVA_HOME
新建系统变量 MAVEN_HOME,变量值:C:\Downloads\apache-maven-3.6.3
编辑系统变量 Path,添加变量值:
%MAVEN_HOME%\bin
cmd中查看maven版本信息:
mvn -version
验证maven是否已成功安装!

3.3发现端口被占用:
C:\Users\username>netstat -o -n -a | findstr :8080
TCP 0.0.0.0:3000 0.0.0.0:0 LISTENING 3116

C:\Users\username>taskkill /F /PID 3116

四.
数据库搭建
=15

4.1
生成多个空模块,如
gulimall-product
gulimall-order
gulimall-member
gulimall-coupon
gulimall-ware
将空模块都整合进gulimall项目中

<Modules><Module>gulimall-product<Module><Module>gulimall-order<Module><Module>gulimall-member<Module><Module>gulimall-coupon<Module><Module>gulimall-ware<Module>
</Modules>

项目的.gitignore文件中写入:

**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
.idea
**/.gitignore
这样github不会收录这些文件。

4.2
在sqlyog的虚拟机下新建gulimall_pms,gulimall_sms,gulimall_oms,gulimall_wms,gulimall_ums等schemas

选中gulimall_pms,复制相关代码到执行框中,run。

4.3
gitee页面中搜索人人开源 / renren-fast
下载人人开源的后端代码
将隐藏的.git文件删除
整个renren-fast文件夹复制gulimall文件夹中
引入renren-fast模块到gulimall中管理
查看application.yml文件,发现执行的是dev配置
修改application-dev.yml文件中的数据源信息

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.56.10:3306/gulimall_admin?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: root

renren-fast在8080端口上跑起来
同时,下载renren-fast-vue,在vscode的terminal中使用指令
-npm run dev
实现前后端联调

前端浏览器跳转:http://localhost:8001/#/login
账号密码:
admin
admin
*这里后端一定是要8080端口才可以出现验证码。

进入页面,说明联调成功!

五.逆向工程生成crud代码
=17

5.1
gitee页面中搜索人人开源 / renren-generator
将隐藏的.git文件删除
整个renren-generator文件夹复制进入gulimall项目文件中

修改yml文件中的配置:
修改properties文件中的配置:

!!!踩坑:

plugin中一直报错:
5.1.1: org.codehaus.mojo:wagon-maven-plugin报错:repository.codehaus shut down
codehaus has been effectively shut down as an artifact repository.codehaus has been effectively shut down as an artifact repository.

5.1.2.docker-maven-plugin报错:
We recommend you use dockerfile-maven instead.

The future of docker-maven-plugin
This plugin was the initial Maven plugin used at Spotify for building Docker images out of Java services. It was initially created in 2014 when we first began experimenting with Docker. This plugin is capable of generating a Dockerfile for you based on configuration in the pom.xml file for things like the FROM image, resources to add with ADD/COPY, etc.
*也就是说,这两个plugin不再更新了,所以删掉无妨。不影响后来程序运行。

5.2
renren-generator的配置文件中,找到generator.properties
修改mainPath,package,模块名称,作者,email等信息

#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606FmainPath=com.atguigu
#\u5305\u540D
package=com.atguigu.gulimall
moduleName=member
#\u4F5C\u8005
author=chensh
#Email
email=chensh@gmail
#\u8868\u524D\u7F00(\u7C7B\u540D\u4E0D\u4F1A\u5305\u542B\u8868\u524D\u7F00)
tablePrefix=ums_

application.yml文件中配置driverClassName,url,username,password等信息。

server:port: 80# mysql
spring:datasource:type: com.alibaba.druid.pool.DruidDataSource#MySQL配置driverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.56.10:3306/gulimall_ums?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghaiusername: rootpassword: root

application main function跑起来,就在renren-fast代码生成器可视化端口看到了逆向生成的crud代码!
选择所有的代码,下载并复制main文件夹,替代原有的文件夹。
生成代码后,发现有不少标红的地方:进入第六点,配置mybatisX。

新建一个gulimall-common
装下多个模块需要的公共组件
从renren-fast中拷贝以下写好的utils到gulimall-common下的utils包中:
R
Query
PageUtils
Constant
RRException
从renren-fast中拷贝以下写好的xxs到gulimall-common下的
xxs包中:
HTMLFilter
SQLFilter

然后把common组件,加入到各个module中:

        <dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency>

在common的配置pom文件中安装>mybatis-plus,lombok,httpcore,servlet-api,mysql-connector,commons-lang等依赖:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.12</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version><scope>compile</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.22</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency>

provided表示打包的时候,不打进去。

六.整合mybatisX

6.1.导入依赖

com.baomidou
mybatis-plus-boot-starter
3.3.1

6.2.配置
6.2.1配置数据库源
1》导入数据源驱动
2》在gulimall-product – application.yml配置数据源相关信息

spring:datasource:username: rootpassword: rooturl: jdbc:mysql://192.168.56.10/gulimall_smsdriver-class-name: com.mysql.jdbc.Driver
mybatis-plus:mapper-locations: classpath:/mapper/**/*.xml
#  自己类路径下的mapper中的所有xml文件
#  classpath*:/mapper/**/*.xml 所有依赖的jar包中的xml文件global-config:db-config:id-type: auto
#      组件自增,id可以自增

6.2.2配置mybatisX in Common module:
1》使用@MapperScan
@MapperScan(“com.atguigu.gulimall.coupon.dao”)

2》告诉mybatisX映射文件位置
mybatis-plus:
mapper-location: classpath:/mapper//.xml
(自己类路径下的mapper中的所有xml文件)
(classpath
:/mapper/
/*.xml :所有依赖的jar包中的xml文件)

6.3将来使用shiro时再配置相关,当前先在renren-generator中,把相关注解comment掉。保证逆向生成的代码中,不会有这部分:

//@RequiresPermissions(" m o d u l e N a m e : {moduleName}: moduleName:{pathName}:info")
//@RequiresPermissions……

6.4测试
测试1:

package com.atguigu.gulimall.product;@SpringBootTest
class GulimallProductApplicationTests {@AutowiredBrandService brandService;@Testvoid contextLoads() {BrandEntity brandEntity = new BrandEntity();brandEntity.setName("huawei2021");brandService.save(brandEntity);System.out.println("save成功啦!");}
}

测试结果:

!!!端口占用,杀死线程
1.在开始-运行-cmd,输入:netstat –ano 可以查看所有进程
如:查询占用了8080端口的进程:netstat -ano|findstr “8080”
2.taskkill /pid 7136 -t -f

7.逆向生成所有crud代码
=19
打开http://localhost/#generator.html

将main文件夹拷贝、替换每个module中原有的main文件夹。
给每一个模块的pom中引入
注意:检查每一个模块中,
GulimalllProductApplication.java这个文件需要保留

  <dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
spring:datasource:username: rootpassword: rooturl: jdbc:mysql://192.168.56.10/gulimall_pmsdriver-class-name: com.mysql.jdbc.Driver
mybatis-plus:mapper-locations: classpath:/mapper/**/*.xml#  自己类路径下的mapper中的所有xml文件#  classpath*:/mapper/**/*.xml 所有依赖的jar包中的xml文件global-config:db-config:id-type: auto
#      组件自增,id可以自增server:port: 7000

5个不同的application,分配好不同端口:
7000,8000,9000,10000,11000

测试运行任意api / endpoint:
http://localhost:11000/ware/ware/list

8.SpringCloud Alibaba[难点]

=20

SpringCloud部分组件停止更新,复杂

SpringCloud Alibaba设计合理,还有人性化的可视化界面

.html

8.1在common的pom文件中配置nacos:
当前推荐的是1.3.1(但是也用不了)

.3.1

<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!--            <version>2.2.1.RELEASE</version>--></dependency></dependencies>
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.0.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

8.2下载server
Nacos-注册中心
下载1.2.1终于可以启动了! /


双击conf文件夹中的startup文件:
8.3添加内容到相应模块的application.yml 配置文件中

spring:datasource:username: rootpassword: rooturl: jdbc:mysql://192.168.56.10:3306/gulimall_ums?serverTimezone=UTCdriver-class-name: com.mysql.cj.jdbc.Drivercloud:nacos:discovery:server-addr: 127.0.0.1:8848application:name: gulimall-membermybatis-plus:mapper-locations: classpath*:/mapper/**/*.xmlglobal-config:db-config:id-type: auto
server:port: 8000

8.4添加@EnableDiscoveryClient到
GulimallMemberApplication.java 启动类

@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {public static void main(String[] args) {SpringApplication.run(GulimallMemberApplication.class, args);}
}

8.5打开http://127.0.0.1:8848/nacos查看可视化客户端
用户名:nacos
密码:nacos

8.6 给服务起名字:

spring:datasource:username: rootpassword: rooturl: jdbc:mysql://192.168.56.10/gulimall_smsdriver-class-name: com.mysql.jdbc.Drivercloud:nacos:discovery:server-addr: 127.0.0.1:8848application:name: gulimall-coupon

run nacos:添加链接描述

启动后server的名字出现在nacos注册中心中:

看到module server名字出现在server list中
注册就完成了!
剩下几个modules,就请重复8.3和8.4

8.7番外:如果nacos启动出错:尝试用standalone模式run nacos

standalone mode:
C:\Users\45058\Downloads\nacos\nacos\bin>startup.cmd -m standalone
如果出错,查询:
tail -f
如果端口被占用
kill -9 [pid]

9.open-feign【没成功】
=22
想要远程调用别的服务
9.1.引入open-feign
例子:
在coupon的controller中写入

@RequestMapping("/user/list")public R usercoupons(){CouponEntity couponEntity=new CouponEntity();couponEntity.setCouponName("满100减10");return R.ok().put("coupons",Arrays.asList(couponEntity));}

9.2.编写一个接口,告诉SpringCloud这个接口需要调用远程服务
例如,user需要调用coupon的服务
在user中check是否有open-feign的依赖
在user中创一个feign的包
包里写一个CouponFeignService的接口

package com.atguigu.gulimall.user.feign;import com.atguigumon.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;@FeignClient("gulimall-coupon")public interface CouponFeignService {@RequestMapping("/coupon/coupon/user/list")public R usercoupons();
}

路径写全!

声明接口的每一个方法,都是调用哪个远程服务的哪个请求。

9.3.@EnableFeignClients开启远程调用功能:

@EnableFeignClients(basePackages = "com.atguigu.gulimall.user.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallUserApplication {
}

9.4.测试:
在coupon的UserController里下写一个test

@Autowired
CouponFeignService couponFeignService;@RequestMapping("/coupons")
public R test(){UserEntity userEntity=new UserEntity();userEntity.setNickname("Zhangsan");R usercoupons=couponFeignService.usercoupons();return R.ok().put("user",userEntity).put("coupons",usercoupons.get("coupons"));        
}

http://localhost:8000/member/user/coupons
应该没有出现coupon信息,说明openFeign设置有问题。
member call coupon的过程哪里出错了?

http://localhost:7000/coupon/coupon/user/list
出现了coupon信息:

{“msg”:“success”,“code”:0,“coupons”:[{“id”:null,“couponType”:null,“couponImg”:null,“couponName”:“满100减10”,“num”:null,“amount”:null,“perLimit”:null,“minPoint”:null,“startTime”:null,“endTime”:null,“useType”:null,“note”:null,“publishCount”:null,“useCount”:null,“receiveCount”:null,“enableStartTime”:null,“enableEndTime”:null,“code”:null,“memberLevel”:null,“publish”:null}]}

http://localhost:7000/coupon/coupon/test

{“msg”:“success”,“code”:0,“name”:“zhangsan”,“age”:18}


参考文章:配置open feign
/

踩坑:一直报错:
Error creating bean with name ‘com.atguigu.gulimall.user.feign.CouponFeignService’:
FactoryBean threw exception on object creation;
nested exception is java.lang.IllegalStateException:
No Feign Client for loadBalancing defined.
Did you forget to include spring-cloud-starter-loadbalancer?

怎么解决?有人建议降低boot和cloud的版本号,在哪里降?如何降?

cloud nacos配置中心:
=23

spring_cloud_alibaba_nacos_config

10.1
给common中添加依赖

<!--config center--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

10.2
在任意一个module中,添加静态文件bootstrap.properties

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

gulimall-coupon是当前的模块名
127.0.0.1:8848表示本机的8848端口
application.properties中写上:

user.name=zhangsan
user.age=18

10.2.2测试:

public class CouponController {
//++@Value("${user.name}")private String name;@Value("${user.age}")private Integer age;@RequestMapping("/test")public R test(){return R.ok().put("name", name).put("age",age);}

run起来!发现这里显示了系统名,
{“msg”:“success”,“code”:0,“name”:“45058”,“age”:18}
而没有显示指定的zhangsan:

修改成专门针对coupon这个module的变量名:
application.properties中改为:

coupon.user.name=zhangsan
coupon.user.age=18

CouponController中改为

public class CouponController {
//++@Value("${coupon.user.name}")private String name;@Value("${coupon.user.age}")private Integer age;@RequestMapping("/test")public R test(){return R.ok().put("name", name).put("age",age);}

结果:{“msg”:“success”,“code”:0,“name”:“zhangsan”,“age”:18}

但是,如果已经部署,每次还要修改properties文件,十分麻烦。这就需要Nacos作为配置中心,进行自动的配置,批量的修改。

10.3使用Nacos实现统一管理配置:
10.3.1配置中心中添加一个数据集data Id
查看console中的信息,发现“gullimall-coupon.properties”这个默认配置文件名。
在Nacos中的configurations,点击右侧+加号新建一个“gullimall-coupon.properties

10.4给gullimall-coupon.properties填写内容:
coupon.user.name=zhangsan
coupon.user.age=25
点击publish

10.5动态获取配置
在CouponController内添加@RefreshScope,重启CouponApplication,刷新http://localhost:7000/coupon/coupon/test查看结果,如果已经改变,说明配置成功。

@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {

------1/6/2021

------6/27/2021重启项目-------
=24
name space prod + 11.11 group
uuid + 1111
isolate according to environment, and group

加载多个配置集
分组进行配置管理
写上.properties
.yml

api gateway

route request to healthy server/machine to handle
-route
-predicate (before,after,btw, cookie, header,method,host, path,query, etc)
-filter (addrequestheader, addrequestpara, etc)

check/predicate =true------>route to a server / ----->route to b server

spring:cloud:gateway:routes:- id: test_routeuri: :- Query: url,baidu- id: qq_routeuri: :- Query: url,qq

如果url中输入baidu,就跳转到

第二章 前端

第三章 商品API

任务1:查询一级分类:

在这里插入代码片

番外:
kill process in Mac
##一、查看指定端口的进程
sudo lsof -i :27017

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
[mongod] 859 zhangsan 313u IPv6 0x1111111111111 0t0 TCP *:cslistener (LISTEN)

二、根据进程名称

ps -ef | grep nginx

501 17780 1 0 8:36下午 ?? 0:00.00 nginx: master process nginx
501 17781 17780 0 8:36下午 ?? 0:00.00 nginx: worker process
501 17790 14611 0 8:39下午 ttys004 0:00.00 grep nginx

然后根据PID杀进程:
sudo kill -9 859

更多推荐

商城spring boot+spring cloud项目笔记

本文发布于:2024-03-10 04:59:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727060.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笔记   商城   项目   boot   spring

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!