惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
博客园 - 聂微东
N
Netflix TechBlog - Medium
B
Blog RSS Feed
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
C
CXSECURITY Database RSS Feed - CXSecurity.com
AWS News Blog
AWS News Blog
The Hacker News
The Hacker News
Scott Helme
Scott Helme
MongoDB | Blog
MongoDB | Blog
C
CERT Recently Published Vulnerability Notes
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
S
Securelist
MyScale Blog
MyScale Blog
A
Arctic Wolf
V2EX - 技术
V2EX - 技术
The GitHub Blog
The GitHub Blog
Simon Willison's Weblog
Simon Willison's Weblog
H
Hacker News: Front Page
D
DataBreaches.Net
S
Secure Thoughts
腾讯CDC
TaoSecurity Blog
TaoSecurity Blog
Project Zero
Project Zero
H
Help Net Security
P
Privacy International News Feed
Cloudbric
Cloudbric
博客园_首页
Latest news
Latest news
小众软件
小众软件

isaced

使用 TypeScript 构建的 appstore-connect-sdk 归档 我用 SwiftUI 写了一个 V2ex 客户端 Docker 容器化多应用部署 Swift Server-side SDWebImage 为什么无法读取 webpmux 生成的 WebP 动图? [译] 探索 Swift 4 中新的 String API 对一个 Django 站点做 ab 压力测试 fir-mac 开发笔记 iOS10 Safari 引导用户信任企业签名 Swift Web 开发之 Vapor - 模版 Leaf(三) Swift Web 开发之 Vapor - 路由(二) HoloLens 初体验 Swift Web 开发之 Vapor - 入门(一) Jenkins for iOS 搭建日记 iOS HOOK 注入与重签名 Xcode 使用 Configuration 来配置不同的项目环境 图床从SAE迁移到七牛 给 UIProgressView 脱掉那层微弱的渐变 初用 CocoaAsyncSocket 记一次 SQLite 性能优化 有多色 - 开发小记 海岛风情 - 泰国普吉岛六日游 EGOCache 源码解析 日语五十音假名临摹校验算法 [iOS] UITextView 追加文字自动跳到顶部解决方法 Cocoa 新的依赖管理工具:Carthage 新年快乐! 博客主机换到搬瓦工 写了个iOS小游戏:有多色 iOS 后台任务之 Long-running background task 悄悄的就必须用 XCode 5.1.1 上传了! HTTP Content-type 与 AFNetworking Objective-Cloud 初体验(1) 掌中站上架小记 NSLoger 上线了 Python Markdown 做语法限制 用Shell脚本批量裁剪App Icon各个尺寸 LaunchRocket使用小记 用宏提速NSCoding 2014新年伊始:近期读过的好文推荐 [iOS] stringWithFormat 和 initWithFormat 有何不同? Apache + Flask + mod_wsgi + Koding 部署小记 收集几个Objective-C的HTML解析库 NSMapTable: 不只是一个能放weak指针的 NSDictionary 2013,再见! Emlog到Typecho的迁移工具:emlog2typecho [iOS]给上拉下拉刷新PullToRefresh做本地化 [iOS]代码推荐:大图缩放视图 - Vertigo iOS:hidesBottomBarWhenPushed的正确用法 Xcode 5新的Interface Builder,你准备好了吗? [翻译]如何使用Django创建简单的博客 我的Mac音乐播放器 初识 NSDataDetector Objective-C 计算代码运行时间 WordPress上传文件自动重命名 iOS:仿jing.fm的音乐播放视图 我的啃黑苹果之路 关于 搜索 项目
Nginx + Gunicorn + Django 部署小记
2014-03-10 · via isaced

这段时间在用 Django 开发一个论坛,打算做一个 Cocoa 开发者社区。这几天在学习如何部署,正好前段时间 UCloud 送了三个月主机,可以拿来练练手。VPS 用的 64 位的 Ubuntu 12.04,折腾两天总算走通了,赶忙记录下来…

apt-get

服务器拿到手后第一件事就是更新 apt-get,要换源什么的自己搜一大堆。之前因为系统不小心选成了 Ubuntu 10.04 了,遇到一大堆问题,后来换到 12.04 一切顺利。

pip

pip 还是建议更换源,速度是飞一般的感觉。具体方法可以看看我之前介绍的那篇文章《Pythoner 的福利,豆瓣的 PyPI 源

sudo apt-get install python-pip

Django

Django 不用说肯定是用 pip 装,我一般是用的最新版,这样就可以了。

Nginx

首先给默认的 Nginx 配置备个份,这是好习惯。目录位于/etc/nginx/sites-available/default

cp /etc/nginx/sites-available/default default.bak

然后 Vim 编辑

vim /etc/nginx/sites-available/default
server {
        listen   80;

        server_name www.isaced.com;
        access_log  /var/log/nginx/isaced.log;

        location / {
                proxy_pass http://127.0.0.1:8000;
                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/ {
                root /data/isaced; #Django项目所在目录
        }

以上是最简单的 Nginx 配置,目的是为能跑起来就行,更多其他详细配置还请参照其他文章。

Gunicorn

Gunicorn是一个朋友(CloverStd)推荐的,一个开源 Python WSGI UNIX 的 HTTP 服务器,Github 仓库地址在这,传说速度快(配置快、运行快)、简单,默认是同步工作,支持 Gevent、Eventlet 异步,支持 Tornado,官方有很详细的文档可以参阅。

需要在你的 Django 项目的 settings.py 中的INSTALLED_APPS加入:gunicorn

gunicorn --worker-class=gevent isaced.wsgi:application
  • –worker-class 指定工作方式,这里我用的 gevent 如果提示You need gevent installed to use this worker则表示你还没有安装 gevent。
  • isaced.wsgi:application 这里是指你的项目名,在 Django 创建项目的时候会自动生成对应名字文件夹中的 wsgi.py,这里就是指的它。

nohup

nohup 是一个 Linux 命令,搭配 & 来不挂断地运行某条命令达到后台执行的效果,默认会在根目录生成一个 nohup.out 文件用来记录所有的 log 信息,也可以重定向到其他位置。这里我们用它来执行 gunicorn,来保持 gunicorn 进程不会被挂断。

nohup gunicorn --worker-class=gevent NSLoger.wsgi:application -b 127.0.0.1:8000&

–worker-class 来指定工作方式为 gevent,-b 指定地址和端口号。

注意:在尾部加上&(and)字符表示后台运行

执行这条命令后可以用 ps 命令查看进程,就能看到 gunicorn 了~

Start

好了,以上就是整个服务器的配置了。然后我们重启下 Nginx,刷新页面就能看到你的 Django App 了。

sudo service nginx restart

一篇小白的部署日记就到这里了,如有什么错误的地方还请各位大大指正!


另外再推荐一篇文章: