由 gunicorn 启动的 blogproject 应用服务器现在运行在本地端口8000. 我们想要让服务器能够被外部世界访问。
首先打开两个端口 80 和 443 用来处理应用程序的 Web 通讯。如果是阿里云服务器需要在控制台上配置安全组。
我们直接使用 https, 配置端口80将所有流量转发到将要加密的端口443.
首先创建一个 SSL 证书, 这个证书只能用来测试,当用户访问的时候, Web 浏览器会警告用户证书不是由可信证书颁发机构颁发的。
mkdir certs
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
-keyout certs/key.pem -out certs/cert.pem
生成的时候填写的信息,将包含在 SSL 证书中, 用户在浏览器访问的时候可以查看。
命令的结果将生成名为key.pem和cert.pem的两个文件。
为了使用 nginx, 为我们就要编写一个配置文件,这个文件位于 /etc/nginx/sites-enabled
中,
通常刚安装完 Ngnix,在这个位置有一个默认的测试站点, 我们将其删除:
$ sudo rm /etc/nginx/sites-enabled/default
然后创建 blogproject 配置文件:
/etc/nginx/sites-enabled/blogproject:Nginx配置。
server {
listen 80;
server_name _;
location / {
return 301 https://$host$request_uri;
server {
listen 443 ssl;
server_name _;
ssl_certificate /home/xxm/sites/www.xxmblog.com/blog-django/certs/cert.pem;
ssl_certificate_key /home/xxm/sites/www.xxmblog.com/blog-django/certs/key.pem;
access_log /var/log/microblog_access.log;
error_log /var/log/microblog_error.log;
location / {
proxy_pass http://localhost:8000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /static {
alias /home/xxm/sites/www.xxmblog.com/blog-django/blogproject/static;
expires 30d;
添加此文件后,你需要告诉nginx重新加载配置以激活它:
$ sudo service nginx reload
浏览器输入域名或者服务器的IP地址,应该可以看到访问成功了。
当应用更新的时候,往往需要重复下列的过程:
- 从 github 中拉取应用
git pull
- 可能需要修改
.env
文件, 增加环境变量 - 进入虚拟环境, 安装额外的依赖
pip install -r requirements.txt
- 收集静态文件
python manage.py collectstatic
- 数据库迁移
python manage.py makemigrations
python manage.py migrate
sudo supervisorctl restart blogproject
- 重启nginx
sudo service nginx reload
文章目录前言1. 在云服务器上安装mysql数据库2. 准备云上的flask环境3. 将项目部署到 gunicorn 上4. 部署到Nginx参考资料
本文是一篇flask项目部署的入门教程,记录了在阿里云上从数据库的安装到最终项目的部署的全过程以及过程中遇到的一些问题。参考的资料在本文的最下面,在过程中有使用到也会把链接附在旁边。内容相对独立可以跳看需要的部分。
1. 在云服务器上安装mysql数据库
在云服务器上mysql的使用和本地的区别只在于要提供外部访问的账号和接口
安装的方法一般有两种一种
(小编的环境为python3.6,django==2.1.2)
Gunicorn是一个unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server(即一种服务器)。和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。
Nginx是一个高性能的静态服务器,支持负载均衡,多进程,多线程,数据压缩,日志监控,限流等多种功能。是目前比较主流的服务器
Nginx是一个http服务器,可以做请求转发,负载均衡 (处理静态资源,并将动态请求转发给Gunicorn)
Gunicorn是一个实现了wsgi的一个处理python代码的服务器 (处理动态请求)
分析图如下:
文章目录第一步建立虚拟环境:使用 manage.py runserver ip:port运行使用gunicorn运行supervisor运行gunicorn.指定路径生成supervisor配置文件:修改supervisor配置文件使用指定路径的supervisor配置文件运行起来后nginx查找一下nginx的路径配置nginx配置文件重启nginx服务配置nginx遇到的bug./nginx ...
django,nginx,supervisor,gunicorn,gevent这几个都是在本领域大名鼎鼎的软件,下面的部署都是在ubuntu12.04里面验证成功的!
首先是安装这些软件在ubuntu下面都比较简单,nginx和supservisor的安装如下
apt-get install nginx,supervisor在ubuntu下使用python,强烈建议安装python-dev