nginx-gunicorn-flask 服务器部署的那些坑

以下所有操作均在ubuntu操作系统中进行

sudo apt-get update

sudo apt-get upgrade

首先停止tomcat7的运行不然后占用80端口导致nginx无法运行

sudo service tomcat7 stop

全局安装的工具
1.安装mongoDB
Install MongoDB Community Edition on Ubuntu
安装之后建议停掉mongoDB的进程, 重新启动一次, 防止下次启动时报下面这个错误

mongodb exception in initAndListen: 29 Data directory /data/db not found

报上面那个错误的原因是, 没有用指定数据库路径的命令启动, 如果用下面的命令启动, 则不会报上面那个错误

 mongod --dbpath /var/lib/mongodb --auth

或者 用指定的配置文件启动数据库, 也不会报上面那个错误

mongod --config /etc/mongod.conf

如果报上面那个错误则, 使用

#用root权限创建db文件
sudo mkdir -p /data/db

启动数据库

mongod

mongoDB的使用
创建超级管理员

mongo
use admin
db.createUser({user:'root',pwd:'root',roles:[{ "role" : "root", "db" : "admin"}]});
exit

关闭数据库

mongod  --shutdown  --dbpath /database/mongodb/data/

用验证模式启动数据库

mongod --auth

创建es_testing_db数据库
可以在本地客户端创建

use es_testing_db 使用es_testing_db数据库, 没有会自动创建

db.createUser({user:"superLi",pwd:"xxxxxx",roles:[{role:"dbOwner",db:"es_testing_db"}]})

创建用户
退出mongo交互
exit

mongoDB后台运行, daemon简单的是命令后面加“&”

mongod --config /etc/mongod.conf --auth & 

获取Document的_id

pk_dict = order._object_key
            object_id = pk_dict['pk']
            orderInfo["order_id"] = str(object_id)

更新数据

task = 'task 1'
todo = Todo.objects(task=task).first()  # 先查找
if not todo:
    return "the task doesn't exist!"

todo.update(is_completed=True)   # 再更新

2.安装git

sudo apt-get install git

3.安装nginx服务器
阿里云服务器有时候已经安装好了, 自带了nginx服务器
查找nginx配置文件

find / -name nginx.conf

删除阿里自带的nginx php 和Tomcat7

sudo service nginx stop
或者
pgrep nginx
kill 1127
然后
cd /alidata
sudo rm -rf server/
sudo apt-get install nginx

运行nginx服务器

sudo /etc/init.d/nginx start

实时查看nginx日志更新

tail -f EnShengServerError.log

4.安装supervisor

sudo apt-get install supervisor

5.安装pip

sudo apt-get install python-pip

5.安装python开发环境, 不然pycrypto无法安装

sudo apt-get install python-dev

7.安装virtualenv

sudo pip install virtualenv virtualenvwrapper

配置virtualenv
不管python是什么版本,都要执行下面两句:

echo "export WORKON_HOME=~/Env" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc

可以重启系统激活,也可以运行:

source ~/.bashrc

然后就可以开始建立虚拟环境了

8.下载代码

git clone https://xxxxxxxxxxxx

进入项目目录
创建虚拟环境

virtualenv venv

激活虚拟环境

source venv/bin/activate

在虚拟环境里执行
9..执行

pip install -r requirements.txt

的时候提示'pycrypto'安装失败
原来是因为, 需要先安装python-dev
执行

sudo apt-get install python-dev

后在执行pip install pycrypto,pycrypto安装成功

10.配置nginx服务器
cd /etc/nginx/sites-available
vim enshengserver

server {
    listen 80;

    location /static {
        alias /home/enshengserver/static;
    }

    location / {
        proxy_pass http://127.0.0.1:9000;
    }
}

https版nginx配置

server {
    listen 443 ssl;
    server_name misite.ltd;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    location /static {
        alias /home/enshengserver/static;
    }

    location / {
        proxy_pass http://127.0.0.1:9000;
    }
}

任意http跳转https的配置

server {
    listen *:80;

    return 301 https://www.your_domain.com$request_uri;
}

server {
    listen 443 ssl;
    server_name www.your_domain.com;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    location /static {
        alias /home/static;
    }

    location / {
        root /home/webSite/;
    }

    location /en_sheng_api {
        proxy_pass http://127.0.0.1:9000;
    }
}

创建配置文件的软连接

sudo ln -s /etc/nginx/sites-available/enshengserver /etc/nginx/sites-enabled/

重新加载nginx配置文件

sudo service nginx reload

2.supervisor的使用
编写配置文件
cd /etc/supervisor
cd conf.d/
sudo vim app.conf

[program:EnShengServer]#应用程序名称
autostart = True #在 supervisord 启动的时候也自动启动
autorestart = True #程序异常退出后自动重启
environment = PATH = "/home/enshengserver/venv/bin" #可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境
command = python EnShengServer.py #启动命令,与手动在命令行启动的命令是一样的
directory = /home/enshengserver #程序的启动目录
stderr_logfile = /var/log/supervisor/EnShengServerError.log #错误日志输出路径
stdout_logfile = /var/log/supervisor/EnShengServer.log #日志输出路径

注意:

directory不能放在command上面 否则无法启动
用虚拟环境启动也可以写成

command = /home/enshengserver/venv/bin/gunicorn -b 127.0.0.1:9000 EnShengServer:
app

ubuntu查看进程指令

sudo netstat -antup

查看指定程序的进程

pgrep nginx

杀掉进程

kill 1313

启动supervisor
sudo service supervisor startsupervisorctl reload重新加载配置
进入supervisor控制台

sudo supervisorctl

status查看进程状态
stop EnShengServer停止程序运行
start EnShengServer运行程序
3.mongoDB的安装
参考Ubuntu16.04安装mongodb
ubuntu 12.04 Server 上安装 MongoDB及运行
ubuntu12.04上的mongodb卸载

4.Nginx https配置的关键是监听443端口

运维方案的实现
fabric安装
Mac下安装fabric

brew install fabric

ubuntu安装fabric

pip install fabric

5.自签名证书crt到cer格式转化

openssl x509 -in nginx.crt -out misite.cer -outform der

6.flask-RESTFul 接收数组参数

orderPostParser.add_argument('validate_car_images[]', type=unicode, required=True, help='验车照片不能为空', action='append') #重点在action='append'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容