Linux從入門到入門

1、 前言

首先,在你的Windows系統上要想有linux系統,那就必須先安裝一款軟件,這裏提供的是1四、15的,還有ISO鏡像VMware-workstationhtml

安裝VMware:略python

新建虛擬機以前將ISO鏡像加到配置,否則沒法啓動虛擬機,詳見:CentOS 7的安裝教程mysql

注意:安裝Linux操做系統時對內存的最低要求爲:512Mlinux

2、 Linux虛擬機配置

  • 經常使用軟件包安裝
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 主機名  
  • ip配置
# ​方法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
# 重啓虛擬機

3、 經常使用快捷鍵

退出當前用戶: Ctrl + d
查找: Ctrl + r
歷史: history
鎖屏: Ctrl + s
解鎖: Ctrl + q
關機: poweroff
重啓: reboot

4、 經常使用命令

命令格式:命令 [選項] [參數]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

5、 目錄(d)相關操做

建立目錄: 
	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 多個文件
經過文件句柄找回丟失數據(不能重啓,不能繼續寫入)

6、 普通文件(-)相關操做

種類:
    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

7、 磁盤 & 文件系統

  • 磁盤分區和格式化

不一樣的操做系統具備不一樣的硬盤分區工具,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
  • 補充RAID

  磁盤陣列(Redundant Arrays of Independent Drives,RAID)sql

功能:shell

  • 1. 聚合多塊磁盤的容量,提供更大的儲存空間
  • 2. 高性能的併發存取(IO)
  • 3. 數據物理層面的安全性更高(作成鏡像關係)

RAID級別:數據庫

  1. raid0 條帶化功能,性能極高,無安全性,至少2塊盤
  2. raid1 磁盤鏡像(把一個磁盤的數據鏡像到另外一個磁盤上),性能無明顯提高,安全性高,浪費一半的空間
  3. raid1+0: 至少須要4塊盤,鏡像+條帶化,兼顧性能與安全,成本較高,浪費一半空間
  4. raid5: 分佈式奇偶校驗的獨立磁盤結構,至少3塊盤,存儲數據時計算校驗值,寫入性能低,讀的速度較快,適用於讀多寫少的場景

8、 用戶、組、 權限

更多請訪問網址: 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

9、 程序管理 & 網絡管理

  • 程序管理

# 查看操做系統的進程狀態: 
    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

10、 軟件包管理

  • rpm
# 光盤掛載:
    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'
Redis源碼包的安裝
源碼包安裝的流程(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
python源碼包的安裝
  • 二進制包

將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
MySQL的安裝

11、服務

  • 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

12、django項目測試

# 依賴包安裝:
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

十3、Django項目部署

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
相關文章
相關標籤/搜索