首先說了遇到的坑 , 版本的大問題,!!! 這個很重要,我用的是 虛擬機的安裝的是 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 項目,歡迎大佬指正