Linux 從無到有
⺩王彥博
aka. AlexW
2015.08.10
agenda
• About
• Installation
• Shell & basic command
• Editor
• Networking
• Packages
課程結束 可以回家了
如果你已經會⽤用 Linux 架服務 ( cli )
真的
⼈人⽣生苦短,快去附近找家咖啡店練 python
講課方式
不專業注意 !
跪求互動 !
請隨時提問
偏激注意 !
About
About me
胡適國小 系管
北市自由軟體推動小組
AlexW開源 自由 宅宅 鄉民 暴民
為什麼我在這裡?
交了壞朋友摸了git / 學了 python / 換了 Debian
還記得那天和OO討論
今年開進階班,
那初階班勒 ?
然後一陣暈眩
我現在就站在這裡了
每個人都需要壞朋友
好朋友支持你原本的生活
壞朋友改變你原本的視野
我。OpenSource
About -
Free software
先談談自由與開源
free software & opensource
誤解。
自由軟體
Free Software
Free Software
Freeware
主權在消失的空格裡
Freeware
免費下載使用
不開放原始碼
XnView, PhotoCap
Free software
開放原始碼
授權感染
OpenSource
開放原始碼
開源授權
Freeware 免費
Free Software 自由
自由 - - -> 免費
自由<- ? - 免費
⾃自由⼀一定免費, 免費未必⾃自由
開放個屁
我不寫程式
免錢就好
( 所以國小推自由軟體 學生無感 )
系統 / 網路
沒自由軟體會是什麼樣的世界 ?
無償付出
why ?
理想
人性本 share
人生就是不停的 show off
我在這個社群
看到理想的實踐
樂於助人
崇尚自由
最初只是窮
後來發現是邪教
這社群的氛圍
Open mind
講回 Linux
先調查一下
各位有用過 Linux 嗎 ?
再次重申
如果你會 Linux
後天再來吧
About - Un*x
Unix-like
Linux / BSD
跳轉 un*x 家族
網路作業系統
捨棄 GUI 服務最佳化
黑底白字
該死的cmd不算
優點: 文字介面
缺點: 文字介面
初學不親切
就像 PTT 一樣
遠端控制
低流量
現在也有親切的 GUI
但是本研習以系統服務為目標
command line interface only
About - Debian
Linux
發行版本超多
這也是為什麼我之前一直待在 FreeBSD 陣營
Slackware
Redhat
Fedora
ubuntu
CentOS
Debian
雖然 FreeBSD
已經夠我用
但是...
還是想學 Linux
問強者我同學...
強者我同學:
我們公司就兩種 OS
FreeBSD / Debian
壞朋友 :Debian
等等 …
好像有什麼怪怪的
Ubuntu & Debian
CentOS & RHEL
決選
Debian
其實之前
我絕對不考慮 Debian
原因是 ...
Debian
優缺點
Sorry
我沒辦法告訴你
未長時間使用其他發行版本
我只能談
FreeBSD 轉 Debian
我只能說 可是瑞凡
優
升級無痛又快速
資源相對於 FreeBSD 多
現在要學 FreeBSD 簡直就是要人命
套件官方維護
缺
套件比較舊
翻譯 : 比較穩 / 解決 : source list
維護太簡單
沒辦法裝忙
Debian 版本
stable / testing / unstable
stable : Jessie
所有的套件都是穩定版
testing : Stretch
包含暫時未納入穩定套件的候選套件
unstable : Sid
最新套件 但不保證穩定
ToyStory
experimental
測試過不適合放unstable的
backport
更新的穩定套件
穩定度
stable > ( backport ) > unstable >
testing > ( experimental )
很嚴謹
Installation
需求 : 電腦 & Debian
電腦
是的,不管是什麼電腦
伺服器的選擇
你能選擇嗎 ?
我自己是沒辦法
敝校機房
幾乎都 PC
虛擬化 ? 非虛擬化 ?
虛擬化是啥 ?
可以吃嗎 ?
Hardware
Windows / Linux / OSX
VirtualBox / vmware
Linux
application
virtual machine
Linux
application
virtual machine
Linux
application
virtual machine
效能低落注意!!!
Hardware
vmware ESXi
Linux
application
virtual machine
Linux
application
virtual machine
Linux
application
virtual machine
還是不能跟實體機比
千萬不要迷信虛擬化
那只是拿效能換方便而已
方便 <——> 效能
有錢好辦事,可惜沒錢
所以敝校 ESXi
也是 PC
UCCU
你說效能不好 你還不是在用
效能與方便
並不是要你一味追求效能
因服務因流量選擇
我是開源愛好者
管理 Windows ?
今天課程當然是求方便
Mac 教室注意!
一喜一憂
VirtualBox
https://www.virtualbox.org/
Demo
VirtualBox
有雷注意
BIOS virtualization
(mac免設定)
動手做時間
安裝VirtualBox
Debian
下載
官網 / Mirror 站台
( 國網 / 交大 )
Demo
https://www.debian.org/
台大問題 / 國網未列表
動手做時間
檔案都抓好了
磁碟區分割
/
swap
Demo 安裝
動手做時間
安裝
基本操作
歡迎來到黑底白字的世界
command line interface
login 登入
你剛設定了幾個帳號 ?
1. root
2. 自訂
root 是神 !
root 是神 !
root 是神 !
自訂的不是神
但是他可以變成神
先登入自訂的看看
密碼打完就按 enter
相信我 鍵盤沒壞掉
( 登出打 logout / Ctrl-D )
alexw@debian:~$
@
怎麼念 ?
什麼意思 ?
@
at, 在
~
小蚯蚓, 抖溫納
~
什麼意思 ?
再看一次
alexw@debian:~$
$ 又是三小 ?
提示符號
$ = 人
# = 神
不信你再分別登入看看
切換視窗登
等等...你是說視窗嗎? 這不是黑底白字嗎?
切換tty
Alt-F1~6
(fn-option)
alexw@debian:~$
root@debian:~#
負責跟你玩耍的 shell
Linux
shell
不喜歡,可以換
Linux
shell
Linux
different shell
sh
bash
csh
tcsh
zsh
跳轉wiki
那我現在 ?
echo $SHELL
Linux 大小寫區別
$
變數的前置符號
指令 [參數] [更多參數]
清空畫面
clear
自動補齊鍵
tab
找之前的指令
方向鍵: 上
上一個動作
!!
!-n
最近使用指令
history
持續開機時間
uptime
日期
date
誰在線上
w
近期登入資料
last
東西放在哪裡 ?
初學 Linux 最大的問題
真。樹狀結構
/
切換路徑
cd
/ 根目錄
. 現在目錄
.. 上層目錄
~ 家目錄
- 上次目錄
cd ..
顯示目前所在
pwd
到家目錄
看看所在位置
到家目錄 cd ~
看看所在位置 pwd
“cd ~”可縮寫為 “cd”
cd .
cd ..
cd ~
cd /
/
前面沒東西代表 根目錄
前面有東西代表 目錄符號
cd ./
cd ../
cd ~/
cd /
cd ../../
cd /usr/local/etc
絕對路徑
相對路徑
絕對 = / 開頭
cd ~/.. 等同 cd /home
使用時機不同
列出資料夾內的東西
dir
ls
ls 沒東西 ?
你家是空的, 出去走走吧
cd /etc
ls
顏色區隔
試試看 /bin/ls
( root 沒做 alias )
alias
別名, 等等再說
副檔名
向上翻頁
shift-PgUP
項下同理
先回到自己家
cd
準備亂弄點東西
建立目錄
mkdir
建立空檔案
touch
砍目錄
rmdir
rm -r / rm -rf
(暴力注意)
砍檔案
rm
疑~ 好像怪怪 der
好像沒確認提示 ?
誤砍 ?
請花個十來萬找資料救援公司吧
請愛用 -i
沒有資源回收桶啦啊啊
rm -i
奇怪
阿你怎麼知道要用 -i
問男人
man
man rm
man
[option]
章節
man man
man -f man
whatis man
改名 / 移動
mv
複製
cp
避免覆蓋問題
mv -i
cp -i
很煩欸
每次都打 -i
alias
alias rm="rm -i"
alias mv="mv -i"
alias cp="cp -i"
alias
登出登入就沒了
除非寫進shell的環境設定檔
編輯 .basrc
查看內容
cat
cd /etc
cat passwd
or
cat /etc/passwd
內容太多
head
tail
more
less
head
前10行
or head -n
tail
最後10行
or tail -n
more / less
要用到 pipe 管線
|
不是 L
不是 i
是 shift-
cat passwd | more
把 passwd 的內容列出來丟給 more處理
同理 任何太長的
就丟 | more
可以不要空白
ls | more
那 less 勒 ?
less is more
比 more 還要 more 的 more 功能
差異
ls | more
ls | less
因為 less 很好用
所以常都 alias more=less
;
連續技
cd /;ls
echo
>
>>
輸出導向
>
砍掉重練
( 清空重寫 )
>>
附加
( 加在後面 )
覆蓋注意 !
回頭看一下
ls
man ls
-a 等同 --all
ls -a -l
ls -al
仔細看看 ls -al
cd /etc
ls -al
drwxr-xr-x 1 root root 4096 May 5 12:34 tpedu
-rw-r--r-- 1 root root 44 May 8 12:00 config
類型
- 檔案
d 目錄
l 連結
權限
[rwx][rwx][rwx]
擁有者 - 群組 - 其他
r=read 讀取
w=write 寫入
x=execute 執行
(如果是目錄 x 代表可進入)
drwxr-xr-x
-rw-------
-rwxr-xr-x
chmod
chmod g+xw,o-r file
chmod a+w file
chmod u=rw,g=r,o=r file
user
group
other
all
chmod 755 filename
r = 4
w = 2
x = 1
ugo
755
[4+2+1] [4+1] [4+1]
[r+w+x] [r+x] [r+x]
700
644
640
drwxr-xr-x 1 root root 4096 May 5 12:34 tpedu
-rw-r--r-- 1 root root 44 May 8 12:00 config
容量大小
-h
(human)
wildcard
*
ls -al a*
ls -al *
using -d
隱藏檔
.
(dot file)
* 不包含 dot file
.* 才有
帳號管理
使用者 / 群組
我是誰 ?
whoami
變身
su
$ su -
#
前提
1. 有 root 密碼
2. 與 root 同群組
su
變成其他使用者
其實不建議
請愛用 sudo
稍後介紹
建立使用者
adduser / useradd
adduser 新使用者名
useradd
批次使用
刪除使用者
deluser
< 通用性 注意 >
刪除使用者
vipw
group
home dir
chown user file
chgrp user file
chown user:group file
檔案結構
Filesystem Hierarchy Standard
unix filesystem
FreeBSD
/usr/local/etc/apache2/
Debian
/etc/apache2
各家 Linux 都走FHS
但是細節也是有差異
Debian
/etc/network/interface
CentOS
/etc/sysconfig/network-scripts/
使用者
/home
不是 /usr 喔
設定檔
/etc
et cetera
變動資料
/var
/var/log
/var/lib/mysql
/usr
unix software(system) resource ?
user ?
/bin
/sbin
/bin
/usr/bin
( /usr/local/bin )
df
df -h
/etc/fstab
編輯器
nano
vi
vim
vim
兩種模式
normal
insert
命令 :
i
a
o
normal —>insert
esc
insert —> normal
刪除
x
( normal mode )
刪除整行
dd
( normal mode )
到行首
0 or ^
( normal mode )
到行尾
$
( normal mode )
搜尋
/
( normal mode )
反向 ?
n / N
儲存離開
ZZ
( normal mode )
離開 不儲存
:q!
( command )
什麼鬼啊 ~
是的他強起來跟鬼一樣
資料來源 :vgod
很強大是沒錯
但
為何要學這鬼
通用性
Linux 有 nano 但其他的沒有
維護保證
保證你一路用到退休
還沒講外掛
作網頁
從 wysiwyg 走回 text editor
vim 會一點了
那...
帳號設定檔
vipw
(這是指令不是檔案)
Permission denied.
yes, su -
修改預設編輯器
update-alternatives --config editor
( tab 補完 )
root:x:0:0:root:/root:/bin/bash
alexw:x:1000:0:alexw,,,:/home/alexw:/bin/bash
vi /etc/group
設 alias
vi ~/.basrc
網路設定
TCP/IP
網路要通
ip
netmask
gateway
ip
地址
netmask
網路遮罩
gateway
閘道器
以上網路通
但是網域名不通
以上網路通
http://163.21.249.220
網域名不通
http://www.tp.edu.tw
Domain Name Server
就是負責轉換英文和數字
查看 ip 設定
ifconfig
ip addr show
查 gateway
route -n
查詢目前 dns
dig
設定
/etc/network/interface
網路卡設定
( IP/Mask/Gateway )
# /etc/network/interface
auto eth0
iface eth0 inet static
address 172.16.0.1
netmask 255.255.0.0
gateway 172.16.0.254
IPv6
# /etc/network/interface
auto eth0
iface eth0 inet static
address 172.16.0.1
netmask 255.255.0.0
gateway 172.16.0.254
iface eth0 inet6 static
address 2001:288:12ca::1
netmask 64
gateway 2001:288:12ca::ffff
DNS
/etc/resolv.conf
/etc/resolv.conf
nameserver 168.95.1.1
nameserver 8.8.8.8
設定完成…咦…?
重啟網路
service
systemctl
service networking restart
systemctl restart networking
systemd ( Debian 8+ )
systemctl 方法 服務
service 服務 方法
網路搞定了
測一下
岔題一下
網路偵錯
常看到的網路偵錯
打開 瀏覽器 連到 Yahoo
出不來就跟你說網路壞掉
測試方式
ping google.com
簡單的一行
其實做了不少事情
1. DNS 解析
2. 連線到 gateway
3.一路轉到 google
( ICMP )
重點在後續步驟
不通 就檢查
DNS
(nslookup/dig)
gateway
(ping)
要能正確說出
網路不通的點
改 host name
/etc/hostname
改完
hostname -F /etc/hostname
hostnamectl set-hostname hostname
套件系統
apt-get 萬能
source list
/etc/apt/source.list
# deb cdrom:[Debian GNU/Linux 8.1.0 _Jessie_ - Official amd64 CD
Binary-1 20150606-14:19]/ jessie main
deb cdrom:[Debian GNU/Linux 8.1.0 _Jessie_ - Official amd64 CD
Binary-1 20150606-14:19]/ jessie main
deb http://opensource.nchc.org.tw/debian/ jessie main
deb-src http://opensource.nchc.org.tw/debian/ jessie main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
# jessie-updates, previously known as 'volatile'
deb http://opensource.nchc.org.tw/debian/ jessie-updates main
deb-src http://opensource.nchc.org.tw/debian/ jessie-updates main
main
contrib
non-free
main
純。自由
Debian Free Software Guidelines
contrib
自由但相依於非自由
non-free
非自由
來裝看看
先改 source.list
拿掉 cdrom
更新 apt 資料
apt-update
E: Could not open lock file /var/lib/apt/lists/lock - open
(13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
E: Could not open lock file /var/lib/dpkg/lock - open (13:
Permission denied)
E: Unable to lock the administration directory (/var/lib/
dpkg/), are you root?
su -
安裝 ssh server
遠端操控
telnet
SSH
Secure Shell
openSSH
搜尋套件
apt-cache search 關鍵字
grep 過濾
安裝
apt-get install 套件
apt-get install openssh-server
測試
telnet localhost 22
ctrl+], q
console
到此為止
ssh client
win: putty
osx: 終端機 / iTrem
請使用非 root 登入
su 需要 root 密碼
那為何不用 root 登?
大家都知道 root 密碼
sudo
安裝
apt-get …
設定
visudo
修改預設編輯器
update-alternatives --config editor
( tab 補完 )
測試
調整一下 ssh server
/etc/ssh/sshd.conf
( ssh daemon )
PermitRootLogin
yes
no
without-password
不用密碼
用 key 登
這 … 不是初階課程
不給 root 登
是正確的
只有我
正面表列
翻遍設定檔
沒有啊 ?
man
man sshd_config
AllowUsers
重啟
systemctl restart sshd
try
防火牆注意
ssh 使用 TCP:22
sudo 用法
直接變 root
sudo -s
有需要再用
sudo command
使用者登入
sudo command
目前我們裝了
openssh-server
sudo
查詢已安裝套件
dpkg -l
搭配 grep
基本環境 ok
網⾴頁伺服器
網⾴頁伺服器
應⽤用程式
引擎
資料庫
瀏覽網⾴頁
網⾴頁伺服器
應⽤用程式
引擎
資料庫
瀏覽網⾴頁
apache
php
MySQL
MariaDB
LAMP
Linux Apche Mysql PHP
LEMP
Linux nginx mysql php
MariaDB
Apache
PHP
apt-cache search 套件
apt-cache show 套件
sudo apt-get install mariadb-server
sudo apt-get install apache2
sudo apt-get install php5 php5-mysql
http://your-debian-ip/
這頁很重要
這頁很重要
這頁很重要
網頁目錄
/var/www/html/
先測一下
phpinfo();
phpmyadmin
sudo apt-get install phpmyadmin
http://your-debian-ip/phpmyadmin/
設定檔
/etc/apache2/
a2工具
a2en[mod/site/conf]
a2dis[mod/site/conf]
設定檔
[mod/conf/site]-available
啟動區 (link)
[mod/conf/site]-enable
link
ln -s 來源 目的
lwrxwrxwrx
不用自己做
a2 工具幫你做
編輯 *-available
啟動 a2en*
取消 a2dis*
systemctl restart apache2
apache2.conf
改 phpmyadmin 路徑
/etc/apache/conf-available/phpmyadmin.conf
log
/var/log/*
系統維護
更新
apt-get update
apt-get upgrade
系統升級
edit source.list
apt-get update
apt-get upgrade (最小升級)
apt-get diet-upgrade(系統升級)
查看系統狀況
top
查看執行行程
ps
ps -aux
砍行程
kill -9
問題討論
Thanks.

linux 從無到有