Linux
- 一、Linux基礎
- 1.1 Linux介紹
- 1.2 Linux常見發布版本
- 1.3 Linux和Windows的區別
- 1.4 Linux常見命令
- 二、VMWare安裝使用
- 2.1 VMWare安裝
- 2.2 創建虛擬機
- 2.3 虛擬機環境配置
- 三、Docker安裝使用
- 3.1 什么是虛擬化
- 3.2 什么是Docker
- 3.3 Docker的安裝配置
- 四、Linux專案部署
- 4.1 JDK環境配置
- 4.2 Tomcat環境配置
- 4.2.1 使用Docker配置Tomcat
- 4.2.2 使用壓縮包配置Tomcat
- 4.3 MySQL環境配置
- 4.3.1 使用Docker配置MySQL
- 4.3.2 使用壓縮包配置MySQL
一、Linux基礎
1.1 Linux介紹
Linux 內核最初只是由芬蘭人林納斯·托瓦茲(Linus Torvalds)在赫爾辛基大學上學時出于個人愛好而撰寫的,
Linux 是一套免費使用和自由傳播的類 Unix 作業系統,是一個基于 POSIX 和 UNIX 的多用戶、多任務、支持多執行緒和多 CPU 的作業系統,
Linux 能運行主要的 UNIX 工具軟體、應用程式和網路協議,它支持 32 位和 64 位硬體,Linux 繼承了 Unix 以網路為核心的設計思想,是一個性能穩定的多用戶網路作業系統,
1.2 Linux常見發布版本
目前市面上較知名的發行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
1.3 Linux和Windows的區別
目前國內 Linux 更多的是應用于服務器上,而桌面作業系統更多使用的是 Windows
| 比較 | Windows | Linux |
|---|---|---|
| 界面 | 界面統一,外殼程式固定所有 Windows 程式選單幾乎一致,快捷鍵也幾乎相同 | 圖形界面風格依發布版不同而不同,可能互不兼容,GNU/Linux 的終端機是從 UNIX 傳承下來,基本命令和操作方法也幾乎一致, |
| 驅動程式 | 驅動程式豐富,版本更新頻繁,默認安裝程式里面一般包含有該版本發布時流行的硬體驅動程式,之后所出的新硬體驅動依賴于硬體廠商提供,對于一些老硬體,如果沒有了原配的驅動有時很難支持,另外,有時硬體廠商未提供所需版本的 Windows 下的驅動,也會比較頭痛, | 由志愿者開發,由 Linux 核心開發小組發布,很多硬體廠商基于著作權考慮并未提供驅動程式,盡管多數無需手動安裝,但是涉及安裝則相對復雜,使得新用戶面對驅動程式問題(是否存在和安裝方法)會一籌莫展,但是在開源開發模式下,許多老硬體盡管在Windows下很難支持的也容易找到驅動,HP、Intel、AMD 等硬體廠商逐步不同程度支持開源驅動,問題正在得到緩解 |
| 使用 | 使用比較簡單,容易入門,圖形化界面對沒有計算機背景知識的用戶使用十分有利, | 圖形界面使用簡單,容易入門,文字界面,需要學習才能掌握, |
| 學習 | 系統構造復雜、變化頻繁,且知識、技能淘汰快,深入學習困難, | 系統構造簡單、穩定,且知識、技能傳承性好,深入學習相對容易 |
| 軟體 | 每一種特定功能可能都需要商業軟體的支持,需要購買相應的授權, | 大部分軟體都可以自由獲取,同樣功能的軟體選擇較少 |
總結:windows系統需要進行圖形化界面的渲染,會消耗系統資源,Linux也有圖形化界面的系統,但更多的是使用命令式的系統作為服務器使用
1.4 Linux常見命令
# 切換到根目錄
cd /
# 切換到上級目錄
cd ..
# 查看當前檔案夾下的所有檔案
ls
# 查看當前檔案夾下的所有檔案及權限
ll
# 查看當前檔案夾下的所有檔案及隱藏檔案
ls -a
# 創建一個檔案夾
mkdir檔案夾名
# 創建多級檔案夾
mkdir -p 一級檔案夾/二級檔案夾
# 洗掉檔案(慎用)
rm -rf
# 移動檔案(剪切)
mv 移動檔案 新檔案地址
# 檔案重命名
mv 原檔案名 新檔案名
# 查看目錄是否存在
find 根目錄名/檔案名
# 復制檔案/目錄
cp -r 復制檔案 復制的地址
# 創建檔案
touch 檔案名.擴展名
# 編輯檔案
vi 檔案名.擴展名
# 進入檔案后,輸入i 進行編輯 編輯完成,ESC鍵+':eq' 保存并退出
# ':q!'強制退出
# 'ctrl + z' 中止
# 'ctrl + c' 強制終止
# 'exit'退出容器
clear 清屏
# 下載vim命令
yum -y install vim*
# 查看檔案內容
cat 檔案名 # 只能顯示最后一屏的女人
more 檔案名 # 按百分比顯示 回車鍵:下一個百分比 空格:下一頁
less 檔案名 # 可以使用上下鍵操作
# 壓縮和解壓縮
# z:呼叫gzip壓縮命令進行壓縮
# c:打包檔案
# v:顯示運行程序
# f:指定檔案名
# x:解壓壓縮包
# 壓縮
tar -zcvf 檔案名.tar.gz 壓縮位置
# 解壓
tar -zxvf 壓縮包 (壓縮包如:java.tar.gz)
# 顯示當前所在的檔案路徑
pwd
# 顯示當前系統中運行的行程
ps -ef
# 關閉指定的服務
kill -q 服務id
# 檔案授權
chmod u=rwx,g=rwx,o=rwx 檔案名
chmod 741 檔案名
# 查看當前開啟的埠號
iptables -nL
二、VMWare安裝使用
2.1 VMWare安裝
vm10的版本可以支持win7系統,
vm15以上的版本需要win8及win10系統支持,
vm12也可以在win8及win10上安裝,
下載VMWare,雙擊運行,一直 “下一步” 即可(可以改變安裝路徑),
2.2 創建虛擬機
第一步:創建虛擬機

第二步:安裝鏡像檔案(配置時再選擇)

第三步:選擇作業系統

第四步:選擇虛擬機的名稱和存盤位置

第五步:全程下一步之后會看到以下界面

第六步:配置虛擬機

2.3 虛擬機環境配置
第一步:選擇install Centos 7

第二步:選擇語言,建議默認的英文即可

第三步:設定密碼

第四步:重啟后輸入用戶名及密碼(root/root)

第五步:配置網路環境(讓虛擬機可以訪問外網)
虛擬機本身也是一個系統,和正常的系統使用方式是一樣的,所以也需要進行網路配置,
# 找到網路配置的檔案ifconf-ens33(不同的版本名字可能會不同)
cd /etc/sysconfig/network-scripts/
# 查看當前檔案夾下所有檔案,找到ifconf-ens33
ls
# 編輯組態檔vi 查看組態檔cat
vi ifcfg-ens33
# 修改組態檔 i進入編輯狀態,進行檔案編輯
# 編輯后的檔案如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=51fff489-cc76-4c5a-88df-12c0fd70fa7e
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.157.100
NETMASK=255.255.255.0
GATEWAY=192.168.157.2
DNS1=114.114.114.114
DNS2=8.8.8.8
# 注釋: BOOTPROTO改為static,靜態獲取
# ONBOOT:yes
# IPADDR:192.168.157.100 IP地址 在VMWare--編輯--虛擬網路編輯器--選擇NAT模式--點NAT設定--查看到子網IP(然后自己隨意選擇一個1-254之間的任意IP地址填入,如:查看的子網IP為192.168.157.0,那么IPADDR=192.168.157.xxx xxx為1-254容易值)
# NETMASK:255.255.255.0 子網掩碼
# GATEWAY:192.168.157.2 網關IP 在VMWare--編輯--虛擬網路編輯器--選擇NAT模式--點NAT設定--查看到網關IP,填入
# DNS1:114.114.114.114 服務器 用于訪問外網的,三大運營商用的就是114.114.114.114或8.8.8.8 這可以填寫一個
# 重新加載組態檔,讓網路配置生效
service network restart
第六步:關閉防火墻、連接測驗
# 注意:使用這命令關閉防火墻,只能暫時關閉,若重新啟動虛擬機,防火墻需要再次關閉
# 注意:主機的防火墻也需要關閉
# 查看當前的防火墻狀態
systemctl status firewalld
# 關閉防火墻
systemctl stop firewalld
# 外網訪問測驗
ping baidu.com
# 主機訪問測驗(主機IP使用ipconfig查看、主機防火墻也需要關閉)
ping 主機IP
三、Docker安裝使用
3.1 什么是虛擬化
在計算機中,虛擬化(英語:Virtualization)是一種資源管理技術,是將計算機的各種物體資源,如服務器、網路、記憶體及存盤等,予以抽象、轉換后呈現出來,打破物體結構間的不可切割的障礙,使用戶可以比原本的組態更好的方式來應用這些資源,這些資源的新虛擬部份是不受現有資源的架設方式,地域或物理組態所限制,一般所指的虛擬化資源包括計算能力和資料存盤,
? 在實際的生產環境中,虛擬化技術主要用來解決高性能的物理硬體產能過剩和老的舊的硬體產能過低的重組重用,透明化底層物理硬體,從而最大化的利用物理硬體 對資源充分利用
虛擬化技術種類很多,例如:軟體虛擬化、硬體虛擬化、記憶體虛擬化、網路虛擬化(vip)、桌面虛擬化、服務虛擬化、虛擬機等等,
3.2 什么是Docker
Docker 是一個開源專案,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余專案,它基于 Google 公司推出的 Go 語言實作, 專案后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,專案代碼在 GitHub 上進行維護,

? Docker 自開源后受到廣泛的關注和討論,以至于 dotCloud 公司后來都改名為 Docker Inc,Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中廣泛應用,
? Docker 專案的目標是實作輕量級的作業系統虛擬化解決方案, Docker 的基礎是 Linux 容器(LXC)等技術,
? 在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便,用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單,
為什么選擇Docker?
(1)上手快,
? 用戶只需要幾分鐘,就可以把自己的程式“Docker化”,Docker依賴于“寫時復制”(copy-on-write)模型,使修改應用程式也非常迅速,可以說達到“隨心所致,代碼即改”的境界,
隨后,就可以創建容器來運行應用程式了,大多數Docker容器只需要不到1秒中即可啟動,由于去除了管理程式的開銷,Docker容器擁有很高的性能,同時同一臺宿主機中也可以運行更多的容器,使用戶盡可能的充分利用系統資源,(2)職責的邏輯分類
? 使用Docker,開發人員只需要關心容器中運行的應用程式,而運維人員只需要關心如何管理容器,Docker設計的目的就是要加強開發人員寫代碼的開發環境與應用程式要部署的生產環境一致性,從而降低那種“開發時一切正常,肯定是運維的問題(測驗環境都是正常的,上線后出了問題就歸結為肯定是運維的問題)”(3)快速高效的開發生命周期
? Docker的目標之一就是縮短代碼從開發、測驗到部署、上線運行的周期,讓你的應用程式具備可移植性,易于構建,并易于協作,(通俗一點說,Docker就像一個盒子,里面可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件件的取,)(4)鼓勵使用面向服務的架構
? Docker還鼓勵面向服務的體系結構和微服務架構,Docker推薦單個容器只運行一個應用程式或行程,這樣就形成了一個分布式的應用程式模型,在這種模型下,應用程式或者服務都可以表示為一系列內部互聯的容器,從而使分布式部署應用程式,擴展或除錯應用程式都變得非常簡單,同時也提高了程式的內省性,(當然,可以在一個容器中運行多個應用程式)
3.3 Docker的安裝配置
- 1、清除掉之前的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 2、安裝Docker的倉庫
# 安裝倉庫所需要的包
yum install -y yum-utils
# 配置阿里云的docker下載鏡像地址
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 3、安裝Docker的引擎
yum install docker-ce docker-ce-cli containerd.io
- 4、啟動Docker服務
# 啟動Docker服務
systemctl start docker
- 5、查看Docker相關的資訊
# 查看docker的版本資訊
docker version
# 查看docker的系統資訊
docker info
- 6、檢驗docker是否啟動成功(訪問默認提供的helloworld檔案)
docker run hello-world
- 7、查看目前已有的鏡像(image)
docker images
- 8、配置阿里云的鏡像加速(需要主機登錄阿里云找到鏡像服務)
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://gbntt4wi.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
- 常見Docker命令
# 查看當前已有鏡像
docker images
# 洗掉指定鏡像
docker rmi 鏡像id
# 洗掉指定容器
docker rm 容器id
# 重啟容器
docker restart 容器id
docker start 容器id
# 查看docker行程
docker ps -a
# 關閉行程
docker stop 行程id
# 重啟行程
docker restart 行程id
docker start 行程id
四、Linux專案部署
4.1 JDK環境配置
# 將java壓縮包上傳到指定位置
# 解壓
tar -zxvf jdk-8u144-linux-x64.tar.gz
# 編輯 /etc/profile
vi /etc/profile
# 添加JAVA_HOME和PATH
JAVA_HOME=/home/juni/java/jdk1.8.0_144/
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
# 重新加載組態檔
source etc/profile
# 測驗:javac java
4.2 Tomcat環境配置
4.2.1 使用Docker配置Tomcat
- 1、通過docker下載Tomcat的鏡像
# 拉取鏡像
docker pull tomcat
- 2、啟動
# 啟動
docker run -d -p 9001:8080 --name dockerTomcat tomcat:9.0
- 3、進入容器中
# 進入指定的容器中
docker exec -i -t 容器名 /bin/bash
- 4、將web專案的war包復制到webapps目錄下(localhost下運行)
# 在容器中運行:
# 更新包管理工具
apt-get update
# 安裝vim
apt-get install vim
# 將web專案的war包復制到webapps目錄下(localhost下運行)
docker cp 本地檔案的路徑 容器id或者名:<docker容器內的路徑>
4.2.2 使用壓縮包配置Tomcat
# 上傳Tomcat的壓縮包
# 解壓
tar -zxvf 壓縮包
# 配置埠號
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
# 進入bin目錄,執行./startip.sh
./startup.sh
4.3 MySQL環境配置
4.3.1 使用Docker配置MySQL
- 1、下載docker中對應MySQL的鏡像
docker pull mysql
- 2、啟動MySQL服務并設定初始化密碼
# docker run 運行 --name 給當前的服務起一個名字 -e 環境配置 tag:指定要啟動的mysql的版本
docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=root -d -p 3336:3306 mysql:5.7
- 3、測驗,在宿主機上打開資料庫的客戶端,輸入虛擬機的ip地址,埠號及密碼
4.3.2 使用壓縮包配置MySQL
- 1、Centos7自帶了maridb的資料庫相關檔案,所以在安裝Mysql之前需要先排查環境
# 查找當前環境中是否已經存在MySQL相關的環境
rpm -qa | grep mysql
- 2、上傳MySQL的壓縮包,之后進行解壓(根據壓縮包選擇解壓命令)
解壓后可以看到多個.rpm的檔案,其中需要安裝server及client
# gzip解壓
tar -zxvf 壓縮包
# 解壓
tar -xvf 壓縮包
# z:呼叫gzip壓縮命令進行壓縮
# c:打包檔案
# v:顯示運行程序
# f:指定檔案名
# x:解壓壓縮包
- 3、安裝server
執行安裝命令后,會報錯,直接進行下一步進行,無需理會,(錯誤資訊:需要安裝perl相關的lib檔案)
rpm -ivh MySQL-server-5.6.49-1.el6.x86_64.rpm
- 4、安裝perl相關的lib檔案
安裝完成后,執行第三部命令,但執行程序中還會出現報錯,無需理會,進行下一步,(錯誤含義:當前系統中已經存在的mariadb相關的環境,與MySQL沖突了,需要卸載)
# 安裝perl相關的lib檔案
yum install -y perl*
# 安裝server
rpm -ivh MySQL-server-5.6.49-1.el6.x86_64.rpm
# 錯誤含義:當前系統中已經存在的mariadb相關的環境,與MySQL沖突了,需要卸載,
# 卸載自帶的mariadb服務
rpm -e --nodeps mariadb-libs-1:5.5.56-2.el7.x86_64
# 再次安裝MySQL服務
rpm -ivh MySQL-server-5.6.49-1.el6.x86_64.rpm
- 5、看到下述提示代表MySQL服務安裝成功
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
已為root賬戶生成了一個隨機密碼
You will find that password in '/root/.mysql_secret'.
你可以在'/root/.mysql_secret'找到該密碼
You must change that password on your first connect,
你必須在第一次連接時修改密碼
no other statement but 'SET PASSWORD' will be accepted.
第一行陳述句輸入 'SET PASSWORD'進行密碼的修改
See the manual for the semantics of the 'password expired' flag.
- 6、安裝MySQL的客戶端
rpm -ivh MySQL-client-5.6.49-1.el6.x86_64.rpm
- 7、啟動MySQL服務
# 查看隨機生成的密碼
cat /root/.mysql_secret
# 啟動MySQL服務
service mysql start
- 8、設定MySQL密碼
# 在查看隨機生成的密碼
cat /root/.mysql_secret
# 啟動MySQL服務之后:service mysql start
# 設定密碼,輸入上邊查看到密碼
mysql -u root -p
# 進入mysql命令
輸入查看到的密碼
# 設定密碼
set password=password('root');
# 授予訪問權限,進行遠程連接測驗(在MySQL環境下操作)
grant all privileges on *.* to 'root' @'%' identified by 'root';
flush privileges;
exit #退出sql命令
- 9、開啟Linux的3306埠號
# 開啟Linux的3306埠號
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
- 10、重啟服務、查看埠是否設定成功
# 重新啟動mysql
service mysql start
# 查看當前開啟的埠號
iptables -nL
每日一點點進步
不進則退
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342005.html
標籤:其他
