2019-05-11
nginx使用验证,分别在windows,ubuntu下运行
1、windows中安装虚拟环境,建立虚拟环境,确保各模块相互兼容
会让使用虚拟环境更加方便
pip install virtualenv
pip install virtualenvwrapper # 这是对virtualenv的封装版本,一定要在virtualenv后安装
sudo pip3 install virtualenvwrapper
sudo pip2 install virtualenvwrapper
如果国外的源太慢了,可以换成国内的镜像,只需要加上地址就行
sudo pip2 install -i https://pypi.douban.com/simple virtualenvwrapper
mkvirtualenv -p python2 py2
rmvirtualenv py2#删除虚拟环境
activate # 启动虚拟环境
deactivate # 退出虚拟环境
然后在虚拟环境中安装django
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
直接把django版本降一下pip3 install Django==1.11.4
windows下载nginx (http://nginx.org/en/download.html) (https://blog.csdn.net/kingscoming/article/details/79042874)
解压后保存在D:\nginx-1.14.2
步骤如下https://blog.csdn.net/kingscoming/article/details/79042874
1.下载Nginx文件包解压免安装
(在ubuntu中直接使用sudo apt-get install nginx)
2.Nginx配置
找到 conf 目录里的 nginx.conf 文件,配置Nginx
2.1.基本配置如下:
我在原来配置文件中增加了如下
upstream djangos {
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}
2.2.server配置
然后在server增加
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_set_header myhead 'myhead';
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://djangos;
}
3.启动Nginx
注意不要直接双击nginx.exe,这样会导致修改配置后重启、停止nginx无效,需要手动关闭任务管理器内的所有nginx进程
cmd 进入Nginx解压目录 执行以下命令
start nginx : 启动nginx服务
nginx -s reload :修改配置后重新加载生效
nginx -s reopen :重新打开日志文件
nginx -t -c /path/to/nginx.conf 测试nginx配置文件是否正确
启动后如何检查是否启动成功呢? 输入命令 tasklist /fi "imagename eq nginx.exe" 看到以下信息说明启动成功了
一切就绪,访问一下server 里配置的 server_name 是不是被重定向到 upstream配置的服务器上了,是不是很简单!
4.nginx常用命令:
验证配置是否正确: nginx -t
查看Nginx的版本号:nginx -V
启动Nginx:start nginx
快速停止或关闭Nginx:nginx -s stop
正常停止或关闭Nginx:nginx -s quit
配置文件修改重装载命令:nginx -s reload
开启nginx后,然后在开jdango:python manage.py runserver 0.0.0.0:8001 python manage.py runserver 0.0.0.0:8002
然后在网页中http://192.168.56.1/books/show/ 直接访问成功,而且不需要带地址,因为它会自动由nginx转到8001与8002中,到此成功
5.常见错误
如果启动失败 可以看下logs目录下 error.log 文件里的错误信息。
我在第一次安装的时遇到两个错误,也是最容易碰到的问题,在这里列出来方便大家碰到相同的问题时快速解决。
1.端口占用问题
我的配置文件里服务侦听的是 80 端口,由于机器上部署了IIS,80端口被默认站点占用,把站点关闭就可以了,这个问题在错误日志里记录是这样的。
2015/01/15 10:44:12 [emerg] 8800#5988: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)我解决方法,把IIS信息服务关闭,然后重启即可
碰到类似的错误,请确认端口是否被占用或被防火墙屏蔽
2019-05-12按照如上方法对django_test01在python3环境下运行成功
遇到nginx每次启动出现错误,需要将nginx重装:
2019-05-12删除nginx(ubuntu) https://chubuntu.com/questions/51656/nginx-cant-purge-on-ubuntu-16-04.html
编辑:
由于问题无法以这种方式解决且问题是由 nginx-core 引起的,您可以尝试通过执行以下操作手动修复问题:
sudo apt -f remove nginx-core
为此: sudo apt -f remove nginx-full
然后从 sudo apt autoremove --purge 。
开始,完成上述步骤
然后重新安装nginx
sudo apt-get install nginx
sudo service nginx start
service nginx status
在windows中cmd把文件上传到ubuntu中
D:>pscp -P 22 D:\tangpython\webapp.py ubuntu@139.199.66.32:/home/ubuntu
D:>pscp -P 22 D:\tangpython\wsgi_server.py ubuntu@139.199.66.32:/home/ubuntu
然后在ubuntu中使用python wsgi_server.py,然后浏览器中139.199.66.32:8080即可访问成功,返回hello world(完全与windows一致)