8.1 單元測(cè)試

-
單元測(cè)試
圖片.png
-
測(cè)試方法之間不要有依賴關(guān)系。
因?yàn)槲覀兊膯卧獪y(cè)試并不是僅僅使用一次。
-
如何保證獨(dú)立性呢?
圖片.png -
測(cè)試代碼:
圖片.png

- 測(cè)試過(guò)程:
直接運(yùn)行整個(gè)測(cè)試類。
在測(cè)試的時(shí)候并不是輸出,而是使用assert。
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class SpringBootTests {
@Autowired
private DiscussPostService discussPostService;
private DiscussPost data;
@BeforeClass
public static void beforeClass() {
System.out.println("beforeClass");
}
@AfterClass
public static void afterClass() {
System.out.println("afterClass");
}
@Before
public void before() {
System.out.println("before");
// 初始化測(cè)試數(shù)據(jù)
data = new DiscussPost();
data.setUserId(111);
data.setTitle("Test Title");
data.setContent("Test Content");
data.setCreateTime(new Date());
discussPostService.addDiscussPost(data);
}
@After
public void after() {
System.out.println("after");
// 刪除測(cè)試數(shù)據(jù)
discussPostService.updateStatus(data.getId(), 2);
}
@Test
public void test1() {
System.out.println("test1");
}
@Test
public void test2() {
System.out.println("test2");
}
@Test
public void testFindById() {
DiscussPost post = discussPostService.findDiscussPostById(data.getId());
Assert.assertNotNull(post);
Assert.assertEquals(data.getTitle(), post.getTitle());
Assert.assertEquals(data.getContent(), post.getContent());
}
@Test
public void testUpdateScore() {
int rows = discussPostService.updateScore(data.getId(), 2000.00);
Assert.assertEquals(1, rows);
DiscussPost post = discussPostService.findDiscussPostById(data.getId());
Assert.assertEquals(2000.00, post.getScore(), 2);
}
}
8.2 項(xiàng)目監(jiān)控

本節(jié)是關(guān)于項(xiàng)目上線之后如何對(duì)其進(jìn)行監(jiān)控,檢測(cè)其是否穩(wěn)定。

localhost:8080/actuator/端點(diǎn)id。
按需配置端點(diǎn),有被別人竊取的風(fēng)險(xiǎn)。
而且,應(yīng)該加上權(quán)限控制,只有管理員可以進(jìn)行訪問(wèn),否則項(xiàng)目底層的內(nèi)容就會(huì)被別人窺探到

導(dǎo)入之后,啟動(dòng)應(yīng)用就可以訪問(wèn)某些端點(diǎn),但是不能訪問(wèn)所有的。
啟動(dòng),訪問(wèn)端點(diǎn):
以下兩個(gè)端點(diǎn)是開(kāi)放的:


還有其他的端點(diǎn)需要進(jìn)行配置:

返回當(dāng)前應(yīng)用中所有的bean:


每個(gè)端點(diǎn)展示出一方面的內(nèi)容。
-
自定義端點(diǎn),監(jiān)控個(gè)性化的內(nèi)容
圖片.png
連接池是由spring容器進(jìn)行管理的。

注解表示這個(gè)方法是通過(guò)get請(qǐng)求進(jìn)行訪問(wèn)的。

-
進(jìn)行訪問(wèn):
圖片.png -
對(duì)端點(diǎn)的路徑進(jìn)行權(quán)限管理:
圖片.png
8.3 項(xiàng)目部署

- 安裝軟件
- 調(diào)整代碼
- 進(jìn)行部署

右鍵,復(fù)制鏈接地址,然后使用linux命令行進(jìn)行下載。
能用yum就使用yum下載,否則就是用安裝包。


以上的這些是使用安裝包進(jìn)行下載的,剩下的需要使用yum進(jìn)行安裝。
本地向服務(wù)器傳代碼:


-
安裝解壓縮工具unzip:
使用yum方式進(jìn)行安裝
yum install -y
-y表示需要進(jìn)行選擇的地方全部都是yes。
圖片.png
- 安裝jre
yum list java*
//選擇java-latest-openjdk.x86_64
yum install -y java-latest-openjdk.x86_64
java -version
//查詢版本
【使用yum安裝工具,他會(huì)幫助我們將該配置的東西都配置完成,比較方便】
-
安裝maven
cd root
//到安裝的目錄下
//通常我們將安裝的程序放在opt目錄下,因此我們將程序解壓縮到哪個(gè)目錄下面即可
tar zxvf apache-maven-3.6.3-bin.tar.gz -C /opt
圖片.png
拷貝:/opt/apache-maven-3.6.3 為了配置環(huán)境變量
-
配環(huán)境變量
將環(huán)境變量配置到/etc/profile文件夾下面
vim /etc/profile【按i進(jìn)入編輯模式】
圖片.png
【含義:${}表示原本的值,使用:進(jìn)行追加,也就將原來(lái)的path追加上maven的路徑,再寫回之前的path】
圖片.png
現(xiàn)在還沒(méi)有生效
source /etc/profile
//文件生效
//打印出path變量
echo $PATH
mvn -version
//結(jié)果發(fā)現(xiàn)并不存在,命令配置錯(cuò)了,應(yīng)該配置的是apache-maven下面的bin文件夾....
重新配置之后,沒(méi)有問(wèn)題了
-
更改maven的配置文件,將其鏡像設(shè)置成為阿里云?!疽彩菫榱瞬粡闹醒雮}(cāng)庫(kù)進(jìn)行下載是嗎?】
//pwd查看當(dāng)前在哪兒
圖片.png
編輯里面的settings文件。
將mirror配置成阿里云的,可以從本機(jī)進(jìn)行拷貝
-
安裝mysql
yum庫(kù)的版本雖然穩(wěn)定,但是版本太低了,因此我們使用自己下載的。我們將最新的下載之后就能夠再yum庫(kù)中搜索到了。
圖片.png
圖片.png
再次搜索,內(nèi)容就比較多了。
圖片.png
裝mysql服務(wù)器
圖片.png
圖片.png
啟動(dòng)mysql的服務(wù):
啟動(dòng)使用yum安裝的工具:
圖片.png
mysqld是指mysql服務(wù)器后臺(tái)的名字
查看當(dāng)前服務(wù)的狀態(tài):【active running 】

安裝的時(shí)候會(huì)生成一個(gè)臨時(shí)的密碼,密碼在日志文件中。下面是從文件中搜素password這個(gè)單詞。


登錄mysql,并設(shè)置我們自己的密碼:
mysql -uroot -p 'password'>登錄
linux要求密碼必須得有大寫字母,特殊符號(hào)和數(shù)字。

exit>重新登錄
-
導(dǎo)入數(shù)據(jù)
圖片.png
登錄數(shù)據(jù)庫(kù),然后建庫(kù):
Create datebase community
use community
source /root/init-sql/-scheme.sql
source /root/init-sql/data.sql
source /root/init-sql/data.sql //還得導(dǎo)入定時(shí)任務(wù)所需的表
show tables
稍微調(diào)整user表的數(shù)據(jù):
將帶有l(wèi)ocalhost的headerUrl進(jìn)行調(diào)整。

再差一下就沒(méi)有了
yum list redis*
yum install -y XXXXX
systemctl start redis//啟動(dòng)redis
systemctl status redis
//查看狀態(tài)
綠了,是正確的。redis可以用了

redis-cli
//訪問(wèn)redis
exit或者ctrl+c都可退出
裝kafka
tar zxvf kafka_2.11-2.4.0.tgz -C /opt

路徑不需要更改。
- 啟動(dòng)zookeeper【后臺(tái)方式】
-
啟動(dòng)kafka
-查詢主題
圖片.png
安裝elasticSearch
tar zxvf elasticsearch-7.6.0-linux-x86_64.tar.gz -C /op
unzip -d /opt/elasticsearch-7.6.0-linux-x86_64/plugins/ik elasticsearch-analysis-ik



- 配置elasticsearch


-
再改一下這個(gè)
修改一下elasticearch占用java的內(nèi)存空間,默認(rèn)占用了1G,太大了。
圖片.png
圖片.png
elasticearch要求不能使用root用戶啟動(dòng),必須使用普通用戶啟動(dòng)。
-
新建一個(gè)普通用戶
/增加一個(gè)用戶組
groupadd cym
//在組里建一個(gè)用戶
圖片.png
設(shè)置用戶權(quán)限,使之能訪問(wèn)ealsticsearch這個(gè)目錄。以及能夠訪問(wèn)tmp文件,里面記錄的有日志文件等數(shù)據(jù)。

為啥有個(gè)nowcoder:

后臺(tái)方式啟動(dòng)elasticsearch:

su -
//切換回root用戶
//訪問(wèn)elasticsearch服務(wù),檢查一個(gè)服務(wù)器是不是健康

使用yum安裝wkhtmltopdf
略
安裝之后還不能使用,因?yàn)閘inux是一個(gè)純服務(wù)器。他沒(méi)有g(shù)ui程序,沒(méi)有能夠處理界面的程序。
需要安裝一個(gè)虛擬的gui服務(wù)器。
yum list xvfb
yum install -y xorg-x11-server-Xvfb.x86_64
/接下來(lái)測(cè)試一下能不能生成圖片
cd /root/test

我們可以字節(jié)寫一個(gè)腳本,將前面的命令進(jìn)行封裝。
//復(fù)制前面的命令
cd /opt
//在這個(gè)文件中自己寫一個(gè)腳本
vim wkhtmltoimage.sh//這是這個(gè)腳本的名字

最后的引號(hào)里面表示參數(shù)的意思;
ll
//可以查看文件已經(jīng)生成了,但是此時(shí),這個(gè)文件只有讀寫權(quán)限,卻沒(méi)有執(zhí)行權(quán)限。

同樣可以使用
安裝tomcat
tar zvxf apache-tomcat-9.0.31.tar.gz -C /opt
配置環(huán)境變量

然后通過(guò)pwd得到bin的路徑,進(jìn)行環(huán)境變量的配置。
保存之后,還得生效
source /etc/profile

maven為什么重復(fù)了,沒(méi)事兒。。。
啟動(dòng)tomcat

我們部署的項(xiàng)目就放在webapp中:

查看里面默認(rèn)帶的項(xiàng)目:

yum安裝ngix
yum install -y nginx.x86_64
需要進(jìn)行配置才能讓nginx分發(fā)請(qǐng)求給tomcat
vim /etc/nginx/nginx.conf
主要是配置里面的server
配置一下真實(shí)的服務(wù)器里面有多少個(gè)tomcat。
將文件里面的哪個(gè)服務(wù)器注銷掉,不要?jiǎng)h掉哦
用nginx代理服務(wù)器,叫做反向代理
代理瀏覽器的叫做正向代理,也叫做代理。
如果分發(fā)了三次請(qǐng)求都沒(méi)有相應(yīng),就會(huì)認(rèn)為是tomcat掛掉了,將其移除服務(wù)器的集合。過(guò)了30s之后再訪問(wèn)tomcat看看tomcat有沒(méi)有活過(guò)來(lái)。

下面再配置一個(gè)虛擬的服務(wù)器:
得有分號(hào)結(jié)尾;

啟動(dòng)一下,因?yàn)槭鞘褂脃um安裝的,所以它的啟動(dòng)服務(wù)已經(jīng)安裝好了。
systemctl start nginx
systemctl status nginx
//出現(xiàn)了狀態(tài)是running
此時(shí)直接訪問(wèn)ip,即可訪問(wèn)服務(wù)
裝完了~~~





















