部署Django+Nginx+uwsgi
ssh登录远程服务器,如果觉得实例名太长了可以改hostname。hostname yourname 然后su
这是可选项。
*prce*, zlib*
安装完之后whereis nginx查看一下安装位置。默认安装在/etc/nginx下
nginx默认监听80端口,访问服务器外网ip如果能出现如下界面说明安装并启动成功。
如果不能,则需要进行下面操作:
/usr/sbin/nginx -c /etc/nginx/nginx.conf #指定nginx配置文件,如果不指定,会启动失败
/usr/sbin/nginx -s reload #这条命令不管nginx之前是否启动成功都将重启
再打开看应该就会出现上面的画面了。
设置开机自动启动:vi /etc/init.d/nginx 内容是:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/
然后进行权限修改:chmod a+x /etc/init.d/nginx,
使用chkconfig进行管理:
chkconfig --add /etc/init.d/nginx
chkconfig nginx on
可使用service nginx start 和 service nginx stop进行启动和关闭。
安装数据库,yum install sqlite-devel (目前已经更新到sqlite3版本了)
安装完后使用sqlite3 --version查看版本号。
wget https://www.python.org/ftp/python/3.6.5/ python版本,我下的是Python-3.6.5.tgz
安装python3, 系统默认安装了python2.7。下载完成后进行一下操作
解压 tar -zxvf Python-3.6.5.tgz
配置环境 ./configure --prefix=/usr/local/python3
安装 make & make install
进行软链 ln -s /usr/local/python3/bin/python /usr/bin/python
注意:如果升级了python3,yum会出问题,因为yum是使用python做解析器的
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可
真实环境中安装uwsgi
pip install uwsgi
(2)安装完之后软链一下ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
然后执行virtualenv env35(虚拟环境名,自己随意取),软链的目的就是为了让virtualenv这个命令能简化执行,不软连的话可以执行/usr/local/python3/bin/virtualenv env35
(3)进入虚拟环境source env35/bin/activate
(4)退出虚拟环境deactivate
(2)创建mezzanine项目:mezzanine-project libpath
(4)收集静态文件,python manage.py collectstatic
(5)配置setting, vi libpath/settings.py,找到allow_host 添加外网ip
(6)测试是否安装成功,python manage.py runserver 0.0.0.0:8000(阿里服务器实例添加到安全组,并添加规则允许8000端口被外网访问)
如果能出现下面的画面则安装成功。
(1)虚拟环境中安装uwsgi, pip install uwsgi
安装后进行测试uwsgi --http :8000 --module libpath.wsgi
最主要的三个文件:
nginx.conf
error_log /etc/nginx/logs/error.log;
pid /etc/nginx/logs/nginx.pid;
events {
worker_connections 4096;
}
http{
# nginx需要连接的上游
upstream django {
#server unix:///path/to/your/mysite/mysite.sock; # 使用unix套接字
server 127.0.0.1:8001; # 使用TCP端口请注释上一行,并取消本行注释,这里的端口指的是跑uwsgi的端口
}
include /etc/nginx/mime.types;
# nginx服务器配置
server {
# 监听端口
listen 80;
# 域名
server_name .yoursite.com;
# 编码
charset utf-8;
# 最大上传大小
client_max_body_size 75M;
# Django 的media路径
location /media {
alias /app/librepath/media;
}
# 静态文件路径
location /static {
alias /app/librepath/static;
}
# 将动态请求转发到uwsgi跑的django程序
location / {
uwsgi_pass django;
include /app/uwsgi_params; # 从github上下载的uwsgi_params 文件路径
}
}
}
uwsgi_params (nginx安装目录下就有现成的):mv /etc/nginx/uwsgi_params /app/uwsgi_params
uwsgi.ini
创建webapp用户和组,如果不使用uid =webapp,默认使用root,会提示多行您使用root的警告。
groupadd webapp
useradd -g webapp webapp
[uwsgi]
uid =webapp
gid =webapp
chdir =/app/librepath
module =librepath.wsgi
home =/app/env35
master =true
processes =10
socket = :8001
chmod-socket = 666
vacuum =true
enable-threads =true
thunder-lock =true
文中使用的是socket端口通信,也可使用socket文件进行通信。
设置nginx自启或者 /usr/sbin/nginx -c /etc/nginx/nginx.conf,/usr/sbin/nginx -s reload
启动uwsgi /usr/local/python/bin/uwsgi --ini /app/uwsgi.ini