前面我們已經(jīng)做好了所有的準(zhǔn)備工作观蜗,接下來就是將本地項(xiàng)目上傳到服務(wù)器,部署配置上線了。
1使用FileZilla和服務(wù)器建立通信
FileZilla這個(gè)軟件用來建立和服務(wù)器的連接居凶,上傳本地項(xiàng)目到服務(wù)器或者從服務(wù)器下載都很方便,界面如下:
首先查看linux虛擬機(jī)的ip地址藤抡,終端輸入
ifconfig
上面的172.18.1.4就是虛擬機(jī)的ip地址排监,接著點(diǎn)擊FileZilla的文件菜單——選擇站點(diǎn)管理器,輸入以下內(nèi)容:
用戶和密碼是linux虛擬機(jī)的用戶賬號和密碼杰捂,點(diǎn)擊“連接”即可和服務(wù)器建立通信舆床。
2 創(chuàng)建數(shù)據(jù)庫,導(dǎo)入數(shù)據(jù)
接下來嫁佳,將本地的數(shù)據(jù)庫打包上傳到服務(wù)器上挨队。
先通過create database 數(shù)據(jù)庫名
創(chuàng)建一個(gè)數(shù)據(jù)庫,然后通過source /路徑/mysql數(shù)據(jù)文件名.sql
將數(shù)據(jù)導(dǎo)入蒿往。
use 數(shù)據(jù)庫名
切到數(shù)據(jù)庫中盛垦,show tables;
查看數(shù)據(jù)表可以看到導(dǎo)入成功。3 上傳部署django項(xiàng)目
上傳django項(xiàng)目之前瓤漏,現(xiàn)在本地用runserver運(yùn)行一下腾夯,確定沒有問題再上傳到服務(wù)器。上傳到服務(wù)器以后蔬充,首先更改項(xiàng)目settings.py中數(shù)據(jù)庫用戶和密碼為服務(wù)器上操作mysql的用戶蝶俱,然后在服務(wù)器上運(yùn)行runserver 跑一下。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'jiangxionggo_db',
'USER':'mysqladmin',#修改為服務(wù)器上操作mysql的賬戶和密碼
'PASSWORD':'*****',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
沒有問題以后再執(zhí)行以下操作:
修改settings.py的debug為False
debug = False
終端下執(zhí)行命令python3 manage.py collectstatic
收集靜態(tài)文件饥漫。
4 配置uwsgi
在項(xiàng)目根目錄下(任意其他目錄均可)使用命令vim uwsgi.ini
新建uwsgi.ini配置文件榨呆,文件名稱也可任意命名,輸入以下內(nèi)容:
[uwsgi]
socket = :8080#監(jiān)聽端口庸队,也可以127.0.0.1:8080表示項(xiàng)目在本機(jī)
chdir=/usr/local/JiangXiongGo#我的項(xiàng)目所在根目錄
module=JiangXiongGo.wsgi#項(xiàng)目下的wsgi文件
master=True#啟動主進(jìn)程
processes=4#啟動4個(gè)進(jìn)程
threads=2#啟動2個(gè)線程
vacuum=True
5配置Nginx
找到nginx的默認(rèn)配置文件nginx.conf积蜻,我的在/usr/local/nginx/conf下,編輯配置文件彻消,內(nèi)容如下:
worker_processes 1;#默認(rèn)工作進(jìn)程 1
error_log /usr/local/nginx/logs/error.log warn; #定義錯(cuò)誤日志保存位置 warn代表錯(cuò)誤級別
pid /usr/local/nginx/logs/nginx.pid; #pid保存位置
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#日志格式化
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#訪問日志
access_log /usr/local/nginx/logs/access.log main;
sendfile on;
keepalive_timeout 65;
##以下內(nèi)容最重要竿拆!##
server {
listen 9090;#nginx監(jiān)聽的端口,這里監(jiān)聽的是用戶在客戶端瀏覽器輸入網(wǎng)址時(shí)的端口宾尚。如192.168.0.18:9090就代表你項(xiàng)目的域名
server_name 172.18.1.4;#服務(wù)器的ip地址丙笋,外面訪問項(xiàng)目就是通過172.18.1.4:9090來訪問的
charset utf-8;
access_log /usr/local/nginx/logs/jxg.access.log;#保存項(xiàng)目的訪問日志路徑
error_log /usr/local/nginx/logs/jxg.error.log;#保存項(xiàng)目的錯(cuò)誤日志路徑
client_max_body_size 75M;
location /static/ {
root /usr/local/JiangXiongGo;#靜態(tài)文件路徑,如客戶端請求的是域名:端口/static/my.css,那么nginx就會去/usr/local/JiangXiongGo/static/路徑下尋找my.css不见。
#root是根目錄澳化,訪問時(shí)會把匹配到的文件相對路徑追加到根目錄后面崔步,形成一個(gè)完整的路徑稳吮。
}
location /media/ {
root /usr/local/JiangXiongGo;#用戶上傳的文件訪問路徑,如客戶端請求的是域名:端口/media/my.jpg井濒,那么nginx就會去/usr/local/JiangXiongGo/media/路徑下尋找my.jpg灶似。
}
location /book/media/avatar/ {
alias /usr/local/JiangXiongGo/media/avatar/;#同上。
#alias代表別名瑞你,alias后面就是完整路徑酪惭,如客戶端url請求/book/media/avatar/test.jpg,那么nginx會到/usr/local/JiangXiongGo/media/avatar/下尋找test.jpg者甲,而不是像root那樣將相對路徑追加到后面春感,變成/usr/local/JiangXiongGo/media/avatar/book/media/avatar/,此處一定要注意區(qū)別虏缸。
}
location /user/media/ {
alias /usr/local/JiangXiongGo/media/;#同上鲫懒。
}
location / { #所有其他url都匹配到項(xiàng)目根路徑
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;#這里對應(yīng)的uwsgi.ini配置文件里的端口,不要和上面的搞混淆刽辙。
uwsgi_read_timeout 2;
}
}
6 啟動配置窥岩,運(yùn)行項(xiàng)目
完成以上配置以后,就可以啟動配置宰缤,運(yùn)行項(xiàng)目了颂翼。終端下輸入命令分別啟動nginx和uwsgi服務(wù)。
/usr/local/nginx/sbin/nginx
uwsgi uwsgi.ini
看到以上內(nèi)容就說明nginx和uwsgi啟動完成慨灭,瀏覽器輸入本機(jī)ip地址:端口即可打開網(wǎng)站
最后送幾條常用關(guān)于nginx操作命令
命令 | 說明 |
---|---|
nginx -s stop | 快速關(guān)閉nginx進(jìn)程 |
nginx -s quit | 優(yōu)雅關(guān)閉nginx進(jìn)程 |
nginx -s reload | 重載nginx配置文件 |
nginx -s reopen | 重新打開日志文件 |
ps -ax | grep nginx | 查看nginx進(jìn)程 |