腾讯云部署Flask应用WSGI + Nginx+MySql

 

由于新浪云现在不免费了。而且云豆也用完了。所以去腾讯云申请了个学生云主机,一元一个月。

不过部署开发环境还是有点麻烦的,搞了好几天,终于部署成功了!

下面说部署过程:

我云主机用的是 Ubuntu 14.04.1 LTS系统,带LNMP框架,Pyhon2.7(先是尝试用centose6.5,但是一直因为python版本不对和mysql-python安装失败的问题,搞了好久没有成功所以就换成Ubuntu了)

mysql,nginx,这些都是安装好了的。

1.默认安装好的mysql是没有密码的。所以先进安全模式把密码改了:

  1. # 启动安全模式
  2. /etc/init.d/mysql stop
  3. /usr/bin/mysqld_safe --skip-grant-tables >/dev/null 2>&1
  4. /usr/bin/mysql -u root mysql
  5. # 进入mysql
  6. mysql> update user set password = Password(\'xxx\') where User = \'root\';
  7. mysql> flush privileges;
  8. # 退出
  9. mysql> exit();

 

然后创建数据库:

  1. create database blogapp default character set utf8

 

注:因为是我的博客搬迁,创建好数据库之后还需要用脚本把数据导入(这个数据脚本是在新浪云导出的)

 

2. 安装Mysql-Python

  1. sudo apt-get install python-setuptools
  2. sudo apt-get install libmysqld-dev
  3. sudo apt-get install libmysqlclient-dev
  4. sudo apt-get install python-dev
  5. sudo easy_install mysql-python
  6. # 顺便把pip也装上
  7. sudo easy_install pip

 

3. 安装VirtualEnv

因为不同的项目会依赖不同的依赖包,为了方便,把Python的虚拟环境 VirtualEnv也安装上。VirtualEnv 可以为每个Python应用创建独立的开发环境,使他们互不影响

  1. pip install virtualenv
  2. # 创建虚拟环境
  3. virtualenv pyFlask

 

默认情况下虚拟环境不会依赖系统环境的global site-packages。比如系统环境里安装了MySQLdb模块,在虚拟环境里import MySQLdb会提示ImportError。如果想依赖系统环境的第三方软件包,可以使用参数–system-site-packages。此外,也可使用virtualenvwrapper的toggleglobalsitepackages命令控制当前环境是否使用global site-packages。

  1. virtualenv --system-site-packages env1

 

virtualenv的相关命令: 

  1. # 进入对应目录:
  2. cd pyFlask
  3. # 启动虚拟环境:
  4. source bin/activate
  5. #退出虚拟环境:
  6. deactivate

 

4. 上传代码,安装其他依赖库

用ftp把项目代码上传到云主机上,所有云主机上还需要安装ftp服务器

安装教程:http://jingyan.baidu.com/article/67508eb4d6c4fd9ccb1ce470.html

代码上传之后,用pip把需要的依赖库安装上。

  1. # requirement.txt 为依赖关系清单
  2. pip install -r requirements.txt

 

测试下代码是否能成功运行:

  1. python blogapp.py runserver
  2. # blogapp.py 是项目的入口文件

 

5. 安装配置uWSGI

  1. pip install uWSGI

 

添加uwsgi的配置文件(如下):

  1. [uwsgi]
  2. # uwsgi 启动时所使用的地址与端口
  3. socket = 127.0.0.1:5000
  4. # 指向网站目录
  5. chdir = /home/uftp/blog/
  6. # python 启动程序文件
  7. wsgi-file = blogapp.py
  8. # python 程序内用以启动的 application 变量名
  9. callable = app
  10. # 进程数
  11. processes = 4
  12. # 线程数
  13. threads = 2
  14. #状态检测地址
  15. stats = 127.0.0.1:9191

 

使用uwsgi运行应用

  1. uwsgi config.ini

 

用curl 测试下web项目是否运行成功

  1. curl http://localhost:5000

 

5.   配置nginx

在Nginx的安装目录找到Nginx的配置文件,默认安装目录一般是/usr/local/nginx/conf/,配置文件是nginx.conf,对其进行编辑,使得Nginx能够加载uwsgi。 

  1. server {
  2. listen 80;
  3. server_name 127.0.0.1;
  4. location / {
  5. include uwsgi_params;
  6. uwsgi_pass 127.0.0.1:5000; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
  7. uwsgi_param UWSGI_PYHOME /home/www/blog/pyFlask; # 指向虚拟环境目录
  8. uwsgi_param UWSGI_CHDIR /home/www/blog; # 指向网站根目录
  9. uwsgi_param UWSGI_SCRIPT blog:app; # 指定启动程序
  10. }
  11. }

 

重启nginx:

  1. sudo service nginx restart
  2. # 如何重启异常了 可以直接杀死进程,再启动
  3. killall nginx
  4. sudo service nginx start

可以再次用curl命令测试应用运行情况

 

现在web应用基本可以成功运行了

 

参考:

http://www.cnblogs.com/Ray-liang/p/4173923.html?utm_source=tuicool&utm_medium=referral

http://juxuan.fu.blog.163.com/blog/static/112129259201411188132562/

 

本文链接: http://www.bugcoding.com/entry/14

版权声明:本文为NGNL原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/NGNL/p/5801007.html