第一次發知乎有什麼不對的請指出謝謝

環境: 1.阿里雲 ubuntu 64位 python3(我的是VENV)

2.已經可以運行的django項目

3.安裝nginx uwsgi 和虛擬環境VENV

目錄:我把我的django放到了/var/www/html/project

首先:搭建VENV 安裝框架

1.安裝virtualenv #pip3 install virtualenv

2.#cd /var/www/html/ 然後#virtualenv VENV

3.source VENV/bin/activate

4.安裝django,#pip install django

檢查能否運行django項目

cd /var/www/html/project

python manage.py 0.0.0.0:8080

注意:settings.py里的allow_host要[*]

第二:下載uwsgi

1.#apt-get install uwsgi

2.測試 client<=>uwsgi<=>django

3.uwsgi --http :8080 --chdir /var/www/html/project --wsgi project.wsgi

4.登陸8080埠的網站 看看能不能打開 只要能打開就行

第三:下載nginx

1.#apt-get install uwsgi

2.vi /etc/nginx/sites-enabled/default

我的是這樣的:

upstream django{

server 127.0.0.1:8080;

}

server{

listen 80;

charset utf-8;

client_max_body_size 75M;

server_name _; #有域名這裡填域名

location /static {

alias /var/www/staticfiles;#這是我的靜態文件 我在manage.py collect什麼之類的打包到一個地方

}

location / {

root /var/www/yuhuicompany; #項目名

uwsgi_pass 127.0.0.1:8080;

include /var/www/html/yuhuicompany/uwsgiparams;#自己創建uwsgi_params

}

}

保存:

創建uwsgi_params

裡面是這樣的:

-----------------------------------------------------------------------

uwsgi_param QUERY_STRING $query_string;

uwsgi_param REQUEST_METHOD $request_method;

uwsgi_param CONTENT_TYPE $content_type;

uwsgi_param CONTENT_LENGTH $content_length;

uwsgi_param REQUEST_URI $request_uri;

uwsgi_param PATH_INFO $document_uri;

uwsgi_param DOCUMENT_ROOT $document_root;

uwsgi_param SERVER_PROTOCOL $server_protocol;

uwsgi_param REQUEST_SCHEME $scheme;

uwsgi_param HTTPS $https if_not_empty;

uwsgi_param REMOTE_ADDR $remote_addr;

uwsgi_param REMOTE_PORT $remote_port;

uwsgi_param SERVER_PORT $server_port;

uwsgi_param SERVER_NAME $server_name;

-------------------------------------------------------------------

複製就行了

然後restart nginx /etc/init.d/nginx restart

打開你的網站 看到502就對了 因為你的uwsgi沒啟動

因為每次啟動uwsgi 都要一個串命令 所有放到文件中 放的地方你隨意 我放到/var/www/html/project

創建個project.ini


-------

[uwsgi]

socket = 127.0.0.1:8080

chdir = /var/www/html/project

module = project.wsgi

home = /var/www/VENV

master = true

processes = 1

threads = 2

max-requests = 6000

daemonize = /var/www/html/project/run.log


home是虛擬機的路徑

沒有的文件都自己創建 run.log的好處是你可以看有什麼錯誤然後去改

保存後就 uwsgi --init project.ini

然後他會後台自動啟動 最好看看埠號有沒有佔用 就就行了lsof -i:8080

然後就沒了。最後有很多人會提問debug變成false後static路徑怎麼搞啊 這個我也難了我4-5天 可能有些高手就會嘲笑我 哈哈 我就是比較菜 新手來的

我分享下我的經驗:

首先我們知道project裡面的settings.py除了自己STATICFILESDIRS 之外還會要創建多一個STATICFILES_ROOT =你自己通過manage.py collectstatic指定的靜態文件

然後你就要在nginx導入這些靜態文件 上面都有 這樣就可以解決靜態文件404的問題


推薦閱讀:
相关文章