阿里云centos部署Django+nginx+uwsgi服务,安装mezzanine为例

  1. 云栖社区>
  2. 博客>
  3. 正文

阿里云centos部署Django+nginx+uwsgi服务,安装mezzanine为例

dxzou 2018-05-08 12:39:02 浏览2836
展开阅读全文
阿里云新购机器必须将实例加入安全组,否则外网是不能访问实例的。创建安全组后需要进行入网规则设置,也就是通过80端口,443端口等访问内网。

部署Django+Nginx+uwsgi

ssh登录远程服务器,如果觉得实例名太长了可以改hostname。hostname yourname 然后su

1、yum update 更新yum

这是可选项。


2、 yum install nginx

安装nginx前,安装gcc-c++,openssl,*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进行启动和关闭。

3、安装python

安装python之前先把数据库sqlite安装好,否则在安装mezzanine的时候数据库创建不了。

安装数据库,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会安装pip的最新版本,ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

注意:如果升级了python3,yum会出问题,因为yum是使用python做解析器的

vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2"即可

真实环境中安装uwsgi
pip install uwsgi

4、安装虚拟环境

(1)pip install virtualenv

(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


5、在虚拟环境下安装Django和mezzanine

(1)pip install mezzanine(mezzanine需要Django,所以直接安装mezzanine即可,Django会被自动安装上。)

(2)创建mezzanine项目:mezzanine-project libpath

(3)创建数据库 , python manage.py createdb,设置密码:xxxx

(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端口被外网访问)

如果能出现下面的画面则安装成功。


6、安装协议模块

(1)虚拟环境中安装uwsgi, pip install uwsgi

安装后进行测试uwsgi --http :8000 --module libpath.wsgi


7、配置文件

最主要的三个文件:

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




网友评论

登录后评论
0/500
评论
dxzou
+ 关注