下面是 騰訊云實驗室的教程, 方便自己練習(xí)和記錄這些命令,整合自己感興趣的三個教程收集在這里晋控。
1 Linux基礎(chǔ)入門
2 搭建 FTP 文件服務(wù)
3 Nginx搭建靜態(tài)網(wǎng)站
Linux 基礎(chǔ)入門
目錄操作
創(chuàng)建目錄
使用 mkdir 命令創(chuàng)建目錄
mkdir $HOME/testFolder
<checker type="output-contains" command="ls $HOME -la" hint="創(chuàng)建 testFolder 目錄">
<keyword regex="testFolder" />
</checker>
切換目錄
使用 cd 命令切換目錄
cd $HOME/testFolder
使用 cd ../ 命令切換到上一級目錄
cd ../
移動目錄
使用 mv 命令移動目錄
mv $HOME/testFolder /var/tmp
<checker type="output-contains" command="ls /var/tmp -la" hint="移動 testFolder 目錄到 /var/tmp">
<keyword regex="testFolder" />
</checker>
刪除目錄
使用 rm -rf 命令刪除目錄
rm -rf /var/tmp/testFolder
<checker type="output-contains-no" command="ls /var/tmp" hint="目錄 testFolder 未刪除">
<keyword regex="testFolder" />
</checker>
查看目錄下的文件
使用 ls 命令查看 [/etc][etc] 目錄下所有文件和文件夾
ls /etc
<bubble for="etc">
/etc 目錄默認(rèn)是 *nix 系統(tǒng)的軟件配置文件存放位置
</bubble>
文件操作
<time>5min ~ 10min</time>
創(chuàng)建文件
使用 touch 命令創(chuàng)建文件
touch ~/testFile
執(zhí)行 ls
命令, 可以看到剛才新建的 testFile 文件
ls ~
<checker type="output-contains" command="ls $HOME -la" hint="創(chuàng)建 testFile 文件">
<keyword regex="testFile" />
</checker>
復(fù)制文件
使用 cp 命令復(fù)制文件
cp ~/testFile ~/testNewFile
<checker type="output-contains" command="ls $HOME -la" hint="復(fù)制 testFile 文件為 testNewFile">
<keyword regex="testNewFile" />
</checker>
刪除文件
使用 rm 命令刪除文件, 輸入 y
后回車確認(rèn)刪除
rm ~/testFile
<checker type="output-contains-no" command="ls $HOME" hint="文件 testFile 未刪除">
<keyword regex="testFile" />
</checker>
查看文件內(nèi)容
使用 cat 命令查看 .bash_history 文件內(nèi)容
cat ~/.bash_history
過濾, 管道與重定向
<time>5min ~ 10min</time>
過濾
過濾出 /etc/passwd 文件中包含 root
的記錄
grep 'root' /etc/passwd
遞歸地過濾出 /var/log/ 目錄中包含 linux
的記錄
grep -r 'linux' /var/log/
管道
簡單來說, Linux 中管道的作用是將上一個命令的輸出作為下一個命令的輸入, 像 pipe 一樣將各個命令串聯(lián)起來執(zhí)行, 管道的操作符是 |
比如, 我們可以將 cat 和 grep 兩個命令用管道組合在一起
cat /etc/passwd | grep 'root'
過濾出 /etc 目錄中名字包含 ssh
的目錄(不包括子目錄)
ls /etc | grep 'ssh'
重定向
可以使用 > 或 < 將命令的輸出重定向到一個文件中
echo 'Hello World' > ~/test.txt
<checker type="output-contains" command="cat ~/test.txt" hint="將 Hello World 輸出到 test.txt 文件中">
<keyword regex="Hello World" />
</checker>
運維常用命令
<time>5min ~ 10min</time>
ping 命令
對 cloud.tencent.com 發(fā)送 4 個 ping 包, 檢查與其是否聯(lián)通
ping -c 4 cloud.tencent.com
netstat 命令
netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息损趋,如網(wǎng)絡(luò)連接, 路由表, 接口狀態(tài)等等
列出所有處于監(jiān)聽狀態(tài)的tcp端口
netstat -lt
查看所有的端口信息, 包括 PID 和進(jìn)程名稱
netstat -tulpn
ps 命令
過濾得到當(dāng)前系統(tǒng)中的 ssh 進(jìn)程信息
ps -aux | grep 'ssh'
完成實驗
恭喜!您已經(jīng)成功完成了 Linux 入門運維的實驗任務(wù)咆霜。
搭建 FTP 文件服務(wù)
安裝并啟動 FTP 服務(wù)
<time>5min ~ 10min</time>
安裝 VSFTPD
使用 yum
安裝 [vsftpd][]:
yum install vsftpd -y
<bubble for="vsftpd">
vsftpd
是在 Linux 上被廣泛使用的 FTP 服務(wù)器,根據(jù)其[官網(wǎng)介紹][https://security.appspot.com/vsftpd.html]嘶朱,它可能是 UNIX-like 系統(tǒng)下最安全和快速的 FTP 服務(wù)器軟件蛾坯。
</bubble>
<checker type="output-contains" command="ls /etc/vsftpd -la" hint="安裝 vsftpd">
<keyword regex="vsftpd.conf" />
</checker>
啟動 VSFTPD
安裝完成后,啟動 FTP 服務(wù):
service vsftpd start
啟動后疏遏,可以看到系統(tǒng)已經(jīng)[監(jiān)聽了 21 端口][21]:
netstat -nltp | grep 21
此時脉课,訪問 [ftp://${runtime.vars.cvmIpAddress}][] 可瀏覽機器上的 [/var/ftp][ftp-home] 目錄了。
<bubble for="21">
FTP 協(xié)議默認(rèn)使用 21 端口作為服務(wù)端口
</bubble>
<locate for="ftp-home" path="/var/ftp" hint="默認(rèn) FTP 訪問目錄在此" />
<checker type="output-contains" command="netstat -nltp" hint="啟動 vsftp 服務(wù)">
<keyword regex=":21" />
</checker>
配置 FTP 權(quán)限
<time>5min ~ 10min</time>
目前 FTP 服務(wù)登陸允許匿名登陸财异,也無法區(qū)分用戶訪問倘零,我們需要配置 FTP 訪問權(quán)限
了解 VSFTP 配置
vsftpd 的配置目錄為 [/etc/vsftpd][0],包含下列的配置文件:
- [vsftpd.conf][1] 為主要配置文件
- [ftpusers][2] 配置禁止訪問 FTP 服務(wù)器的用戶列表
- [user_list][3] 配置用戶訪問控制
閱讀上述配置以了解更多信息戳寸。如果您準(zhǔn)備好了呈驶,點擊下一步開始修改配置來設(shè)置權(quán)限。
<locate for="0" path="/etc/vsftpd" hint="vsftp 配置目錄" />
<locate for="1" path="/etc/vsftpd/vsftpd.conf" hint="vsftp 主要配置" />
<locate for="2" path="/etc/vsftpd/ftpusers" hint="vsftp 黑名單用戶列表" />
<locate for="3" path="/etc/vsftpd/user_list" hint="vsftp 用戶訪問控制" />
阻止匿名訪問和切換根目錄
匿名訪問和切換根目錄都會給服務(wù)器帶來[安全風(fēng)險][safety]疫鹊,我們把這兩個功能關(guān)閉袖瞻。
[編輯 /etc/vsftpd/vsftpd.conf][edit],[找到下面兩處配置][find]并修改:
# 禁用匿名用戶
anonymous_enable=NO
# 禁止切換根目錄
chroot_local_user=YES
編輯完成后拆吆,按 Ctrl + S
保存配置聋迎,重新啟動 FTP 服務(wù),如:
service vsftpd restart
<bubble for="safety">
匿名訪問讓所有人都可以上傳文件到服務(wù)器上而無需鑒權(quán)枣耀,而允許切換根目錄則可能產(chǎn)生越權(quán)訪問問題霉晕。
</bubble>
<bubble for="find">
在代碼編輯器中,用Ctrl + F
進(jìn)行搜索,Mac 用戶用Cmd + F
進(jìn)行搜索
</bubble>
<locate for="1" path="/etc/vsftpd/vsftpd.conf" hint="編輯主配置文件" />
<edit for="edit" file="/etc/vsftpd/vsftpd.conf" />
<checker type="output-contains" command="cat /etc/vsftpd/vsftpd.conf" hint="修改配置以禁止匿名用戶訪問">
<keyword regex="^anonymous_enable=NO" />
</checker>
<checker type="output-contains" command="cat /etc/vsftpd/vsftpd.conf" hint="修改配置以禁止用戶切換根目錄">
<keyword regex="^chroot_local_user=YES" />
</checker>
<checker type="output-contains" command="curl ftp://${runtime.vars.cvmIpAddress} -v 2>&1" hint="重啟 FTP 服務(wù)">
<keyword regex="530" />
</checker>
創(chuàng)建 FTP 用戶
創(chuàng)建一個用戶 ftpuser
[:question][user]:
useradd ftpuser
為用戶 ftpuser
設(shè)置密碼 [:question][password]:
echo "${runtime.vars.allocatedPassword}" | passwd ftpuser --stdin
<bubble for="user">
為了方便后面的實驗步驟牺堰,不建議使用其它的用戶名
</bubble>
<bubble for="password">
下面命令中的密碼為實驗室為您生成拄轻,為了方便后面的實驗步驟,不建議使用其他密碼
</bubble>
<checker type="output-contains" command="cat /etc/passwd" hint="創(chuàng)建 FTP 用戶(如果您使用其它用戶伟葫,請直接下一步)">
<keyword regex="ftpuser:" />
</checker>
限制該用戶僅能通過 FTP 訪問
限制用戶 ftpuser
只能通過 FTP 訪問服務(wù)器恨搓,而不能直接登錄服務(wù)器:
usermod -s /sbin/nologin ftpuser
<checker type="output-contains" command="cat /etc/passwd" hint="限制 FTP 用戶登錄方式">
<keyword regex="ftpuser:/sbin/nologin" />
</checker>
為用戶分配主目錄
為用戶 ftpuser
創(chuàng)建[主目錄][ftp-home]并約定:
/data/ftp
為主目錄, 該目錄不可上傳文件
/data/ftp/pub
文件只能上傳到該目錄下
mkdir -p /data/ftp/pub
創(chuàng)建登錄歡迎文件 [:question][welcome]:
echo "Welcome to use FTP service." > /data/ftp/welcome.txt
設(shè)置訪問權(quán)限:
chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub
設(shè)置為用戶的主目錄:
usermod -d /data/ftp ftpuser
<bubble for="ftp-home">
用戶的主目錄是用戶通過 FTP 登錄后看到的根目錄
</bubble>
<bubble for="welcome">
方便用戶登錄后可以看到歡迎信息,并且確定用戶確實登錄到了主目錄上扒俯。
</bubble>
<checker type="output-contains" command="ls -la /data" hint="創(chuàng)建目錄 /data/ftp">
<keyword regex="ftp" />
</checker>
<checker type="output-contains" command="ls -ld /data/ftp" hint="設(shè)置 /data/ftp 訪問權(quán)限為 a-w">
<keyword regex="dr-xr-xr-x" />
</checker>
<checker type="output-contains" command="ls -ld /data/ftp/pub" hint="設(shè)置 /data/ftp/pub 訪問權(quán)限為 777">
<keyword regex="drwxrwxrwx" />
</checker>
<checker type="output-contains" command="cat /etc/passwd" hint="設(shè)置 /data/ftp 為用戶 ftpuser 的主目錄">
<keyword regex="ftpuser" />
<keyword regex="/data/ftp" />
</checker>
<checker type="output-contains" command="ls -la /data/ftp" hint="創(chuàng)建登錄歡迎文件 welcome.txt">
<keyword regex="welcome" />
</checker>
準(zhǔn)備域名和證書
<time>15min ~ 30min</time>
注:如果您不需要通過域名訪問 FTP 服務(wù)器則可以直接點擊“已完成奶卓,下一步”跳過域名和證書的準(zhǔn)備環(huán)節(jié)
域名注冊
如果您還沒有域名,可以[在騰訊云上選購][buy_link]撼玄,過程可以參考下面的視頻夺姑。
- [視頻 - 在騰訊云上購買域名][buy_domain_video]
<link for="buy_link" ></link>
<video for="buy_domain_video" platform="qq" vid="p05077pwelw" name="域名選購"></video>
域名解析
域名購買完成后, 需要將域名解析到實驗云主機上,實驗云主機的 IP 為:
${runtime.vars.cvmIpAddress}
在騰訊云購買的域名掌猛,可以[到控制臺添加解析記錄][https://console.qcloud.com/domain]盏浙,過程可參考下面的視頻:
- [視頻 - 如何在騰訊云上解析域名][video_resolve_domain]
<video for="video_resolve_domain" platform="qq" vid="t0507ps9kxo" name="域名解析"></video>
域名設(shè)置解析后需要過一段時間才會生效,通過 ping
命令檢查域名是否生效 [:question][replace]荔茬,如:
<bubble for="replace">注意替換下面命令中的
www.yourmpdomain.com
為您自己的注冊的域名</bubble>
ping www.yourdomain.com
如果 ping 命令返回的信息中含有你設(shè)置的解析的 IP 地址废膘,說明解析成功。
訪問 FTP 服務(wù)
<time>5min ~ 10min</time>
FTP 服務(wù)已安裝并配置完成慕蔚,下面我們來使用該 FTP 服務(wù)
訪問 FTP 服務(wù)
根據(jù)您個人的工作環(huán)境丐黄,選擇一種方式來訪問已經(jīng)搭建的 FTP 服務(wù)
通過 Windows 資源管理器訪問
Windows 用戶可以復(fù)制下面的[鏈接][address]到資源管理器的地址欄訪問:
<bubble for="address">
如果您申請了域名,可以將鏈接中的 Ip 地址替換為對應(yīng)的域名訪問 FTP 服務(wù)
</bubble>
ftp://ftpuser:${runtime.vars.allocatedPassword}@${runtime.vars.cvmIpAddress}
通過 FTP 客戶端工具訪問
FTP 客戶端工具眾多孔飒,下面推薦兩個常用的:
- [WinSCP][ws] - Windows 下的 FTP 和 SFTP 連接客戶端
- [FileZilla][fz] - 跨平臺的 FTP 客戶端灌闺,支持 Windows 和 Mac
下載和安裝 FTP 客戶端后,使用下面的憑據(jù)進(jìn)行連接即可:
[主機][host]:
<bubble for="host">
如果您申請了域名坏瞄,可以將Ip 地址替換為對應(yīng)的域名作為訪問憑據(jù)
</bubble>
${runtime.vars.cvmIpAddress}
用戶:
ftpuser
密碼:
${runtime.vars.allocatedPassword}
如果能夠正常連接桂对,那么大功告成,您可以開始使用屬于您自己的 FTP 服務(wù)器了鸠匀!
接下來蕉斜,請上傳任意一張圖片到您的 FTP 服務(wù)器上的pub目錄下,然后缀棍,就可以在 [/data/ftp/pub][ftp] 中看到了宅此。
注意: 請不要直接上傳文件到根目錄下
,您應(yīng)該選擇上傳到 pub
目錄下
<locate for="ftp" path="/data/ftp/pub" hint="上傳后睦柴,重新打開此目錄查看文件" />
<checker type="output-contains-no" command="ls -1p /data/ftp/pub | grep -v '/' | wc -l" hint="上傳圖片到 FTP 服務(wù)器上">
<keyword regex="0" />
</checker>
大功告成
恭喜诽凌!您已經(jīng)成功完成了搭建 FTP 服務(wù)器的實驗任務(wù)。
搭建靜態(tài)網(wǎng)站
搭建Http靜態(tài)服務(wù)器環(huán)境
<time>15min ~ 30min</time>
搭建靜態(tài)網(wǎng)站坦敌,首先需要部署環(huán)境。下面的步驟,將告訴大家如何在服務(wù)器上通過 Nginx 部署 HTTP 靜態(tài)服務(wù)狱窘。
安裝 Nginx
在 CentOS 上杜顺,可直接使用 yum
來安裝 Nginx
yum install nginx -y
安裝完成后,使用 nginx
命令啟動 Nginx:
nginx
此時蘸炸,訪問 [http://${runtime.vars.domain}][] 可以看到 Nginx 的測試頁面 [:question][help]
<bubble for="help">
如果無法訪問躬络,請重試用nginx -s reload
命令重啟 Nginx
</bubble>
<checker type="output-contains" command="ls /usr/sbin/" hint="Nginx 未安裝">
<keyword regex="nginx" />
</checker>
<checker type="output-contains" command="netstat -nltp" hint="Nginx 未啟動">
<keyword regex="nginx" />
<keyword regex="80" />
</checker>
配置靜態(tài)服務(wù)器訪問路徑
外網(wǎng)用戶訪問服務(wù)器的 Web 服務(wù)由 Nginx 提供,Nginx 需要配置靜態(tài)資源的路徑信息才能通過 url 正確訪問到服務(wù)器上的靜態(tài)資源搭儒。
打開 Nginx 的默認(rèn)配置文件 [/etc/nginx/nginx.conf][1] 穷当,修改 Nginx 配置,將默認(rèn)的 root /usr/share/nginx/html;
修改為: root /data/www;
淹禾,如下:
/// <example verb="edit" file="/etc/nginx/nginx.conf" />
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /data/www;
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
配置文件將 [/data/www/static][data-www-static-path] 作為所有靜態(tài)資源請求的根路徑馁菜,如訪問: http://${runtime.vars.domain}/static/index.js
,將會去 [/data/www/static/][data-www-static-path] 目錄下去查找 index.js
×宀恚現(xiàn)在我們需要重啟 Nginx 讓新的配置生效汪疮,如:
<locate for="data-www-static-path" path="/data/www/static" hint="這里是所有靜態(tài)資源請求的根路徑"/>
nginx -s reload
重啟后,現(xiàn)在我們應(yīng)該已經(jīng)可以使用我們的靜態(tài)服務(wù)器了毁习,現(xiàn)在讓我們新建一個靜態(tài)文件智嚷,查看服務(wù)是否運行正常。
首先讓我們在 [/data][data-path] 目錄 下創(chuàng)建 www
目錄纺且,如:
<locate for="data" path="/data/www" hint="該目錄作為服務(wù)器的根目錄使用"/>
mkdir -p /data/www
<locate for="1" path="/etc/nginx/nginx.conf" hint="編輯默認(rèn)服務(wù)器配置盏道,修改網(wǎng)站的根路徑" />
<checker type="output-contains" command="ls /data/ -la" hint="在
/data
目錄 下創(chuàng)建/www
目錄">
<keyword regex="www" />
</checker>
創(chuàng)建第一個靜態(tài)文件
在 [/data/www][data-www-path] 目錄下創(chuàng)建我們的第一個靜態(tài)文件 [index.html][1]
/// <example verb="edit" file="/data/www/index.html" />
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>第一個靜態(tài)文件</title>
</head>
<body>
Hello world!
</body>
</html>
現(xiàn)在訪問 [http://${runtime.vars.domain}/index.html][] 應(yīng)該可以看到頁面輸出 [Hello world!][indicate-hello-world]
到此载碌,一個基于 Nginx 的靜態(tài)服務(wù)器就搭建完成了猜嘱,現(xiàn)在所有放在 [/data/www][data-www-path] 目錄下的的靜態(tài)資源都可以直接通過域名訪問。
<locate for="data-www-path" path="/data/www" hint="/data/www 是服務(wù)器的根目錄"/>
<locate for="1" path="/data/www" hint="添加 index.html 文件" />
<bubble for="indicate-hello-world">
如果無顯示恐仑,請刷新瀏覽器頁面
</bubble>
<checker type="output-contains" command="curl -I --silent http://${runtime.vars.domain}" hint="配置 Nginx 靜態(tài)服務(wù)根路徑">
<keyword regex="HTTP/1.1 200 OK" />
</checker>
完成實驗
恭喜泉坐!您已經(jīng)成功完成了 搭建Http靜態(tài)服務(wù)器環(huán)境 的實驗任務(wù)。