Ubuntu18-的Nginx+uwsgi+django 的部署

首先說了遇到的坑 , 版本的大問題,!!! 這個很重要,我用的是 虛擬機的安裝的是 UBuntu18LTS 

   系統  Ubuntu18 LTS

    python版本  py3.6.8

    mysql 8 下載的最新版

 1.   安裝 Python3 

         系統自帶的版本是python2,py2和py3的區別可以去了解下,個人建議最好用py3,如果有python3的話可以用管

# 請注意不要卸載系統預裝的Python,我安裝py3.6.8
# 從官網下載 ,看網速,可以在本機下載好後 傳到 ubuntu18 上面
sudo wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

# 解壓
sudo tar -xzvf Python-3.6.8.tgz

# 進入 文件夾 
cd Python-3.6.8

# 安裝到/usr/local/python 目錄(不用事先創建python目錄)
sudo ./configure --prefix=/usr/local/python --with-ssl --enable-optimizations

# 編譯
sudo make

# 安裝完成後刪除源碼壓縮包與文件夾 
# 創建python與pip軟連接
sudo ln -s /usr/local/python/bin/python3.6 /usr/bin/python
sudo ln -s /usr/local/python/bin/pip3.6 /usr/bin/pip

# 然後就可以 使用 python3 ,和 pip3 
# 如何 提示沒有 pip3 ,apt-get 安裝 pip3
# sudo apt-get install python3-pip 

       

2.   安裝 Python3 的虛擬環境

       安裝完py3後,一般運行項目都會在python的虛擬環境運行 項目,此時安裝python虛擬環境

1. 安裝虛擬環境
sudo pip3 install virtualenv   

2. 安裝虛擬環境擴展包
sudo pip3 install virtualenvwrapper

3. 編輯家目錄下的.bashrc文件,在最後面 添加下面兩行代碼
# [如果沒顯示.bashec這個文件  ctrl + h 可以顯示]
# 使用vim編輯.bashrc文件
vim  ~/.bashrc

    export WORKON_HOME= $HOME/.virtualenvs  # 虛擬環境的安裝目錄 
    export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3.6'  # 安裝python的版本 
    source /usr/local/bin/virtualenvwrapper.sh  #虛擬環境的管理,virtualenvwrapper.sh 的路徑

4. 以上是虛擬環境文件安裝步驟,,,,,,,,接下來是創建虛擬環境和虛擬環境的使用 
        
        4.1 創建虛擬環境命令(python2的虛擬環境)
            mkvirtualenv 虛擬環境名

        4.2 創建python3的虛擬環境
            mkvirtualenv -p python3 虛擬環境的名字

        4.3 進入虛擬環境
            workon 虛擬環境名

        4.4 退出虛擬環境
            deactivate
        
        4.5 查看機器上有多少虛擬環境
            workon 空格 + 兩個Tab鍵
        
        4.6 刪除虛擬環境
            rmvirtualenv 虛擬環境名稱
        	
        4.7 查看虛擬環境裝了那些包
            pip list 

5. 在虛擬環境安裝一些包,
	 pip install django # 默認最新版本Django
	 pip install django==2.1.0 # 指定版本安裝

6. 從虛擬環境導出版本和指定版本號,並在新環境安裝相同版本
	 pip freeze > requirements.txt    // 當前目錄下的requirements.txt文件

	 # 創建新環境之後
	 pip install -r requirements.txt

3.  安裝 Mysql 

        ubuntu18 安裝軟件還是比較簡單,apt-get 就可以

1. 查看有沒有安裝MySQL
dpkg -l | grep mysql


2. 安裝MySQL:
apt install mysql-server


3. 登錄mysql和修改密碼 權限,遠程登錄
   
    3.1 登錄 mysql,第一次自己回車 
        mysql -u root -p 

    3.2 設置自己登錄密碼
        use mysql;                    
 
        #複製的時候不要複製到分號,修改密碼123456爲你自己的密碼。最後再添加分號,語句執行
        update mysql.user set authentication_string=password('123456(你的密碼)') where user='root(你的用戶名)' and Host ='localhost(你的主機地址)';    
           
        # 這個 很重要!!!,很重要!!!,很重要!!! 不更新的話 更新後登錄不了,會提示錯誤
        update user set  plugin="mysql_native_password";     
           
        # 刷新 
        flush privileges;
         
        quit 

    3.3 重新登錄 mysql

        # 重啓mysql
        sudo service mysql restart   

        # 接下來可以輸入密碼登錄,密碼可以寫在-p後,但是不推薦。
        mysql -uroot -p 

    3.4 設置允許遠程訪問

        #退出數據庫,在本地打開MySQL的配置文件
        sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf     
        
        註釋掉 bind-addr =127.0.0.1
        
        # 進入 數據庫 以root權限進入MySQL命令行,
        # 執行開啓權限命令,本示例中MySQL中用戶root與密碼123456
        grant all on *.* to root@'%' identified by '123456' with grant option;
        
        # 刷新 
        flush privileges;
        
        # 退出數據庫,並重啓一下數據庫
        sudo /etc/init.d/mysql restart

              

3.  安裝 Nginx 和 uwsgi

1 .  安裝 Nginx

    sudo apt-get install nginx

    1.1  啓動服務

            sudo service nginx start

            sudo service nginx stop

            sudo service nginx restart

     1.3   增加服務器配置
            
           1. /etc/nginx/uwsgi_params 

           2. 在項目目錄下創建配置文件mysite_nginx.conf,並寫入以下內容:
                server {
	                    listen 80 default_server;
	                    listen [::]:80 default_server;
	
	                    #server_name    127.0.0.1 192.168.247.129; #綁定域名
    	                #charset UTF-8;
    	                #access_log      /var/log/nginx/Django_Demo_access.log;
    	                #error_log       /var/log/nginx/Django_Demo_error.log;

    	                #client_max_body_size 75M;

    	                location / { 
        	                include uwsgi_params;
        	                uwsgi_pass 127.0.0.1:8000; # django運行端口
        	                uwsgi_read_timeout 2;
    	                }   

    	                location /static {
		                    #靜態文件配置
        	                alias /home/zxx/PyDjango/django_Demo/static;
     	                }

    	                location /media {
        	                # 靜態文件配置
        	                alias /home/zxx/PyDjango/django_Demo/static;
 	                    }

                   }
                    # 這裏 會一些不一樣,我的系統在 sites-enabled 文件夾下一個 默認的deault 文件,我在這裏面修改 添加的 server 設置的,這裏我看到一些版本不一樣,
                    #不過發現設置的時候 只要找到的默認的 listen 80 端口的文件,在這個文件裏面修改 添加server 就可以        



2.  安裝 uwsgi 
     2.1   python環境內安裝 uwsgi

           pip install uwsgi  # 一般是進入 虛擬環境配置

     2.2   測試 

           進入 django 項目目錄,運行 uwsgi.py 文件(先測試 成功!用runserver 運行成功後 在進行uwsgi)

           uwsgi --http :8080 --module django_Demo.uwsg

     2.3   配置uwsgi 啓動 django 項目
           在manage.py 的同級目錄,新建一個 uwsgi.ini文件 ,文件裏面 配置以下這些內容(根據自己情況修改)
           用 uwsgi --ini uwsgi.ini ((你自己新建的名字) 啓動django項目 
            
            [uwsgi]  #這個 一定要有,一定一定一定!!! [uwsgi]
            #監聽的端口
            #socket是用nginx來測試時用的
            socket = 127.0.0.1:8000
            #http-socket = :8000

            #用uwsgi單獨測試時用
            #http = :8000

            # (這個可以根據自己的項目需求進行設定)
            buffer-size  = 65536

            #指定和nginx進行套接字通信的方式:端口或文件
            #socket = 127.0.0.1:8000
            #socket = /home/kzzf/project/OfferHelp/OfferHelp.sock

            #項目所在目錄,和manage.py同級
            chdir = /home/zxx/PyDjango/django_Demo

            #虛擬環境所在目錄
            home=/home/zxx/PyVirtualenv/Test
            PYTHONHOME = /home/zxx/PyVirtualenv/Test/bin

            #主應用中的wsgi文件
            module = django_Demo.wsgi

            #使用路由代理靜態資源,但失敗了
            #static-safe=/home/kzzf/project/OfferHelp/static/
            #route = /static/(.*) static:/home/kzzf/project/OfferHelp/static/$1

            #代理靜態資源:路徑映射
            #static-map = /static=/home/zxx/PyDjango/django_Demo/collet_static

            #啓動一個master進程,來管理其餘的子進程
            master=true
            processes = 4
            threads = 2

            #保存主進程的pid,用來控制uwsgi服務
            pidfile=/home/zxx/PyDjango/django_Demo/uwsgi.pid

            #啓動項目  uwsgi uwsgi.ini
            #uwsgi --stop/reload xxx.pid  停止/重啓uwsgi

            #設置後臺運行,保存日誌
            #daemonize=/home/zxx/PyDjango/django_Demo/log/uwsgi.log
            #deamonize=1  ; 用來配置background運行

            #設置每個工作進程處理請求的上限,達到上限時,將回收(重啓)該進程。可以預防內存泄漏
            max-requests=5000

            # 服務停止時自動移除unix Socket和pid文件
            vacuum=true

          

 

4.  外部訪問

     使用 ip a 查看 虛擬機的靜態 ip 地址 , 

     進入虛擬環境的 django項目路徑  執行 uwsgi --ini uwsgi.ini

     然後 外部就可以 通過 ip 訪問了,!!! 

                                                

  

小白使用 虛擬機 UBuntu18 LTS 部署 django 項目,歡迎大佬指正

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章