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

简介: 阿里云centos部署Django+nginx+uwsgi服务,安装mezzanine。阿里云新机python web部署。
阿里云新购机器必须将实例加入安全组,否则外网是不能访问实例的。创建安全组后需要进行入网规则设置,也就是通过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




目录
相关文章
|
17天前
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
17天前
|
JavaScript 前端开发 应用服务中间件
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
24 0
|
5天前
|
存储 关系型数据库 Linux
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
CentOS如何使用Docker部署Plik服务并实现公网访问本地设备上传下载文件
27 4
|
5天前
|
应用服务中间件 nginx
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
8 0
|
5天前
|
存储 安全 网络协议
云服务器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南
云服务器 Centos7 部署 Elasticsearch 8.0 + Kibana 8.0 指南
15 0
|
14天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用之在阿里云Serverless中函数计算FC nginx 部署上去之后放置静态页面如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
219 0
|
19天前
|
Linux 数据库 开发者
Centos7安装docker并部署halo建站
Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到可移植的容器中,然后在任何支持 Docker 的平台上运行。Docker 的核心概念包括镜像(Image)、容器(Container)和仓库(Repository)。镜像是创建容器的基础,容器是镜像的运行实例,而仓库是存储和分发镜像的中心仓库。 Docker 的优势在于快速、一致地交付应用,实现响应式部署和扩展,以及更高效地利用硬件资源。它常用于简化配置、代码流水线管理、提
43 0
|
23天前
|
运维 安全 Linux
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问
如何在CentOS部署JumpServer堡垒机并实现无公网ip环境远程访问
|
2天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
14 0
|
11天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
118 6