一、参考网址 :
https://www.cnblogs.com/logicalsky/p/5685603.html
http://www.chenxm.cc/post/275.html?zhihu
二、具体安装步骤说明
1.pyenv安装和使用
1)安装
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
git clone git://github.com/yyuu/pyenv.git ~/.pyenv
vim ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH = "$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
source ~/.bashrc
2)使用(本次在虚拟环境中使用:python 3.6.4)
pyenv install -v 2.7.1
# 创建新的环境,位于 ~/.pyenv/versions/
$ pyenv virtualenv 2.7.1 env271
# 切换到新的环境
$ pyenv activate env271
# 退回到系统环境
$ pyenv deactivate
# 删除新创建的环境
$ rm -rf ~/.pyenv/versions/env271/
2.安装uwsgi
1)在虚拟环境下安装uwsgi
# 启动环境
pyenv activate your_env_name
pip3 install uwsgi
2)测试uwsgi,创建test.py(在django服务器目录中创建)
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello uwsgi!"]
3)uwsgi运行该文件
uwsgi --http-socket :8088 --wsgi-file test.py
4)打开浏览器,访问http://127.0.0.1:8000/,阿里云ecs服务器中使用elinks进行访问(apt install elinks)
3.安装django并使用
1)在虚拟环境中安装Django,先启动虚拟环境
pyenv activate your_env_name
2)
在虚拟环境webenv中使用一下命令安装:
#使用pip安装
pip3 install django
#新建一个 django project
django-admin.py startproject project_name
#cd project_name 然后执行下面的命令
python manage.py startapp app_name
#服务器启动
ython manage.py runserver
3)创建一个hello django的网页
(1)新建项目project
在命令行运行"django-admin startproject website",会在当前目录下新建名为"website"的文件夹,website即为项目名,此时目录结构:
1 website
2 |-- manage.py #命令行管理接口
3 |--db.sqlite3
4 |-- mysite
5 ├── __init__.py #表示这是一个软件包
6 ├── settings.py #项目相关配置
7 ├── urls.py #全局url配置
8 └── wsgi.py
(2)新建app
命令行执行"python manage.py startapp blog",新建应用(网页),"website"下会新建一个名为"blog"的文件夹,"blog"的目录结构:
1 blog/
2 ├── __init__.py
3 ├── admin.py
4 ├── models.py
5 ├── tests.py
6 ├── views.py
7 ├── apps.py
8 └── migrations
(3)将blog加入website目录下的setting.py中的INSTALL_APPS,如下:
1 INSTALLED_APPS = (
2 'django.contrib.admin',
3 'django.contrib.auth',
4 'django.contrib.contenttypes',
5 'django.contrib.sessions',
6 'django.contrib.messages',
7 'django.contrib.staticfiles',
8 'blog',
9 )
新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件)
(4)编辑视图(views),编辑blog目录下的views.py如下:(编写网页内容)
1 #coding:utf8
2
3 from django.shortcuts import render
4 from django.http import HttpResponse #记得导入该模块
5
6 def index(request):
7 return HttpResponse("<h1>hello Django!</h1>") #网页输出"hello Django!"
(5)编辑urls.py,编辑website目录下的urls.py如下:(定义网页的连接)
1 #coding:utf8 2 3 from django.conf.urls import url 4 from django.contrib import admin 5 from blog import views as blog_views #记住!先导入app中的views后使用 6 7 urlpatterns = [ 8 url(r'^admin/', admin.site.urls), 9 url(r'^$',blog_views.index,name=’index'), 10 ]
可以看出, urls.py的链接是通过正则表达式匹配的。此处设置打开http://127.0.0.1:8000/会打开blog中的views的index设置的网页。
(6)切换至website目录下,开启Django自带的web服务器使用命令:python manage.py runserver , 默认使用8000端口,可在其后加端口号改变使用端口。用浏览器打开http://127.0.0.1:8000/,如图:
4.安装nginx
1) nginx不需要在虚拟环境下装,在终端直接用命令安装
apt-get install nginx
2) nginx启动与关闭命令
service nginx start #启动
service nginx stop #关闭
service nginx restart #重启
nginx -V #查看nginx版本
nginx -t # 检查配置文件是否有语法错误
5.部署django+uwsgi+nginx
1) 在你的django项目文件夹下建立 web_uwsgi.ini 文件,具体的参数配置如下: 最重要的是配置 pythonpath,它指定django所在的位置,当时没有配置准确这一点,一直报错no moudle django,花了很长时间也不知道为什么,后来查了很多资料后,才知道配置pythonpath。主要的参数有注释。
[uwsgi]
socket =127.0.0.1:8088 #ugsi ip and port
chmod-socket =664
chdir = /root/myjango
wsgi-file = /root/myjango/myjango/wsgi.py
module = myjango.wsgi:application
master=true
vhost = true
no-site = true
pythonpath = /root/.pyenv/versions/env364/lib/python3.6/site-packages
enable-threads=true
processes = 1
threads = 2
pidfile = /tmp/lin.pid
vacuum = true
py-autoreload = 1
max-requests = 1000
注意: 修改django项目中settings.py文件:
DEBUG = True
ALLOWED_HOSTS = ['127.0.0.1','公网ip地址','localhost']
2) 之前提到nginx.conf配置所包含的配置,那就可以在/etc/nginx/conf.d下建一个nginx.conf来关联uwsgi
vi /etc/nginx/conf.d/nginx.conf
server {
listen 80;
server_name 公网ip地址
charset UTF-8;
access_log /var/log/nginx/myweb_access.log;
error_log /var/log/nginx/myweb_error.log;
client_max_body_size 75M;
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass 127.0.0.1:8088;
uwsgi_read_timeout 2;
}
location /static {
expires 30d;
autoindex on;
add_header Cache-Control private;
alias /root/myjango/myfirst_web/static;
}
}
3)重启nginx服务 service nginx restart
4)# 激活虚拟环境
pyenv activate webenv
# 在.ini文件的父目录下运行命令
uwsgi --ini web_uwsgi.ini
5) 访问http://127.0.0.1:80, 便可以通过nginx访问到你的django项目的网站。
6) 在阿里云ECS服务器中,添加安全规则:入站和出站规则(添加(htpp(80))规则),之后在浏览器中访问:
http://公网ip/index