從0搭建屬於自己的伺服器
最近小夥伴推薦的華為雲活動,購買伺服器相當的划算,本人也是耗費巨資購買了一臺2核4G HECS雲伺服器。
話不多說,在這裡給華為雲打一個廣子,活動力度還是很不錯的。
活動詳情見連結:https://kuy8.com/xcGtU
1、購買與搭建
一般個人使用,我覺得2核4G的已經綽綽有餘啦,所以本文也是基於這個配置來搭建的(看準最便宜的下手?)
點選進入詳情頁,然後選擇指定的系統映象即可完成伺服器的初始化工作
初始化需要一點點時間,讓子彈飛一會兒,伺服器初始化完成之後,我們去控制檯可以看到我們剛剛購買的伺服器
在控制檯出現如上介面,就說明伺服器已經搭建完成,接下來讓我們看看如何連線到這個遠端伺服器!
2、透過SSH工具連線
由於我們預設配置的伺服器系統是LINUX7.6版本,所以我們透過遠端工具對其進行連線需要伺服器對外開放22埠號。
我們點選進入伺服器詳細資訊頁面,看到安全組的預設開放已經將其開放。
這樣我們就可以透過工具對其連線了。
Tips:不曉得密碼的話,這邊建議直接充值密碼,點選右側更多進行重置密碼
現在我們知道了使用者名稱root和密碼之後,我們進入工具進行連線
輸入公網ip地址,賬戶名以及密碼這些重要資訊之後即可進行連線:
連線成功如下所示:
3、搭建Docker容器
對於我個人來說,本人比較喜歡使用docker來配置一些服務,例如MySQL、Nginx、Tomcat等。
具體介紹 ?Docker介紹
具體流程:
(1)yum包更新到最新
sudo yum update
這個過程需要等5~10min,具體看網路情況,出現如下圖即表示完成:
(2)安裝需要的軟體包,yum-util提供yum-config-manager功能,另外兩個是devicemapper驅動依賴
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
安裝成功如下圖所示:
(3)設定yum源為阿里雲
這個小操作是為了以後下載映象可以更快一點!
#3.1設定映象源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#3.2
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
(4)更新並安裝Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
(5)安裝完成後檢視版本
docker -v
出現如下圖所示即表示docker安裝成功
(6)開啟Docker服務
sudo service docker start
# 注意:
# 官方軟體源預設啟用了最新的軟體,您可以透過編輯軟體源的方式獲取各個版本的軟體包。例如官方並沒有將測試版本的軟體源置為可用,您可以透過以下方式開啟。同理可以開啟各種測試版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 將[docker-ce-test]下方的enabled=0修改為enabled=1
#
# 安裝指定版本的Docker-CE:
# Step 1: 查詢Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安裝指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
執行成功之後,我們再輸入命令:docker version
到這裡docker就成功的安裝了,接下來我們配置一些常用的映象。
4、Docker下配置Nginx
Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器 ,同時也提供了IMAP/POP3/SMTP服務。
Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力在同型別的網頁伺服器中表現較好。
詳情見?nginx介紹
# service 命令的用法
$ sudo service docker start
# systemctl 命令的用法
$ sudo systemctl start docker
Docker把應用程式及其依賴,打包在 image 檔案中。
只有透過 image 檔案,才能生成 Docker 容器。
image 檔案可以看作是容器的模板。Docker 根據 image 檔案生成容器的例項。
同一個 image 檔案,可以生成多個執行的容器例項。
image 是二進位制檔案。實際開發中,一個 image 檔案往往透過繼承另一個 image 檔案,加上一些個性化設定而生成。
# 列出本機的所有 image 檔案。
$ sudo docker image ls
# 刪除 image 檔案
$ sudo docker image rm [imageName]
1、部署流程:
- 搜尋Nginx映象
docker search nginx
- 拉取Nginx映象
docker pull nginx
- 檢視映象名為nginx的映象
docker images nginx
- 執行映象,生成容器
# 命令解讀:
# -d:以後臺守護執行緒執行
# --name:容器命名
# -p 80:80 : 對映埠,容器內部80埠對映到伺服器80埠
# nginx :指定的映象(可以透過docker images 檢視)
docker run -di --name nginx80 -p 80:80 nginx(映象ID或者映象名字都可以)
- 檢視容器
docker ps
6. 輸入公網ip地址:ip:80
出現如上圖歡迎頁,即表示nginx部署成功
2、配置檔案
- 進入容器內部修改配置檔案
# 進入容器內部
docker exec -it nginx /bin/bash
# 直接修改配置
vim /etc/nginx/nginx.conf
肯定有些童鞋想問,那麼上面的配置檔案路徑是如何得知的?
透過檔案查詢命令查(按照名稱模糊全域性查詢檔案)
find / -name 'nginx.conf'
這裡要注意,因為容器與外界是完全隔離的,使用vim命令請先安裝vim:
apt-get update
apt-get install -y vim
修改完配置,重新載入nginx:
docker exec -it nginx nginx -s reload
- 容器載入外部配置檔案
在外部建立資料夾(用於存放Nginx配置檔案)
mkdir -p /home/usr/local/docker-config/nginx/conf
mkdir -p /home/usr/local/docker-config/nginx/conf.d
mkdir -p /home/usr/local/docker-config/nginx/html
mkdir -p /home/usr/local/docker-config/nginx/logs
將容器的配置檔案複製到建立好的資料夾中
docker cp nginx:/etc/nginx/nginx.conf /home/usr/local/docker-config/nginx/
docker cp nginx:/etc/nginx/conf.d /home/usr/local/docker-config/nginx/conf/
docker cp nginx:/usr/share/nginx/html/ /home/usr/local/docker-config/nginx/html/
docker cp nginx:/var/log/nginx/ /home/usr/local/docker-config/nginx/logs/
修改配置檔案
vim /home/usr/local/docker-config/nginx/conf/nginx.conf
刪除容器、映象
docker ps
docker rm -vf nginx
docker images
docker rmi nginx
執行容器
docker run -di --name nginx80 -p 80:80 -v /home/usr/local/docker-config/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/usr/local/docker-config/nginx/logs:/var/log/nginx -v /home/usr/local/docker-config/nginx/html:/usr/share/nginx/html -v /home/usr/local/docker-config/nginx/conf:/etc/nginx/conf.d -e TZ=Asia/Shanghai --privileged=true nginx
預設配置檔案
#user nobody;
#nginx程式,一般數值為cpu核數
worker_processes 1;
#錯誤日誌存放目錄
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#程式pid存放位置
#pid logs/nginx.pid;
#工作模式及連線數上限
events {
#單個後臺worker process程式的最大併發連結數
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"';
#nginx訪問日誌
#access_log logs/access.log main;
#開啟高效傳輸模式
sendfile on;
#啟用tcp_nopush引數可以允許把httpresponse header和檔案的開始放在一個檔案裡釋出, 積極的作用是減少網路報文段的數量
#tcp_nopush on;
#連線超時時間,單位是秒
#keepalive_timeout 0;
keepalive_timeout 65;
#開啟gzip壓縮功能
#gzip on;
#基於域名的虛擬主機
server {
#監聽埠
listen 80;
server_name localhost;
#編碼識別
#charset koi8-r;
#日誌格式及日誌存放路徑
#access_log logs/host.access.log main;
location / {
#站點根目錄,即網站程式存放目錄
root html;
#首頁排序
index index.html index.htm;
}
#錯誤頁面
#error_page 404 /404.html;
# 將伺服器錯誤頁面重定向到靜態頁面/50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#代理PHP指令碼到Apache上監聽127.0.0.1:80
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
#將PHP指令碼傳遞到正在監聽127.0.0.1:9000的FastCGI伺服器
#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;
#}
#如果Apache的文件根目錄與nginx的根目錄一致,則拒絕訪問.htaccess檔案
#location ~ /\.ht {
# deny all;
#}
}
#另一個虛擬主機,混合使用IP、名稱和基於埠的配置
#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;
# 服務端key
# 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;
# }
#}
}
使用中的配置檔案(所有ip,域名,路徑皆為虛構)
#user nobody;
worker_processes 2;
error_log logs/error.log;
pid logs/nginx.pid;
#最大檔案開啟數(連線),可設定為系統最佳化後的ulimit -HSn的結果
worker_rlimit_nofile 360000;
events {
#epoll是多路複用IO(I/O Multiplexing)中的一種方式,但是僅用於linux2.6以上核心,可以大大提高nginx的效能
use epoll;
#單個後臺worker process程式的最大併發連結數
worker_connections 100000;
#是否序列處理連線
multi_accept off;
}
http {
#副檔名與型別對映表
include mime.types;
#預設檔案型別
default_type application/octet-stream;
#設定請求快取
#戶端請求的最大可接受體大小,由行表示
client_max_body_size 50m;
#伺服器名字的hash表大小
server_names_hash_bucket_size 256;
#客戶機的請求頭設定大小,對於絕大多數請求,1K的緩衝區大小就足夠了
client_header_buffer_size 256k;
#用來指定客戶端請求中較大的訊息頭的快取最大數量和大小
large_client_header_buffers 4 256k;
#用於配置轉發至tomcat後;tomcat獲取客戶端正式ip
#允許重新定義和新增一些將被傳輸到代理伺服器的請求頭行。作為值,可以使用文字、變數及其組合。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#解決js跨域的問題
#增加頭標
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
#指定客戶機請求體緩衝區大小。
client_body_buffer_size 256k;
#客戶機的請求頭設定讀取超時。
client_header_timeout 3m;
#客戶機的請求體設定讀取超時。
client_body_timeout 3m;
#客戶端分配響應超時時間。
send_timeout 3m;
#訪問日誌存放路徑
access_log no;
#客戶端連線保持活動的超時時間,在超過這個時間之後伺服器會關閉該連結。
keepalive_timeout 0;
#修改或隱藏Nginx的版本號
server_tokens off;
#虛擬主機配置
server {
#listen指令指定所包含的伺服器接受的地址和埠。可以只指定地址、埠或伺服器名作為地址
listen 80;
#e用來指定ip地址或者域名,多個域名之間用空格分開
server_name localhost;
#對 "/gzh" 啟用反向代理
location /gzh
{
#根據表示式來更改URI,或者修改字串。注意重寫表示式只對相對路徑有效。
#此處是將/gzh以前的地址替換成http://weixin.qq.com/q/xxx
rewrite ^ http://weixin.qq.com/q/xxx;
}
location /test {
default_type text/html;
return 200 "207_80";
}
location / {
default_type text/html;
#根據規則的執行情況,返回一個狀態值給客戶端。
return 200 "207_80";
}
location /status
{
#這個模組能夠獲取Nginx自上次啟動以來的工作狀態,此模組非核心模組,需要在編譯的時候手動新增編譯引數
stub_status on;
#日誌
access_log /usr/local/nginx/logs/status.log;
}
location /lua{
default_type text/html;
content_by_lua_file /usr/local/op/code/test.lua;
}
location /comm{
default_type text/html;
if ( $request_uri ~* /comm/gzhqr ) {
content_by_lua_file /usr/local/op/code/redisget.lua;
}
proxy_pass http://192.168.1.209;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server
{
listen 192.168.88.100:8081;
server_name www.cs.cc;
default_type 'text/html';
charset utf-8;
# 日誌級別
error_log logs/error.log info;
location /test {
default_type text/html;
return 200 "207_8081";
}
location /luac
{
default_type text/html;
#lua_code_cache off;
#$request_uri就是完整url中刨去最前面$host剩下的部分,比如http://www.baidu.com/pan/beta/test1?fid=3的就是/pan/beta/test1?fid=3
#~* /devc/gzhqr表示含有/devc/gzhqr為true
if ( $request_uri ~* /devc/test ) {
content_by_lua_file /usr/local/op/lualib/tcode/test1.lua;
}
}
location / {
root html;
index index8081.html index8081.htm;
}
}
server {
listen 8085;
listen 443 ssl;
#填寫繫結證照的域名
server_name www.cs.cc;
#為伺服器啟用HTTPS。
#ssl on;
ssl_certificate /usr/local/op/nginx/conf/1_www.cs.cc_bundle.crt;
ssl_certificate_key /usr/local/op/nginx/conf/2_www.cs.cc.key;
ssl_session_timeout 5m;
#指令啟用所指示的協議。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#描述了允許的密碼。密碼以OpenSSL支援的格式分配
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
#要求協議SSLv3和TLSv1伺服器密碼優先於客戶機的密碼。
ssl_prefer_server_ciphers on;
charset utf-8;
resolver 114.114.114.114;
#日誌級別
error_log logs/error.log info;
#網頁
location ~/social_security_homepage.html {
rewrite ^(.*)$ /socialstop.html break;
}
#網路資源路徑
location /h5/huo/images/
{
proxy_pass http://192.168.1.209:3000/images/;
}
#地址
location /h5/
{
proxy_pass http://192.168.1.209:3000/;
}
#本地路徑
location /upload/file/
{
root /opt/nci/NCI_DOWN/;
}
if ($request_uri ~* /wxapp/sign/)
{
rewrite ^/(.*) http://weixin.qq.com/r/xxx? permanent;
}
#老管理平臺圖片的重寫
if ($request_uri ~* /download/downLoad.do\?loadFile=/ITCT_Mng/image)
{
rewrite ^/(.*) https://www.cs.cc/upload/file$argloadFile? permanent;
}
#管理平臺的資源轉發
if ($request_uri ~* ^(/PRO_GLPT/))
{
rewrite ^/PRO_GLPT/(.*)$ /glpt/$1 last;
#沒有匹配上返回403 狀態碼為444(此狀態碼是非標準的),那麼直接關閉此TCP連線
#return code
#return code text 因為要帶響應內容,因此code不能是具有跳轉功能的30x
#return code URL 此時URI可以為URI做內部跳轉,也可以是具有“http://”或者“https://”等協議的絕對URL,直接返回客戶端,而code是30x(301, 302, 303, 307,308)
#return URL 此時code預設為302,而URL必須是帶“http://”等協議的絕對URL
return 403;
}
location /glpt/
{
proxy_pass http://192.168.1.209:8088/PRO_GLPT/;
proxy_redirect http:// https://;
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_next_upstream error timeout invalid_header;
}
if ($request_uri ~* ^(/REDIS/))
{
rewrite ^/REDIS/(.*)$ /redis/$1 last;
}
location /gitblit
{
proxy_pass http://192.168.1.209:10101/;
proxy_redirect http:// https://;
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_next_upstream error timeout invalid_header;
}
location /luac
{
default_type text/html;
#lua_code_cache off;
if ( $request_uri ~* /devc/gzhqr ) {
content_by_lua_file /usr/local/op/lualib/tcode/gzh_info.lua;
#過期時間30天
expires 30d;
}
}
location /comm
{
default_type text/html;
#設定變數
set $lable 0;
if ($request_uri ~* /main.*/homeinfo) {
set $lable 1;
content_by_lua_file /usr/local/op/lualib/tcode/busi/main/main.lua;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.1.207:8089/TKB_COMMON;
}
#維護中的頁面
location =/stoptaking.html
{
#expires -1;
add_header Cache-Control no-store ;
index stoptaking.html;
}
}
到這裡在docker中配置nginx就已經完成了
5、Docker下配置tomcat
(1)搜尋tomcat映象
search 語法:
sudo docker search 映象名稱:映象TAG
# 如: 沒有加TAG,表示預設搜尋的是最新版本的tomcat映象
$ sudo docker search tomcat
# 如:搜尋 tomcat 8.5 版本
$ sudo docker search tomcat:8.5
(2)拉取映象
# 拉取 tomcat映象
sudo docker pull tomcat
# 檢視docker所有的映象
sudo docker image ls
建立容器
# -p表示埠對映
sudo docker run -d -p 9000:8080 --name mytomcat -v /data/my_tomcat:/usr/local/tomcat/webapps tomcat
- docker run 其實是 create 和 start 兩個命令的合併
- d 表示後臺執行容器,並返回容器ID
- p 8090:8080 表示 將容器的8080埠對映到主機的8090埠,前者是主機訪問埠:後者是容器內部埠
- --name 給容器起別名,如 my_tomcat
- tomcat:8.5 表示 映象名稱:映象TAG,預設最新版可以不加TAG
- -v 表示把容器中的某個資料夾掛載到主機中,格式: -v 主機目錄:容器目錄
執行成功後如下圖所示
(3)進入映象的方法
有兩種方式:
1進入一個正在執行容器的目錄
docker ps # 檢視正在執行的容器,並得到 容器id
# 進入tomcat容器內部
docker exec -it [容器id] /bin/bash # 中間那個是容器id 就是 CONTAINER_ID
# -it 表示進入
2run執行容器並進入容器目錄
sudo docker run -it -p 8090:8080 tomcat /bin/bash # 執行容器並進入容器目錄,但不啟動 tomcat
停止執行的容器
docker stop [容器id] # 如 sudo docker stop f96d191f065c
6、Docker下部署MySQL
1、準備工作
已安裝Docker、開放了伺服器安全組訪問規則埠號
2、下載mysql8.0 docker映象
docker pull mysql:8.0.28
3、檢視下載的docker映象
docker images
4、建立掛載目錄
mkdir -p /usr/mysql/conf /usr/mysql/data
chmod -R 755 /usr/mysql/
5、建立my.cnf,注意配置檔案中的埠號、字符集、時區
vim /usr/mysql/conf/my.cnf
配置資訊
[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4
[mysqld]
#pid-file = /var/run/mysqld/mysqld.pid
#socket = /var/run/mysqld/mysqld.sock
#datadir = /var/lib/mysql
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
character_set_server = utf8mb4
collation_server = utf8mb4_bin
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
6、啟動映象
docker run --name mysql8.0 --restart=always -p 3305:3306 -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD="123123123" -e TZ=Asia/Shanghai -d mysql:8.0.28 --lower-case-table-names=1
引數解釋:
-v : 掛載宿主機目錄和 docker容器中的目錄,前面是宿主機目錄,後面是容器內部目錄
-d : 後臺執行容器
-p 對映容器埠號和宿主機埠號
-e 環境引數,MYSQL_ROOT_PASSWORD設定root使用者的密碼
--lower_case_table_names 是否配置忽略表名大小寫,1忽略0不忽略
7、修改mysql密碼、設定遠端訪問
進入容器
docker exec -it mysql8.0 /bin/bash
連線mysql
mysql -uroot -p
使用mysql庫
$ mysql> use mysql
修改訪問主機以及密碼等,設定為所有主機可訪問
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密碼';
注意:
這裡用了mysql_native_password,mysql8.x版本必須使用這種方式修改密碼,否則navicate無法正確連線
重新整理
$ mysql> flush privileges;
7、Docker下部署Redis
1、拉取映象
docker pull redis
2、建立容器
docker run -di --name=myredis -p 6379:6379 redis
3、進入容器
docker exec -it myredis /bin/bash
8、安裝JDK
例如:我們以jdk17為例,在列表中檢視可用的JDK軟體包版本,以jdk-17_linux-x64_bin.tar.gz安裝包為例,執行以下命令。
mkdir /usr/local/jdk
cd /jdk
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
# 解壓jdk安裝包到jdk目錄下
tar -xvf jdk-17_linux-x64_bin.tar.gz
配置環境變數
vi /etc/profile
在底部新增如下資訊:
#set java environment
JAVA_HOME=/usr/local/jdk/jdk-17.0.6
JRE_HOME=$JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
export JAVA_HOME JRE_HOME PATH CLASSPATH
執行以下命令儲存並退出。
:wq
執行以下命令使/etc/profile裡的配置生效。
source /etc/profile
驗證安裝。
java -version
回顯資訊如下所示驗證安裝jdk成功。
java version "17.0.6" 2023-01-17 LTS
Java(TM) SE Runtime Environment (build 17.0.6+9-LTS-190)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.6+9-LTS-190, mixed mode, sharing)
到這裡完成基於Tomcat快速構建Java Web環境
9、安裝寶塔皮膚
執行以下命令,下載並安裝寶塔皮膚。
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
一鍵完成作業系統映象源的配置。
wget http://mirrors.myhuaweicloud.com/repo/mirrors_source.sh && sh mirrors_source.sh
安裝完成後,回顯如下資訊: