
1.搭建Java部署環境1.1aptapt (Advanced Packaging Tool), Linux軟件包管理?具.?于在Ubuntu、Debian和相關Linux發?版上安裝、更新、刪除和管理deb軟件包.?多數apt命令必須以具有sudo權限的???份運? 或者是管理身份運行如果切換到root??,命令前就不需要加sudo了apt常?命令# 列出所有軟件包 apt list # 輸出所有包的列表,內容?較多,可以使?grep命令過濾輸出 apt list |grep java # 更新軟件包數據 sudo apt-get update # 安裝軟件包 sudo apt install package_name # 刪除軟件包 sudo apt remove package_nameremove命令將卸載給定的軟件包但可能會留下?些配置?件。如果要刪除包含所有配置?件的軟包請使?purge?不是removeapt remove 和 apt purge 的區別? apt remove 刪除包的?進制?件,它留下了殘留的配置?件.? apt purge 刪除與包相關的所有內容,包括配置?件.如果弄亂了程序的配置,希望從系統中完全清除它的痕跡再重新開始,可以使? apt purge通常使? apt remove 就?夠了1.2JDK更新軟件包數據sudo apt-get update安裝jdk 對應的版本#查找jdk包 apt list |grep jdk #安裝jdk sudo apt install openjdk-17-jdk使?java -version 驗證是否安裝成功.如果提?java命令找不到則說明安裝失敗.如果顯示java版本號則說明安裝成功.卸載JDK檢查安裝的是哪個OpenJDK # dpkg --list | grep -i jdk 移除 openjdk包: # apt-get purge openjdk* 卸載 OpenJDK 相關包 # apt-get purge icedtea-* openjdk-* 檢查所有 OpenJDK包是否都已卸載完畢 # dpkg --list | grep -i jdk1.3Mysql使?apt安裝MySQL#查找安裝包 apt list |grep mysql-server #安裝mysql sudo apt install mysql-server查看MySQL狀態顯示active (running) 就好了sudo systemctl status mysqlMySQL安裝安全設置默認的MySQL設置是不安全的,MySQL安裝提供了?個安全腳本,?于解決不太安全的默認選項.sudo mysql_secure_installation接下來按照提?輸?roothcss-ecs-0bb1:~# sudo mysql_secure_installation #安裝安全設置? Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y #是否設置驗證密碼組件? There are three levels of password validation policy: LOW Length 8 MEDIUM Length 8, numeric, mixed case, and special characters STRONG Length 8, numeric, mixed case, special characters and dictionary file Please enter 0 LOW, 1 MEDIUM and 2 STRONG: 2 #設置密碼強度? Skipping password set for root as authentication with auth_socket is used by default. If you would like to use password authentication instead, this can be done with the ALTER_USER command. See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-userpassword-management for more information. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y #默認情況下MySQL安裝有?個匿名??, 允許任何?登錄MySQL. 是否刪除匿名??? Success. Normally, root should only be allowed to connect from localhost. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y #僅 應允許root從localhost連接? Success. By default, MySQL comes with a database named test that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y #默認情況下, MySQL帶有?個test數據庫, 是否刪除?? - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y #是否現在加載配置, 使剛才的修改?效? ? Success. All done!1.4. 設置密碼連接mysql服務器sudo mysql使?alter user 命令修改密碼ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY XXXXXXX;這個XXX代表的是剛才設置的密碼卸載MySQL#停?mysql sudo systemctl stop mysql #卸載mysql sudo apt-get remove --purge mysql-server mysql-client mysql-common #刪除 MySQL 配置?件和數據 sudo rm -rf /etc/mysql /var/lib/mysql #清理殘留?件和?錄 sudo apt-get autoremove sudo apt-get autoclean #驗證卸載結果 mysql --version2.部署Web項?到Linux1 .什么是部署?作中涉及到的環境? 開發環境:開發?員寫代碼?的機器.? 測試環境:測試?員測試程序使?的機器.? ?產環境(線上環境):最終項?發布時所使?的機器.對穩定性要求很?.把程序安裝到?產環境上,這個過程稱為部署.也叫上線.?旦程序部署成功,那么這個程序就能被外?中千千萬萬的普通??訪問到。換句話說,如果程有BUG,這個BUG也就被千千萬萬的??看到了.部署過程?關重要,屬于程序開發中最重要的?環.?旦部署出現問題,極有可能導致嚴重的事故(服務器不可?之類的).為了防?部署出錯,?般公司內部都有?些?動化部署?具(如Jenkins等).當前我們先使???部署的?式來完成部署 。2.環境配置程序正常運?,需要保證環境和程序都要正確,我們需要先設置環境數據準備按照之前的數據庫建表腳本,在服務器上運?,建?相同的表結構.程序配置?件修改實際?作中,開發環境,測試環境以及?產環境的配置都是不?樣的?如mysql的??名和密碼我們可以針對不同的環境,設置不同的配置多平臺?件配置針對不同平臺創建不同的配置?件,要求名字為application-XXX.yml或者application-XXX.properties以下以application-XXX.yml為例開發環境dev測試環境test生產環境prod固定格式,只有后?的字?可以修改在配置?件?寫不同的內容application-dev.yml注意自己的數據庫用戶名和密碼自己設置的spring: datasource: url: jdbc:mysql://127.0.0.1:3306/java_blog_spring? characterEncodingutf8useSSLfalse username: root password: root driver-class-name: com.mysql.cj.jdbc.Driverapplication-prod.ymlspring: datasource: url: jdbc:mysql://127.0.0.1:3306/java_blog_spring? characterEncodingutf8useSSLfalse username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver在主配置?件 application.yml 中指定配置?件,并刪除數據庫相關配置spring: profiles: active: prod從Maven中讀取環境配置變量profiles profile iddev/id properties profile.namedev/profile.name /properties /profile profile idprod/id activation activeByDefaulttrue/activeByDefault /activation properties profile.nameprod/profile.name /properties /profile /profiles修改 application.ymlspring: profiles: active: profile.name3.構建項?并打包在本地使?maven進?打包如果Test代碼中有與環境配置相關的操作(?如數據庫相關的操作),打包會失敗,點擊下圖①處的圖標,可以跳過測試點擊clean-package出現這個就是打包成功4.上傳Jar包到服務器,并運?4.1. 上傳Jar包直接拖動打好的jar包到xshell窗即可完成?件的上傳Xshell可以直接拖動?件到窗,達到上傳?件的?的,如果使?其他客?端,不?持?件的上傳,需要借助lrzsz命令1.上傳文件sz filename2.下載文件rz執?該命令后在彈出框中選擇要上傳的?件即可,上傳的速度取決于?絡.問題:如果執?上述命令之后,提? Command ‘XX’ not found ,表?當前云服務器未安裝lrzsz命令,需要先進?安裝3. 安裝lrzszapt-get install lrzsz4.2 運行程序nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar nohup:后臺運?程序.?于在系統后臺不掛斷地運?命令退出終端不會影響程序的運?.語法格式:nohup Command [ Arg … ] [ ] 參數說明: Command要執?的命令。 Arg?些參數可以指定輸出?件 讓命令在后臺執?終端退出后命令仍舊執? ?如: nohup java -jar blog-0.0.1-SAPSHOT.jar /logs **Linux可以通過 把需要輸出的內容寫到指定?件中.這樣的操作稱為重定向.**4.3 開放端口號如果外?需要訪問該服務,需要先服務器防?墻開放對應的端?號本著服務器安全的原則云服務器上的端?必要不開啟.?如常?端號:數據庫3306,Redis6379,盡可能避免開放,?是采?其他?式來接,?如配置隧道的?式5.驗證程序訪問項目需要改云服務的ip 和端口號按照項?的功能進?驗證? 驗證賬?注冊登錄? 驗證展?博客列表? 驗證新增博客? 驗證展?博客內容? …6. 常見問題?個程序的正常運?,需要程序的正確和環境的正確.同樣的代碼在Windows上可以運?成功,不?定在Linux上運?成功.不同的系統對代碼的理解和?持是不的.?如Windows系統對MySQL不區分??寫,Linux區分??寫服務不能正常訪問的原因有很多,主要分以下???服務未啟動a. 使?ps -ef|grep java查看程序是否在運?b. 使?curl 自己的鏈接看下是否有返回html??,如果有返回,說明程序啟動成功了,考慮端未開放c. 如果未啟動成功,需要查看對應的?志,根據原因來分析.i. 數據庫不存在ii. 表不存在(區分??寫)iii. 數據庫密碼不正確iv. Jdk安裝版本不對,或者未安裝v. mysql未設置密碼vi. …http端未開放檢查云服務器防?墻/安全組是否開放相應端?(如8080)7. 殺掉進程如果我們需要重啟服務,或者重新部署等,都需要先停?之前的服務查看當前服務的進程ps -ef|grep java上圖35443就是該服務的進程.2. 殺掉進程kill -9 PID8.總結連接Linux服務器的?式有很多,xshell只是其中?種.xshell是?個客?端,??服務器.Ubuntu軟件管理?具是apt,他的linux發?版本軟件包管理?具不同,?如CentOS是使?yum來管理軟件的SpringBoot可以使?多個配置?件來完成不同平臺的配置.在Window上可以運?成功的代碼,在Linux上不?定能運?成功.啟動程序需要使?nohup后臺運?,需要停?服務時,使?kill命令