shell腳本命令搞定mysql_exporter部署,重復(fù)配置自動(dòng)化
前言
在多臺(tái)服務(wù)器上部署 mysql_exporter 這件事,手動(dòng)做的話(huà)每一步都不能少:下載二進(jìn)制包、MySQL 建監(jiān)控用戶(hù)、授權(quán)、寫(xiě) systemd 服務(wù)文件、配憑證文件。跑一臺(tái)的時(shí)候還好,批量跑的時(shí)候每臺(tái)都來(lái)一遍,容易出錯(cuò)也浪費(fèi)時(shí)間。
這篇的核心是把整個(gè)部署流程寫(xiě)成一個(gè) Shell 腳本:一條命令跑完下載、安裝、建用戶(hù)、配權(quán)限、寫(xiě)服務(wù)、啟動(dòng)服務(wù)這些步驟。腳本里硬編碼了 MySQL root 密碼和 exporter 用戶(hù)的密碼,跑的時(shí)候按需改一下就行。跑完之后 systemd 服務(wù)自動(dòng)注冊(cè)好,開(kāi)機(jī)自啟,prometheus 直接抓 metrics 地址就能用。
腳本本身不復(fù)雜,關(guān)鍵是把原本需要查文檔一步步做的內(nèi)容變成了可復(fù)用的工具。對(duì)于需要同時(shí)維護(hù)多臺(tái) MySQL 實(shí)例的人來(lái)說(shuō),把這個(gè)腳本存下來(lái),后續(xù)擴(kuò)縮容的時(shí)候直接跑命令比逐臺(tái)操作效率高得多。

1.為什么選擇shell腳本一鍵安裝?
選擇Shell腳本一鍵安裝mysqld_exporter,主要是為了提升部署效率、保證配置一致性并降低人為操作錯(cuò)誤風(fēng)險(xiǎn)。
在生產(chǎn)環(huán)境中,往往需要在多臺(tái)服務(wù)器上快速部署監(jiān)控組件,手動(dòng)執(zhí)行下載、解壓、創(chuàng)建用戶(hù)、配置MySQL權(quán)限、編寫(xiě)systemd服務(wù)等步驟不僅繁瑣,還容易因環(huán)境差異導(dǎo)致配置遺漏或權(quán)限問(wèn)題。
通過(guò)Shell腳本自動(dòng)化整個(gè)流程,可以實(shí)現(xiàn)“一次編寫(xiě),處處運(yùn)行”,確保所有節(jié)點(diǎn)的安裝路徑、用戶(hù)權(quán)限、監(jiān)聽(tīng)端口和認(rèn)證信息完全統(tǒng)一,同時(shí)支持以非root用戶(hù)(如 prometheus)安全運(yùn)行,并自動(dòng)配置開(kāi)機(jī)自啟,極大簡(jiǎn)化了Prometheus監(jiān)控體系的落地與維護(hù)成本。
部署高效快捷
一條命令即可完成下載、配置、授權(quán)、啟動(dòng)全過(guò)程,大幅縮短部署時(shí)間。
配置標(biāo)準(zhǔn)化
所有服務(wù)器使用相同的路徑、用戶(hù)、端口和權(quán)限策略,避免“環(huán)境漂移”問(wèn)題。
減少人為錯(cuò)誤
自動(dòng)創(chuàng)建MySQL監(jiān)控用戶(hù)并授予權(quán)限,避免手動(dòng)操作導(dǎo)致的拼寫(xiě)錯(cuò)誤或權(quán)限遺漏。
安全合規(guī)
自動(dòng)以專(zhuān)用非登錄用戶(hù)(如prometheus)運(yùn)行服務(wù),并設(shè)置配置文件權(quán)限為600,防止密碼泄露。
自動(dòng)開(kāi)機(jī)自啟
集成systemd服務(wù)管理,確保系統(tǒng)重啟后監(jiān)控組件自動(dòng)恢復(fù)運(yùn)行。
便于批量運(yùn)維
可結(jié)合Ansible、SaltStack或直接通過(guò)SSH批量執(zhí)行,適用于大規(guī)模集群統(tǒng)一部署。
可版本化與復(fù)用
腳本可納入Git管理,實(shí)現(xiàn)變更追蹤、回滾和跨項(xiàng)目復(fù)用,提升DevOps能力。
2.編寫(xiě)shell腳本
部署MySQL Exporter(mysqld_exporter)的步驟,簡(jiǎn)單明了如下:
創(chuàng)建專(zhuān)用監(jiān)控用戶(hù)
在MySQL中創(chuàng)建一個(gè)僅用于監(jiān)控的用戶(hù)(如 mysqld_exporter),并授予必要權(quán)限:REPLICATION CLIENT PROCESS SELECT on performance_schema.*
下載并解壓 mysqld_exporter
從 Prometheus 官方 GitHub 下載對(duì)應(yīng)版本的二進(jìn)制包,解壓到指定目錄(如 /app/mysqld_exporter)。
配置數(shù)據(jù)庫(kù)連接憑證
創(chuàng)建一個(gè)配置文件(如 localhost_db.cnf),寫(xiě)入監(jiān)控用戶(hù)的用戶(hù)名和密碼,格式為標(biāo)準(zhǔn) MySQL 客戶(hù)端配置(含 **[client]**段),并設(shè)置權(quán)限為 600,確保安全。
創(chuàng)建systemd服務(wù)
編寫(xiě)systemd服務(wù)文件,以非root用戶(hù)(如prometheus)運(yùn)行mysqld_exporter,指定配置文件路徑和監(jiān)聽(tīng)端口(默認(rèn) :9105),并啟用開(kāi)機(jī)自啟。
啟動(dòng)并驗(yàn)證服務(wù)
啟動(dòng)服務(wù),檢查狀態(tài)是否正常,并通過(guò)瀏覽器或 curl,確認(rèn)指標(biāo)可訪問(wèn)。
按照這個(gè)部署步驟,我已經(jīng)把腳本寫(xiě)出來(lái)啦,需要的小伙伴僅供參考~(我安裝的版本是0.18.0)
#!/bin/bash
# 一鍵安裝 mysqld_exporter for CentOS 7
# 使用固定 MySQL root密碼自動(dòng)建用戶(hù)
# 監(jiān)控用戶(hù): mysqld_exporter / Sjixin520!
set -e
VERSION="v0.18.0"
INSTALL_DIR="/app/mysqld_exporter"
PORT="9105"
MYSQL_ROOT_USER="root"
MYSQL_ROOT_PASS="Sjixin52!"
EXPORTER_USER="mysqld_exporter"
EXPORTER_PASS="Sjixin52!"
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
log() { echo -e "${GREEN}[INFO]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1" >&2; exit 1; }
if [ "$EUID" -ne 0 ]; then
error "請(qǐng)以 root 用戶(hù)運(yùn)行此腳本!"
fi
# 安裝依賴(lài)
log "安裝必要工具..."
yum install -y wget tar &>/dev/null
# 下載mysqld_exporter
URL="https://github.com/prometheus/mysqld_exporter/releases/download/${VERSION}/mysqld_exporter-${VERSION#v}.linux-amd64.tar.gz"
log "正在下載mysqld_exporter ${VERSION} ..."
wget -O /tmp/mysqld_exporter.tar.gz "$URL" || error "下載失敗"
# 解壓到/app/mysqld_exporter
mkdir -p "$INSTALL_DIR"
tar -zxvf /tmp/mysqld_exporter.tar.gz -C "$INSTALL_DIR" --strip-components=1
chown -R root:root "$INSTALL_DIR"
# 確保prometheus用戶(hù)存在
if ! id "prometheus" &>/dev/null; then
log "創(chuàng)建prometheus系統(tǒng)用戶(hù)..."
useradd --system --shell /sbin/nologin --no-create-home prometheus
fi
# 自動(dòng)創(chuàng)建MySQL監(jiān)控用戶(hù)
log "正在連接MySQL并創(chuàng)建監(jiān)控用戶(hù) '$EXPORTER_USER' ..."
# 測(cè)試root登錄是否成功
if ! mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASS" -e "SELECT 1;" >/dev/null 2>&1; then
error "無(wú)法使用root / Sjixin52! 登錄MySQL,請(qǐng)確認(rèn)MySQL正在運(yùn)行且密碼正確"
fi
# 創(chuàng)建exporter用戶(hù)
mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASS" <<SQL
CREATE USER IF NOT EXISTS '$EXPORTER_USER'@'localhost' IDENTIFIED BY '$EXPORTER_PASS';
GRANT REPLICATION CLIENT, PROCESS ON *.* TO '$EXPORTER_USER'@'localhost';
GRANT SELECT ON performance_schema.* TO '$EXPORTER_USER'@'localhost';
FLUSH PRIVILEGES;
SQL
log "MySQL監(jiān)控用戶(hù)創(chuàng)建成功!"
# 創(chuàng)建.my.cnf文件
cat > "$INSTALL_DIR/localhost_db.cnf" <<EOF
[client]
user=$EXPORTER_USER
password=$EXPORTER_PASS
host=localhost
EOF
chmod 600 "$INSTALL_DIR/localhost_db.cnf"
chown prometheus:prometheus "$INSTALL_DIR/localhost_db.cnf"
# 創(chuàng)建systemd服務(wù)
cat > /etc/systemd/system/mysqld_exporter.service <<EOF
[Unit]
Description=MySQL Exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=$INSTALL_DIR/mysqld_exporter \\
--config.my-cnf=$INSTALL_DIR/localhost_db.cnf \\
--web.listen-address=:9105
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
# 啟動(dòng)服務(wù)
log "啟動(dòng) mysqld_exporter 服務(wù)..."
systemctl daemon-reload
systemctl enable --now mysqld_exporter
log "? 安裝完成!"
log "指標(biāo)地址: http://$(hostname -I | awk '{print $1}'):${PORT}/metrics"
log "服務(wù)狀態(tài): systemctl status mysqld_exporter"
3.使用腳本部署mysql_exporter
編輯一個(gè)mysql_exporter.sh文件:
vi mysql_exporter.sh
#!/bin/bash
# 一鍵安裝 mysqld_exporter for CentOS 7
# 使用固定 MySQL root密碼自動(dòng)建用戶(hù)
# 監(jiān)控用戶(hù): mysqld_exporter / Sjixin520!
set -e
VERSION="v0.18.0"
INSTALL_DIR="/app/mysqld_exporter"
PORT="9105"
MYSQL_ROOT_USER="root"
MYSQL_ROOT_PASS="Sjixin52!"
EXPORTER_USER="mysqld_exporter"
EXPORTER_PASS="Sjixin52!"
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
log() { echo -e "${GREEN}[INFO]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1" >&2; exit 1; }
if [ "$EUID" -ne 0 ]; then
error "請(qǐng)以 root 用戶(hù)運(yùn)行此腳本!"
fi
# 安裝依賴(lài)
log "安裝必要工具..."
yum install -y wget tar &>/dev/null
# 下載mysqld_exporter
URL="https://github.com/prometheus/mysqld_exporter/releases/download/${VERSION}/mysqld_exporter-${VERSION#v}.linux-amd64.tar.gz"
log "正在下載mysqld_exporter ${VERSION} ..."
wget -O /tmp/mysqld_exporter.tar.gz "$URL" || error "下載失敗"
# 解壓到/app/mysqld_exporter
mkdir -p "$INSTALL_DIR"
tar -zxvf /tmp/mysqld_exporter.tar.gz -C "$INSTALL_DIR" --strip-components=1
chown -R root:root "$INSTALL_DIR"
# 確保prometheus用戶(hù)存在
if ! id "prometheus" &>/dev/null; then
log "創(chuàng)建prometheus系統(tǒng)用戶(hù)..."
useradd --system --shell /sbin/nologin --no-create-home prometheus
fi
# 自動(dòng)創(chuàng)建MySQL監(jiān)控用戶(hù)
log "正在連接MySQL并創(chuàng)建監(jiān)控用戶(hù) '$EXPORTER_USER' ..."
# 測(cè)試root登錄是否成功
if ! mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASS" -e "SELECT 1;" >/dev/null 2>&1; then
error "無(wú)法使用root / Sjixin52! 登錄MySQL,請(qǐng)確認(rèn)MySQL正在運(yùn)行且密碼正確"
fi
# 創(chuàng)建exporter用戶(hù)
mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASS" <<SQL
CREATE USER IF NOT EXISTS '$EXPORTER_USER'@'localhost' IDENTIFIED BY '$EXPORTER_PASS';
GRANT REPLICATION CLIENT, PROCESS ON *.* TO '$EXPORTER_USER'@'localhost';
GRANT SELECT ON performance_schema.* TO '$EXPORTER_USER'@'localhost';
FLUSH PRIVILEGES;
SQL
log "MySQL監(jiān)控用戶(hù)創(chuàng)建成功!"
# 創(chuàng)建.my.cnf文件
cat > "$INSTALL_DIR/localhost_db.cnf" <<EOF
[client]
user=$EXPORTER_USER
password=$EXPORTER_PASS
host=localhost
EOF
chmod 600 "$INSTALL_DIR/localhost_db.cnf"
chown prometheus:prometheus "$INSTALL_DIR/localhost_db.cnf"
# 創(chuàng)建systemd服務(wù)
cat > /etc/systemd/system/mysqld_exporter.service <<EOF
[Unit]
Description=MySQL Exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=$INSTALL_DIR/mysqld_exporter \\
--config.my-cnf=$INSTALL_DIR/localhost_db.cnf \\
--web.listen-address=:9105
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
# 啟動(dòng)服務(wù)
log "啟動(dòng) mysqld_exporter 服務(wù)..."
systemctl daemon-reload
systemctl enable --now mysqld_exporter
log "? 安裝完成!"
log "指標(biāo)地址: http://$(hostname -I | awk '{print $1}'):${PORT}/metrics"
log "服務(wù)狀態(tài): systemctl status mysqld_exporter"

添加完成后,執(zhí)行該文件:
sh mysql_exporter.sh

執(zhí)行過(guò)程還是很順利的,我們來(lái)一下終極驗(yàn)證,查看mysqld_exporter服務(wù)是否啟動(dòng)成功:
systemctl status mysqld_exporter

我們自動(dòng)腳本就編寫(xiě)成功啦!
這樣,無(wú)論你有上百臺(tái)機(jī)器都不怕啦~
眾所周知,mysql_exporter是搭配prometheus來(lái)使用的,接下來(lái),跟我一起搭配prometheus來(lái)使用吧~
4.prometheus監(jiān)控mysql_exporter
找到prometheus的配置文件,編輯添加如下內(nèi)容(由于我是在另一臺(tái)機(jī)器上安裝的prometheus,所以寫(xiě)了mysql_exporter的Ip地址,正常寫(xiě)localhost就可以):
vi prometheus.yml
- targets: ["192.168.42.146:9105"]
labels:
app: "mysql_exporter"

使用瀏覽器ip+9090打開(kāi)promethues的頁(yè)面:

我們可以看到prometheus已經(jīng)抓取到192.168.42.146里面的mysql_exporter服務(wù)啦!
那么,現(xiàn)在我有一個(gè)疑問(wèn):**當(dāng)MySQL Exporter與Prometheus部署在同一個(gè)局域網(wǎng)內(nèi)時(shí),監(jiān)控自然暢通無(wú)阻;但如果它們不在同一網(wǎng)絡(luò)環(huán)境——比如 Prometheus在公網(wǎng)服務(wù)器,而MySQL數(shù)據(jù)庫(kù)位于內(nèi)網(wǎng)或本地開(kāi)發(fā)環(huán)境中,無(wú)法被外網(wǎng)直接訪問(wèn),這時(shí)該怎么辦?**別擔(dān)心!cpolar正是解決這類(lèi)跨網(wǎng)絡(luò)監(jiān)控難題的利器。通過(guò)cpolar的內(nèi)網(wǎng)穿透能力,我們可以安全、穩(wěn)定地將內(nèi)網(wǎng)中運(yùn)行的mysqld_exporter(默認(rèn)監(jiān)聽(tīng) :9105)暴露到公網(wǎng),生成一個(gè)臨時(shí)或固定的公網(wǎng)地址。Prometheus只需將該地址配置為抓取目標(biāo),即可像訪問(wèn)本地服務(wù)一樣采集內(nèi)網(wǎng)MySQL的性能指標(biāo),全程無(wú)需修改防火墻策略、無(wú)需公網(wǎng)IP,也無(wú)需暴露數(shù)據(jù)庫(kù)本身。更重要的是,cpolar支持HTTPS加密、身份認(rèn)證和隧道?;睿_保監(jiān)控?cái)?shù)據(jù)傳輸?shù)陌踩耘c可靠性。無(wú)論是遠(yuǎn)程調(diào)試、混合云架構(gòu),還是邊緣設(shè)備監(jiān)控,cpolar都能輕松打通網(wǎng)絡(luò)壁壘,讓Prometheus的“眼睛”看得更遠(yuǎn)、更廣。所以,無(wú)論你的數(shù)據(jù)庫(kù)藏得多深,只要有一條出網(wǎng)通道,cpolar就能幫你把監(jiān)控?cái)?shù)據(jù)“送出去”!
5.安裝cpolar內(nèi)網(wǎng)穿透工具
cpolar 可以將你本地電腦中的服務(wù)(如 SSH、Web、數(shù)據(jù)庫(kù))映射到公網(wǎng)。即使你在家里或外出時(shí),也可以通過(guò)公網(wǎng)地址連接回本地運(yùn)行的開(kāi)發(fā)環(huán)境。
??以下是安裝cpolar步驟:
使用一鍵腳本安裝命令:
sudo curl https://get.cpolar.sh | sh

安裝完成后,執(zhí)行下方命令查看cpolar服務(wù)狀態(tài):(如圖所示即為正常啟動(dòng))
sudo systemctl status cpolar

Cpolar安裝和成功啟動(dòng)服務(wù)后,在瀏覽器上輸入虛擬機(jī)主機(jī)IP加9200端口即:【ip:9200】訪問(wèn)Cpolar管理界面,使用Cpolar官網(wǎng)注冊(cè)的賬號(hào)登錄,登錄后即可看到cpolar web 配置界面,接下來(lái)在web 界面配置即可:
打開(kāi)瀏覽器訪問(wèn)本地9200端口,使用cpolar賬戶(hù)密碼登錄即可,登錄后即可對(duì)隧道進(jìn)行管理。

6.配置公網(wǎng)地址
登錄cpolar web UI管理界面后,點(diǎn)擊左側(cè)儀表盤(pán)的隧道管理——創(chuàng)建隧道:
隧道名稱(chēng):可自定義,本例使用了:mysql_exporter,注意不要與已有的隧道名稱(chēng)重復(fù)
協(xié)議:http
本地地址:9105
域名類(lèi)型:隨機(jī)域名
地區(qū):選擇China Top

創(chuàng)建成功后,打開(kāi)左側(cè)在線隧道列表,可以看到剛剛通過(guò)創(chuàng)建隧道生成了公網(wǎng)地址,接下來(lái)就可以在其他電腦或者移動(dòng)端設(shè)備(異地)上,使用地址訪問(wèn)。

Prometheus可以通過(guò)這個(gè)公網(wǎng)地址38c53143.r2.cpolar.top訪問(wèn)到運(yùn)行在本地9105端口的mysql_exporter服務(wù),從而抓取系統(tǒng)指標(biāo)。
- targets: ["38c53143.r2.cpolar.top"]
labels:
app: "mysql_exporter"

抓取成功!

7.保留固定公網(wǎng)地址
使用cpolar為其配置二級(jí)子域名,該地址為固定地址,不會(huì)隨機(jī)變化。

點(diǎn)擊左側(cè)的預(yù)留,選擇保留二級(jí)子域名,地區(qū)選擇china Top,然后設(shè)置一個(gè)二級(jí)子域名名稱(chēng),我這里演示使用的是mysqll,大家可以自定義。填寫(xiě)備注信息,點(diǎn)擊保留。

登錄cpolar web UI管理界面,點(diǎn)擊左側(cè)儀表盤(pán)的隧道管理——隧道列表,找到所要配置的隧道m(xù)ysql_exporter,點(diǎn)擊右側(cè)的編輯。

修改隧道信息,將保留成功的二級(jí)子域名配置到隧道中
- 域名類(lèi)型:選擇二級(jí)子域名
- Sub Domain:填寫(xiě)保留成功的二級(jí)子域名
- 地區(qū): China Top
點(diǎn)擊更新

更新完成后,打開(kāi)在線隧道列表,此時(shí)可以看到隨機(jī)的公網(wǎng)地址已經(jīng)發(fā)生變化,地址名稱(chēng)也變成了保留和固定的二級(jí)子域名名稱(chēng)。

最后,我們使用固定的公網(wǎng)地址在任意設(shè)備的瀏覽器中訪問(wèn),可以看到成功訪問(wèn)本地部署的頁(yè)面,這樣一個(gè)永久不會(huì)變化的二級(jí)子域名公網(wǎng)網(wǎng)址即設(shè)置好了。

結(jié)尾
腳本的價(jià)值在于把手動(dòng)操作變成可復(fù)制的命令。把部署流程寫(xiě)進(jìn)腳本里,不只是省時(shí)間,更重要的是減少人為操作帶來(lái)的差異——每臺(tái)機(jī)器的路徑、用戶(hù)權(quán)限、配置文件內(nèi)容都能保持一致,出問(wèn)題的時(shí)候排查邏輯也是統(tǒng)一的。
mysql_exporter 本身接入 Prometheus 的鏈路很標(biāo)準(zhǔn):起服務(wù)、Prometheus 配 job 拉 metrics、告警規(guī)則針對(duì)具體的指標(biāo)閾值來(lái)配。cpolar 在這里解決的是 Prometheus 和 exporter 不在同一網(wǎng)絡(luò)的連通性問(wèn)題,屬于特定場(chǎng)景下的方案。
整體來(lái)說(shuō),這套腳本適合需要批量部署或者經(jīng)常遷移環(huán)境的場(chǎng)景,一條命令搞定比查文檔一步步做要可靠得多。
到此這篇關(guān)于shell腳本命令搞定mysql_exporter部署,重復(fù)配置自動(dòng)化的文章就介紹到這了,更多相關(guān)shell腳本部署mysql_exporter內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用PowerShell批量導(dǎo)出MySQL數(shù)據(jù)庫(kù)的新手教程
- MySQL備份Shell腳本的實(shí)現(xiàn)
- 使用Shell腳本進(jìn)行MySql權(quán)限修改的實(shí)現(xiàn)教程
- 在Centos7中利用Shell腳本實(shí)現(xiàn)MySQL數(shù)據(jù)備份
- 詳解MySQL?Shell?運(yùn)行?SQL?的兩種內(nèi)置方法
- mysql數(shù)據(jù)庫(kù)中g(shù)etshell的方式總結(jié)
- 教你使用MySQL Shell連接數(shù)據(jù)庫(kù)的方法
- 利用MySQL?Shell安裝部署MGR集群的詳細(xì)過(guò)程
相關(guān)文章
在Windows與Linux下禁止被ping的設(shè)置方法[推薦]
LINUX下禁止ping命令的方法與windows下禁止ping的設(shè)置方法,非常的全,推薦大家參考下。2011-03-03
git多人協(xié)作_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了git多人協(xié)作,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
iis7 iis8反向代理規(guī)則編寫(xiě)、安裝與配置方法
這篇文章主要介紹了iis7 iis8反向代理規(guī)則編寫(xiě)、安裝與配置方法,需要的朋友可以參考下2020-04-04
lamp主機(jī)是什么 vps如何配置lamp主機(jī)
這篇文章主要介紹了lamp主機(jī)是什么 vps如何配置lamp主機(jī),需要的朋友可以參考下2015-10-10
Git使用小坑 Out of memory錯(cuò)誤的解決方法
這篇文章主要介紹了Git使用小坑 Out of memory錯(cuò)誤的解決方法,需要的朋友可以參考下2015-10-10

