部署Flask + uWSGI + Nginx

作为一个选择综合症+洁癖患者,在部署 Flask app 的时候着实有点纠结。互联网上能找到的教程都不怎么靠谱,要么太老,要么太乱连话都说不通顺,更别提那些转了无数手的资料了。 uwsgi 的参数别名众多,各种旧版本的配置也不尽相同,让急着把自己的 Flask 站点搭建到正式服务器上的新手们无所适从。

我把自己的部署过程写出来,所有资源参考官方文档,我也尽量给出选择的原因。这教程适用于各个 linux 发行版。若有疑问,请留言。

继续阅读部署Flask + uWSGI + Nginx

pure-ftpd 530 Login authentication failed

在服务器上,我一直使用的是 vsftpd,但由于 vsftpd 不支持 MLSD ,我开始转向 pure-ftpd

简单配置完毕后,登录一直出现错误。

-> % ftp ssi@xxxx.xx
Connected to xxxx.xx.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 12:08. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
331 User ssi OK. Password required
Password:
530 Login authentication failed
ftp: Login failed

那么,下面是解决方案。 继续阅读pure-ftpd 530 Login authentication failed

从 Lighttpd 到 OpenResty

两年前,我写了 从Apache到Lighttpd。现在,是时候又发生改变了。

前段时间,我写了许多关于 OpenResty 的文章,并在公司内网服务器和自己的电脑上开始使用 OpenResty。

现在,我开始在外网部署 OpenResty。

编译和安装

OpenResty 的编译和安装就是老三套:

tar xzvf ngx_openresty-VERSION.tar.gz
cd ngx_openresty-VERSION/
./configure
make
make install

默认情况下,OpenResy 会安装到 /usr/local/openresty 中,编译时会默认使用 luajit。 继续阅读从 Lighttpd 到 OpenResty

基于 OpenResty 的服务器架构设计

这个服务器架构不一定能用上,记录在这里,算是一个小小的学习成果。

1. 技术选择

  • Cocos2d-x 3.x —— 客户端框架。
  • WebSockt —— 网络协议。
  • HTTP —— 网络协议。
  • OpenResty —— 基于 nginx+lua 实现 WebSocket 或 HTTP 服务器。
  • MySQL —— 数据库支持。
  • Redis —— NoSQL 支持。

继续阅读基于 OpenResty 的服务器架构设计

将 nginx 注册为系统服务

nginx 提供了 -s signal 命令行参数让我们对其进行操作。我们可以很方便地利用 -p prefix 参数指定启动路径来启动多个完全隔离的 master 进程;还可以使用 -c filename 显式指定不同的配置文件。

由于 prefix 的路径一般都比较长, reload 或者 reopen nginx master 进程就会比较不方便。此时可以采用我在 在 OS X 中使用 OpenResty – 3.快捷方式 中提到的自建快捷方式的形式来简化这些操作。

更一般的,在服务器上我们会采用操作系统提供的标准服务的方式来进行这些简化。当然,这种方法一般仅针对一个 nginx master 进程进行操作。

本文将介绍在多个操作系统上将 nginx 注册为服务的方式(其实,也没有那么多啦)。

1. Mac OS X

参照 在 OS X 中使用 OpenResty – 2. 配置 OpenResty 环境 进行配置即可。

2. CentOS

根据 CentOS Nginx的一个初始化脚本(用于启动、停止、查看状态) 一文提供的方法,我整理了代码到 gist 上,只需要将 nginxd 下载到 /etc/init.d 并执行 addnginxservice 脚本即可。

下面的代码自动帮你做了上面的事:

wget --no-check-certificate https://gist.githubusercontent.com/zrong/9c7dfce8f274ee451188/raw/77eada5f92dd5583838390f26cc9790b00e63137/nginxd
wget --no-check-certificate https://gist.githubusercontent.com/zrong/9c7dfce8f274ee451188/raw/a0084d1ae6d5175c913e4593c99d493487d14c75/addnginxservice && source addnginxservice

3. Ubuntu

已经都是 Ubuntu了,自然是直接 apt-get 啦。这个没什么好说的。

4. Windows

nginx 的 Windows 二进制包并没有提供注册成为服务的功能。官方提供的方法和 Linux 相同,都是使用命令行参数进行操作。例如下面的 来自官方wiki 的方法,进入 nginx 文件夹,启动nginx进程:

cd nginx/
start nginx.exe

使用下面的命令查看 nginx 进程是否正在运行:

tasklist /fi "imagename eq nginx.exe"

关闭 nginx 进程:

nginx.exe -s quit

nginx 并不是为 windows 开发的,windows 版本的作用是为了方便在 windows 上工作的程序员们使用 nginx 。因此,nginx 好像并没有什么需要成为一个服务的动力。尽管 Running as a service. 出现在了 Possible future enhancements 列表中。

如果一定要在 windows 下将其注册为服务的话,把 Nginx 创建为 Windows 的一个服务原文)一文提供了一种方式。这是一篇写于 2009 年的文章,我并没有在我的 Windows 8.1 上尝试,因为我直接使用 Vagrang 了。

(全文完)

在 OS X 中使用 OpenResty

我曾经写过 在 Mac OS X 上安装lighttpd ,从那时起,我的 Mac 上的 HTTP 服务器一直是 lighttpd。

现在,为了学习 OpenResty ,我将 lighttpd 进行了替换。下面记录这个过程。

1. 移除 lighttpd

在 Mac OS X 上安装lighttpd 的时候,我使用 launchctl 来实现 lighttpd 的自动启动。现在,只需要 unload 即可。

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.lighttpd.plist

这会立即停止 lighttpd 的运行。接下来,将 homebrew.mxcl.lighttpd.plist 从~/Library/LanuchAgents 目录中移除。否则下次启动系统的时候,lighttpd 又会启动。

继续阅读在 OS X 中使用 OpenResty

几个常用的WAMP套件

WAMP,就是:Windows、Apache、MySQL和PHP,用于快速在Windows系统上搭建PHP开发和运行平台。
当然,也有LAMP(Linux、Apache、MySQL和PHP)。

  • XAMPP推荐!
    有for Linux、Windows、Mac OS X、Solaris等操作系统版本,还有一个Lite版本
    最新版本1.5.2,包括Apache HTTPD 2.2.0, MySQL 5.0.20, PHP 5.1.2 + 4.4.2-pl1 + PEAR + Switch, MiniPerl 5.8.7, Openssl 0.9.8a, PHPMyAdmin 2.8.0.3, XAMPP Control Panel 2.2, eAccelerator 0.9.4-rc1, Webalizer 2.01-10, Mercury Mail Transport System for Win32 and NetWare Systems v4.01a, FileZilla FTP Server 0.9.14a, SQLite 2.8.15, ADODB 4.80, Zend Optimizer 3.0.0, XAMPP Security
    Lite版本包括Apache 2.2.0 + PHP 5.1.2 (without PEAR) + MySQL 5.0.20 + phpMyAdmin 2.8.0.3 + Openssl 0.9.8 + SQLite 2.8.15 + eAccelerator 0.9.4 rc1
  • PHPnow(国产!)推荐!
    Win32 下绿色免费的 Apache + PHP + MySQL 环境套件包。
    简易安装、快速搭建支持虚拟主机的 PHP 环境。附带 PnCp.cmd 控制面板,帮助你快速配置你的套件,使用非常方便。
    PHPnow 是绿色的,解压后执行 Setup.cmd 初始化,即可得到一个 PHP + MySQL 环境。
    然后就可以直接安装 Discuz!, PHPWind, DeDe, WordPress 等程序。
    * 支持虚拟主机:便捷的虚拟主机管理
    * 虚拟主机代理:可与 IIS 共存 (泛解析代理)
    * 插件支持:ASP | ASP.NET | JSP
    喜欢自己配置 PHP 环境?
    PHPnow 仅使用了 DOS 命令脚本 和 PHP 程序,完全可以自己修改,打造自己的套件!
    手动配置 PHP 还是有必要掌握的,PHPnow 只是为你减少重复的动作。
  • EasyPHP
    当前最新版本1.8,包含Apache1.33、PHP4.3.10、Mysql4.1.9和PHPmyAdmin2.6.1
  • Uniform Server(miniServer)
    最新版本3.3,包括Apache2, Perl5, PHP5, MySQL5,可以以插件方式支持PHP4
  • AppServ
    最新版本2.4.5,包括Apache 1.3.34、PHP 4.4.1、MySQL 5.0.16、phpMyAdmin-2.5.7-pl1

2009年3月3日11:23:48更新