django + uwsgi + nginx 网站发布
1 django setting 配置
- 网站正式发布需要将setting中的开发模式关掉
DEBUG = False - 需要增加ALLOWED_HOSTS配置
ALLOWED_HOSTS = ["*"] * 代表所有ip
2 uwsgi 配置
命令行启动(记录一下):
uwsgi --http :8000 --file app/wsgi.py --static-map=/static=static
- 下载uwsgi
pip install uwsgi - 运行uwsgi --http “IP地址”:“端口号” --file “项目路径”/wsgi.py --static-map=/static=static
通过浏览器访问网站,如果能够访问则说明uwsgi 安装成功(只是测试) - 接下来使用uwsgi的配置文件来启动uwsgi
在项目的同级目录下建立一个新文件夹script(ps:可以是任何路径,在同级目录结构比较规整, 文件夹的名字任意,我取的是script)
然后在新文件夹下新建一个文件 vim uwsgi.ini 文件内容如下:
# uwsig使用配置文件启动
[uwsgi]
# 项目目录
chdir=/opt/proj/teacher/
# 指定项目的application
module=teacher.wsgi:application
# 指定sock,nginx所必须的
socket=127.0.0.1:8080
# 进程个数
workers=5
pidfile=/opt/proj/script/uwsgi.pid
# 指定静态文件
static-map=/static=/opt/proj/teacher/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/opt/proj/script/uwsgi.log
- 使用uwsgi --ini uwsgi.ini命令即可启动uwsgi服务器,此时uwsgi服务器配置完成
3 nginx的配置
官网下载nginx 安装包,并解压,依次运行./configure、 make、 make install 完成ngin的安装
默认nginx将会安装到/usr/local/nginx 目录下
切换到 /usr/local/nginx/sbin 目录下,运行nginx ,此时nginx 服务器成功启动,访问192.168.1.102(你的IP地址) 如果出现一下界面说明nginx 安装成功:
* 配置django + uwsgi + nginx
切换到 /usr/local/ngnix/conf 目录中, 编辑nginx.conf 文件并添加代码:
server {
listen 8081; # nginx运行端口
server_name 192.168.1.102; # 运行的主机名或者域名
charset UTF-8; # 编码集
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
include uwsgi_params; # 使用uwsgi 服务器
uwsgi_pass 127.0.0.1:9090; # uwsgi 服务器的运行端口(这里需为127.0.0.1或localhost,不能为IP地址(不知为什么)
uwsgi_read_timeout 600;
uwsgi_connect_timeout 600;
uwsgi_send_timeout 600;
}
此时nginx 服务器配置完成
切换到/usr/local/nginx/sbin 目录 运行 nginx 命令即可
此时所有配置均已完成。。。。。
你以为这就完了??????
不报错那是不可能的,开玩笑。
问题:
- 连接被拒绝了(connect refused)
这个问题是在nginx 配置中的socket 使用了IP地址的缘故,最后通过改为127.0.0.1解决 - 静态文件加载不出来(js,css) (Permission denied)
这个问题困扰了好久好久。。。。。
最后在配置文件中最上方 将user: nobody 取消注释并改为 user: root 解决 - 停止nginx服务
ps -ef | grep nginx 找到nginx 的运行id
使用kill 命令杀死
停止uwsgi 服务使用同样的方法
或者使用名 pkill nginx 命令