首先,在你的Windows系統上要想有linux系統,那就必須先安裝一款軟件,這裏提供的是1四、15的,還有ISO鏡像:VMware-workstationhtml
安裝VMware:略python
新建虛擬機以前將ISO鏡像加到配置,否則沒法啓動虛擬機,詳見:CentOS 7的安裝教程mysql
注意:安裝Linux操做系統時對內存的最低要求爲:512Mlinux
yum install -y bash-completion vim lrzsz wget expect net-tools nc nmap tree dos2unix htop iftop iotop unzip telnet sl psmisc nethogs glances bc net-tools
vim /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=「yes」 BOOTPROTO=「static」 IPADDR=10.0.0.100 # IP地址 NETMASK=255.255.255.0 # 子網掩碼 GATEWAY=10.0.0.254 # 網關 重啓網卡: /etc/init.d/network restart DNS配置: vim /etc/resolv.conf nameserver 114.114.114.114 nameserver 223.5.5.5 配置完成以後就可使用ping命令,如:ping baidu.com
hostnamectl set-homename 主機名
# 方法1 vim /etc/hosts進入文件編輯,輸入:10.0.0.100 主機名,保存退出 # 方法2 echo '10.0.0.100' 主機名>>/etc/hosts 而後執行命令:ping 主機名,能ping通就說明OK了
# 檢查防火牆是否開啓 iptables -L # 臨時關閉防火牆 iptables -F service iptablesa stop # 永久關閉防火牆 systemctl disable firewalld # 查詢selinux防火牆 getenforce(Enforcing 強制) # 臨時關閉 setenforce 0 # 永久關閉 vim /etc/selinux/config 修改:SELINUX=disabled # 重啓虛擬機
退出當前用戶: Ctrl + d 查找: Ctrl + r 歷史: history 鎖屏: Ctrl + s 解鎖: Ctrl + q 關機: poweroff 重啓: reboot
命令格式:命令 [選項] [參數]nginx
關機:init 0 切換用戶:Ctrl+Alt[F1~F6] 退出: exit 瀏覽: ls(當前文件夾下) ls -l 詳細信息 ll 詳細信息 ls -a 顯示隱藏文件 ls -ltr /var/log/ (時間倒序排列) 切換到當前用戶的家目錄: cd ~ 如:cd ~以後,pwd一下,會獲得/root 返回上一次的目錄: cd - 返回根目錄: cd 日期: date date '月日時分年'(同步系統時間) hwclock -s(同步硬件時間) 萬年曆 : cal cal 月 年 清空屏幕: ctrl+l clear 幫助信息: man --help info
建立目錄: mkdir 文件名(指定路徑,相對或絕對) mkdir -p /a/b/c 級聯建立目錄 小技巧: mkdir a{1..10} 批量建立多個目錄 查詢目錄: ls ls -ld 查看單層目錄 tree /a 查看多層目錄 tree -L 1 只查看一層 小技巧: ls -ld dir* 迷糊查詢 修改目錄: 1. 剪切: mv /原路徑 /目標路徑 mv /原路徑 /目標路徑/重命名 mv /原文件名 /新文件名 2. 拷貝: cp 原路徑 目標路徑/重命名 cp -r /root/test /opt/new(拷貝目錄) cp -a (帶源文件的屬性拷 刪除目錄: rm -rf /路徑 rm -rf 多個文件 經過文件句柄找回丟失數據(不能重啓,不能繼續寫入)
種類: ASCII TEXT:純文本 LSB Exe:二進制可執行文件(命令、程序) 壓縮文件:zip、tar、gz、cpio、iso、bz2 二進制數據文件等 文件建立: 建立空文件: touch a.txt 刪除文件: rm -rf a.txt 文件查看: 查看基本信息: ls -l a.txt 查看文件內容: cat a.txt 適合小文件內容查看,可同時查看多個文件 cat -n a.txt 帶序號顯示 more a.txt 分頁顯示,查看大文件,不可上下翻頁 less a.txt 分頁,可上下翻頁查看 head a.txt 查看前十行信息 head -n3 a.txt 查看前三行信息 tail a.txt 查看後十行信息 tail -f 監控 文件操做: 複製:cp 不用加 -r 剪切:mv 的用法同目錄操做 文件內容編輯: 1. 重定向: > 覆蓋重定向 >> 追加劇定向 cat /etc/passwd >>a.txt echo 2. vim編輯器: a:命令模式(初始模式) 1. 查看文件內容,移動光標,page up或down翻頁 2. G,1G(gg),10G(最後一行, 第一行,第10行) 3. $行尾 ^行首 4. /搜索內容 高亮顯示 5. yy 複製光標所在行 Nyy 複製N行 dd 刪除/剪切 Ndd 刪除/剪切N行 p 粘貼 x(delete) 刪除光標所在的單個字符 dG 光標刪除至文本末尾 d$ 光標所在刪除到行末,包括光標所在字符 d^ 光標所在刪除到行首,不包括光標字符 r 替換光標所在的單個字符 u 撤銷 ZZ 保存退出 b:編輯模式 i 光標字符以前插入數據 o 光標所在的下一行插入數據,新起一行 a 光標字符以後插入數據 A 行末錄入數據 I 行首錄入數據 O 上一行錄入數據 退出編輯模式:按Esc,退回到命令模式 c:末行模式 命令模式下按:進入 強制退出: :q! 保存退出: :wq 顯示行號: :set nu 不顯示行號: :set nonu 批量替換: :%s/root/ROOT/g
不一樣的操做系統具備不一樣的硬盤分區工具,Windows系統下很是有名的分區工具是FDISK,在LINUX系統下進行分區可使用fdisk,或者使用相同功能的圖形界面程序,在一塊硬盤上最多隻能有4個分區,經過分區固然不能產生任何文件系統。在分區以後只是對硬盤上的磁盤空間進行了保留,還不能直接使用。分區後必需要進行格式化。在Windows系統下能夠經過資源管理器下的文件菜單或者format程序來執行,在Linux系統下大多使用mkfs命令來完成。Linux支持不一樣的文件系統,應用最普遍的是ext3。c++
注意:進行任何磁盤分區或大小改動工做,都會丟失之前的數據,所以在分區以前必定要對數據進行備份。redis
查看磁盤: ls -l fdisk -l 分區: fdisk /dev/sdb ---> 進入 n 新建 p 查看現有分區 w 保存退出 格式化成文件系統:XFS mkfs.xfs /dev/sdb1/ 掛載設備: 掛載點(空目錄):mkdir /data 掛載: mount /dev/sdb1 /data 查看磁盤使用狀況: df -h 自動掛載的配置文件: vim /etc/fstab /dev/sdb1 /data xfs defaults 0 0 # 磁盤路徑 掛載到哪 什麼格式
注:最好用uuid替換磁盤路徑 UUID=asia-fofe-sada-123 /data xfs defaults 0 0 查看掛載設備信息: blkid
磁盤陣列(Redundant Arrays of Independent Drives,RAID)sql
功能:shell
RAID級別:數據庫
更多請訪問網址: http://www.cnblogs.com/linhaifeng/articles/6045600.html#_label7
1. 用戶及passwd文件 /etc/passwd文件:存儲全部用戶的相關信息,該文件也被稱爲用戶信息數據庫(Database)。 /etc/passwd文件每一個字段的具體含義: 字段1: 記錄的是這個用戶的名字(在建立用戶時root用戶起的)。 字段2: 若是是x,表示該用戶登陸Linux系統時必須使用密碼;若是爲空,則該用戶在登陸時無須提供密碼。 字段3: 記錄的是這個用戶的uid。注意:(0-1000系統佔用)uid爲0,是root用戶 字段4: 記錄的是這個用戶所屬羣組的gid。 字段5: 記錄的是有關這個用戶的註釋信息(如全名或通訊地址)。 字段6: 記錄的是這個用戶的家目錄的路徑。 字段7: 記錄的是這個用戶登陸後,第一個要執行的進程 2. 用戶管理: 瞭解useradd命令的經常使用選項: –u: 指定用戶的UID –g: 指定用戶所屬的羣組 –d: 指定用戶的家目錄 –c: 指定用戶的備註信息 –s: 指定用戶所用的shell(/bin/bash 或者 /sbin/nologin) eg: 建立用戶: useradd [-u 1001 -g 1001 -d /home -c bigman -s /bin/bash] rongge 查看用戶信息: id 用戶名 tail -1 /etc/passwd 查看當前登陸用戶:whoami or who 設置密碼: passwd 用戶名 切換用戶: su - 用戶名 刪除用戶: userdel -r 用戶名 修改用戶: usermod -u uid 用戶名 3. 建立一個用戶涉及到的5個文件,eg(useradd test): 家目錄: ls /home/ 密碼目錄: ls /etc/passwd 密碼詳情目錄: ls /etc/shadow 組目錄: ls /etc/gorup 組密碼目錄: ls /etc/gshadow 郵箱目錄: ls /var/spool/mail/ 重點:在Linux中,一切皆文件,因此新建立的用戶也是一個文對象!
GID,組名 組管理: 建立組: groupadd [-g 1001] 組名 查看組: cat /etc/group tail -1 /etc/group 刪除組: groupdel 組名 修改組的id: groupmod -g 10001 組名
做用在文件上的屬性 普通權限的規劃: r 讀 4 w 寫 2 x 執行 1
程序管理
# 查看操做系統的進程狀態: ps ps -ef |grep 進程名 查看特定的進程 ps aux | head -3 查看前三行的進程 # 殺死進程: kill 進程號 kill -9 進程號 強制殺死 pkill 進程名 # 服務的操做: systemctl start 服務 systemctl restart 服務 systemctl stop 服務
網絡管理
# 查看地址: ip a ifconfig # 修改地址: vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 重啓網絡:systemctl restart network # 查看啓動服務的端口: netstat -tulnp
# 光盤掛載: mount /dev/cdrom /mnt cd/mnt/package 查看軟件包個數: ls -l |wc -l # 軟件包的安裝: rpm -ivh 軟件包名.rpm rpm -Uvh 軟件包名.rpm(更新安裝) # rpm包的查詢: rpm -q 完整的軟件包名 安裝顯示 rpm -qa 顯示全部 rpm -qa |grep 包名(過濾顯示) # 軟件包的卸載: rpm -e 軟件包名(正常卸載) # 查看命令的具體路徑: which vim # 查詢命令來自哪一個軟件包: rpm -qf 命令文件路徑 # 查看安裝軟件的文件: rpm -ql 軟件包名 # 依賴安裝: rpm -ivh a b c d(仍是嚴格依賴版本號)
yum
安裝yum: yum配置文件(yum源)cd /etc/yum.repos.d 移除Base源:mv *.repos /tmp 從ali獲取Base源,並安裝: wget http://mirrors.aliyum.com/repo/Centos-7.repo 安裝epel源: yum install -y epel-release 使用yum安裝軟件: yum install openssl -y (證書軟件) yum install openssl-devel -y (支持軟件) yum groupinstall "組名" 安裝一個組的軟件包 查詢軟件包: yum list |grep python yum grouplist 卸載軟件包: yum remove 優化yum源: 移走網絡的yum: mkdir ali mv *.repo ali 1. 設置本地的yum源: 先將光盤掛載到mnt目錄 vim /etc/yum.repos.d/loacal.repo [local] name=localiso baseurl=file:///mnt gpgcheck=0 使用: 先清除緩存的yum: yum clean all 安裝軟件: yum install 軟件名 -y 2. 局域網yum源 安裝ftp軟件:yum install vsftpd -y 啓動ftp: systemctl start vsftpd systemctl enable vsftpd 建立站點目錄,將光盤鏡像拷貝到文件目錄 mkdir /var/ftp/pub/centos7 cp -a /mnt/* /var/ftp/pub/centos7 生成ftp站點的yum源的配置文件 cd /etc/yum.repos.d/ vim ftp.repo [ftpd] name=centos7 baseurl=ftp://ip地址/pub/centos7 gpgcheck=0 測試安裝: yum clean all yum install 軟件名
源碼包
zip 解壓: unzip xxx.zip tar 解壓: tar xf xxx.tar tar.gz tar.xz tgz iso 需掛載使用: mount -o loop xxx.iso /test
下載redis wget http://download.redis.io/releases/redis-3.2.10.tar.gz redis安裝 tar xf redis-3.2.10.tar.gz cd /redis-3.2.10 make 添加環境變量 vim /etc/profile 末尾行添加: export PATH=/opt/redis-3.2.10/src:$PATH 保存後讓它生效:source /etc/profile 啓動服務: redis-server & 查看服務: netstat -tulnp|grep redis 鏈接服務: redis-cli python鏈接redis: 1. unzip redis-py-master.zip 2. cd redis-py-master 3. python3 setup.py install 本地鏈接測試 對redis的單實例進行鏈接操做 python3 >>>import redis >>>r = redis.StrictRedis(host='localhost', port=6379) >>>r.set('name', 'oldguo') True >>>r.get('name') b'oldguo'
源碼包安裝的流程(python3.6): 先到官網下載Linux系統的源碼包:Python-3.6.7.tar.xz 解壓文件:tar xf Python-3.6.7.tar.xz 安裝依賴環境: yum install openssl openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ zlib zlib-devel -y 配置: cd Python-3.6.7 ./configure 定製功能 編譯爲二進制文件並拷貝: make && make install
二進制包
將MySQL解壓到opt目錄:tar xf mysql-5.7.20-linux-......gz 軟連接: ln -s 。。。。。 mysql 編輯環境變量: vim /etc/profile 末尾行添加: export PATH=/opt/mysql/bin:$PATH 生效: source /etc/profile 卸載自帶的 mariadb庫: yum remove mariadb-libs 生成配置文件(/etc/my.cnf): vim /etc/my.cnf [mysqld] basedir=/opt/mysql datadir=/opt/mysql/data socket=/tmp/mysql.sock log_error=/var/log/mysql.log log_bin=/opt/mysql/data/mysql-bin server_id=100 [mysql] socket=/tmp/mysql.sock 建立用戶&數據目錄,並受權: useradd mysql mkdir /opt/mysql/data chown -R mysql.mysql /opt/mysql 初始化數據: mysqld --initialize-insecure --basedir=/opt/mysql --datadir=/opt/mysql/data --user=mysql 共享庫問題報錯: mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 解決: yum install -y libaio 權限問題報錯: 2019-04-19T09:39:31.312685Z 0 [ERROR] Could not open file '/var/log/mysql.log' for error logging: Permission denied 2019-04-19T09:39:31.312901Z 0 [ERROR] Aborting 解決:touch /var/log/mysql.log 受權:chown -R mysql.mysql /var/log/mysql.log 啓動數據庫:方法1 cd /opt/mysql/support-fiels ./mysql.server start 爲方便啓動:方法2 cp mysql.server /etc/init.d/mysqld /etc/init.d/mysqld start 擴展:方法3(systemctl方法) 使用 systemctl 管理mysql vim /etc/systemd/system/mysqld.service [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 啓動 systemctl start mysqld 建立mysql連接用戶,進入mysql受權 grant all on *.* to root@'10.0.0.%' identified by '123'; 安裝pymysql pip3 install pymysql 進入mysql測試: vim testmysql.py #!/usr/bin/python3 import pymysql db = pymysql.connect("10.0.0.100","root","123","bbs" ) cursor = db.cursor() cursor.execute("SELECT VERSION()") data = cursor.fetchone() print ("Database version : %s " % data) db.close() 執行py文件: python3 testpython.py
ssh服務
安裝ssh: yum install ssh -y 查看:rpm -qa | grep openssh 服務端啓動ssh: service sshd status 客戶端鏈接ssh: ssh ip地址 修改ssh配置: vim /etc/ssh/sshd_config 默認端口22 重啓服務: service sshd restart ssh啓動優化: 配置文件中:/etc/ssh/sshd_config 將UseDNS改成no hosts文件添加ip地址和主機名
http服務
部署網頁服務: 準備環境: 關防火牆、配ip 安裝: yum install httpd -y 修改配置文件:vim /etc/httpd/conf/httpd.conf Listen 80 DocumentRoot 路徑/var/www/html 重啓: service httpd restart echo 'test' >> /var/www/html/index.html 測試: 打開瀏覽器輸入 http://服務端ip:端口/
samba服務
samba是一個網絡服務器,用於Linux和Windows之間共享文件 ''' 注意: 客戶端要對目錄是否有權限,必須samba軟件放權+系統放權 每一個用戶的訪問方式是:\\服務端ip\用戶名,默認訪問本身的家目錄(該用戶對該目錄有w權限,且samba對用戶的家目錄開啓了writeable=yes的權限) 對於共享的目錄,是全部人打開目錄進行操做的,而不是一個打印機,因此printable必定要設置no writeable=no,write list=user1,user2表明全部人都沒有寫權限,惟獨user1和user2有 ''' 安裝: yum install samba -y 修改配置: vim /etc/samba/smb.conf samba安全認證掌握兩種:share(匿名訪問)、user(用戶名密碼) security=user、share 啓動: service smb start 重啓: service smb restart 關閉: service smb stop 添加smb用戶和設置密碼: useradd 用戶名 smbpasswd –a 用戶
[common] comment = ...... 設置共享註譯 path = 設置共享目錄的物理路徑 valid users = @組名,用戶名 設置容許哪些合法組或用戶訪問 public = yes|no 設置共享資源是否能給遊客賬號訪問 browseable = yes|no 設置該共享爲隱藏共享 writable = yes|no 設置是否容許客戶端寫入數據 hosts allow = 設置容許訪問該共享的合法網段或IP
Nginx服務
使用官方Nginx yum源 vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 安裝Nginx: yum install nginx -y 啓動Nginx,並將Nginx加入開機自啓: systemctl start nginx systemctl enable nginx 查看啓動: netstat -tulnp|grep nginx
# 依賴包安裝: yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ openssl-devel zlib zlib-devel -y # 安裝Django框架和uwsgi: 寫入re.txt文件: vim re.txt asn1crypto==0.24.0 beautifulsoup4==4.6.3 bs4==0.0.1 certifi==2018.4.16 cffi==1.11.5 chardet==3.0.4 Click==7.0 cryptography==2.3.1 Django==1.11.9 Flask==1.0.2 Flask-Cors==3.0.6 gevent==1.3.6 greenlet==0.4.15 idna==2.7 ItsDangerous==1.1.0 Jinja2==2.10 lxml==4.2.6 MarkupSafe==1.0 numpy==1.15.3 Pillow==5.3.0 pycparser==2.18 PyMySQL==0.9.2 pytz==2018.7 requests==2.19.1 selenium==3.141.0 six==1.11.0 urllib3==1.23 virtualenv==16.1.0 Werkzeug==0.14.1 wordcloud==1.5.0 安裝re.txt內的包:pip3 install -i https://pypi.doubanio.com/simple/ -r re.txt 安裝uwsgi:pip3 install -i https://pypi.doubanio.com/simple/ uwsgi # 測試uwsgi是否正常,新建 test.py文件,內容以下: vim test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello Django"] ''' 注意,不能使用root用戶,不然會報錯: *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** your server socket listen backlog is limited to 100 connections your mercy for graceful operations on workers is 60 seconds mapped 72920 bytes (71 KB) for 1 cores *** Operational MODE: single process *** WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x1c608b0 pid: 24413 (default app) uWSGI running as root, you can use --uid/--gid/--chroot options *** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** *** uWSGI is running in multiple interpreter mode *** spawned uWSGI worker 1 (and the only) (pid: 24413, cores: 1) ''' 解決: 建立一個用戶:useradd 用戶名 切換到用戶下:su - 用戶名 而後在終端運行: uwsgi --http :8001 --wsgi-file test.py & 頁面顯示:Hello Django就對了 測試django,運行: django-admin.py startproject demosite cd demosite vim settings.py 修改:ALLOWED_HOSTS=['*'] python3 manage.py runserver 0.0.0.0:8002 在瀏覽器內輸入:http://10.0.0.100:8002,檢查django是否運行正常 # 使用uwsgi進行項目管理 配置uwsgi vim /root/demosite/uwsgi.ini [uwsgi] socket = 127.0.0.1:9999 master = true workers = 2 max-requests = 1000 buffer-size = 30000 pidfile = /run/uwsgi.pid daemonize = /var/log/uwsgi.log 啓動uwsgi uwsgi --ini /root/test1/uwsgi.ini & 配置nginx vim /etc/nginx/conf.d/py.conf server { listen 80; server_name 10.0.0.100; client_max_body_size 100M; location / { index index.html; include uwsgi_params; uwsgi_pass 127.0.0.1:9999; # 轉發的地址 uwsgi_param UWSGI_SCRIPT demosite.wsgi; uwsgi_param UWSGI_CHDIR /root/demosite; # 項目目錄 } } # 重啓nginx: systemctl restart nginx # 瀏覽器訪問: http://10.0.0.100 會跳轉至django項目 # 查看進程: ps -ef |grep uwsgi
1. 先將本身的項目打包(BBS.zip),傳到opt目錄下,再導出數據庫sql,一併傳到opt目錄下 2. 鏈接到mysql,導入SQL腳本 a. 建立庫:create database bbs charset utf8mb4 b. use bbs; c. source /opt/bbs.sql;(導入) d. show tables; e. \q (退出) cd /opt unzip BBS.zip cd BBS/BBS vim settings.py 修改: ALLOWED_HOSTS=["*"] DATABASES = { 'default': { 'HOST': '10.0.0.100', 'USER': 'root', 'USER': 'bbs',(優化後的用戶) } } 受權用戶:grant select,update,insert,delete on bbs.* to bbs@'10.0.0.%' identified by '123'; 測試用戶鏈接mysql: mysql -ubbs -p123 -h10.0.0.100 ''' 補充: mysql用戶的定義 USERNAME@'白名單' 權限: grant all grant select,update,insert ''' 3. 配置nginx cd /BBS vim /etc/nginx/conf.d/py.conf server { listen 80; server_name 10.0.0.100; client_max_body_size 100M; location /static { alias /opt/BBS/static/; } location /media { alias /opt/BBS/media; } location / { index index.html; include uwsgi_params; uwsgi_pass 127.0.0.1:9090; uwsgi_param UWSGI_SCRIPT BBS.wsgi; uwsgi_param UWSGI_CHDIR /opt/BBS; }} 4. 配置uwsgi vim uwsgi.ini [uwsgi] socket = 127.0.0.1:9090 master = true workers = 2 reload-mercy = 10 vacuum = true max-requests = 1000 limit-as = 512 buffer-size = 30000 關閉已有的uwsgi服務: kill -9 `ps -ef |grep uwsgi|awk {'print $2'}` 5. 啓動uwsgi uwsgi --ini uwsgi.ini & 6. 重啓nginx systemctl restart nginx