1.安装mysql

Sudo apt-get install mysql

配置mysql的数据存储路径,默认在 /var/lib/mysql

sudo cp -R /var/lib/mysql/* /home/applex/mysqldb

sudo chown -R  mysql:mysql home/applex/mysqldb

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
将 [mysqld] 组下的 datadir改为:

datadir = /home/applex/mysqldb
sudo vim /etc/apparmor.d/usr.sbin.mysqld

把  

/var/lib/mysql r  

/var/lib/mysql/** rwk  

修改成  

/home/applex/mysqldb r  

/home/applex/mysqldb/** rwk

重启mysql

sudo service apparmor restart

sudo service mysql restart

或

sudo  /etc/init.d/apparmor restart

sudo  /etc/init.d/mysql restart   

配置msyql编码为utf8

sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下面添加:

character-set-server=utf8
sudo gedit /etc/mysql/conf.d/mysql.cnf

添加
default-character-set=utf8 sudo gedit /etc/mysql/debian.cnf

添加
default-character-set=utf8

2.配置anaconda3

 

从官网下载当前最新sh安装脚本,执行

bash Anaconda3-2018.12-Linux-x86_64.sh

按照提示安装

conda的安装路径中不要包含中文, 根据项目创建虚拟环境并选择python3.6,其他具体操作方法见conda教程

conda create -n myenv python=3.6

3.conda环境中部署项目

若源码部署方式,conda虚拟环境切换到源码目录,执行

pip install -e .

注意源码目录必须包含setup.py 和  MANIFEST.ini

若以模块文件部署方式, conda虚拟环境切换到wheel文件目录,执行

pip install xxx.whl

模块安装后需要指定一个项目启动目录并编写入口文件,如下例:

# [main.py]

form myproject import app

if ‘__main__’ == __name__:

app.run()

可以执行python main.py 启动flask内置服务器来测试打包的项目模块是否可以正常运行

4.安装uwsgi

切换到conda虚拟环境下,用pip安装uwsgi:

conda activate myenv

pip install uwsgi

安装uwsgi报UnicodeEncoding错误,请确认conda路径是否包含unicode字符(例如中文)

 

安装uwsgi报如下错,安装配置gcc4.7

/home/applex/conda/envs/myproject/compiler_compat/ld: error: lto-wrapper failed:

sudo apt-get install gcc-4.7

sudo rm /usr/bin/gcc

sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc

执行uwsgi –help确认uwsgi是否正确安装

uwsgi –help 查看帮助信息,若报如下错,安装配置libpcre3-dev

uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

sudo apt-get install libpcre3 libpcre3-dev

find / -name libpcre.so.3

找到 /lib/x86_64-linux-gnu/libpcre.so.3

sudo ln -s /lib/x86_64-linux-gnu/libpcre.so.3 /usr/lib/libpcre.so.1

编写uwsgi配置脚本

# [my_uwsgi.ini]

# 指定python环境

pythonpath = /home/applex/conda/envs/myproject/bin

# 启动http地址还是socket地址(用于与代理通信)

http = 127.0.0.1:7878

# socket = 127.0.0.1:7878

# 指定进程数(同process项)

workers = 4

# 指定线程数

threads = 2

# 设置日志路径

daemonize = /home/applex/myproject/server.log

# 设置app启动目录

chdir = /home/applex/myproject

# 设置app启动文件(也可直接指定文件全路径,无依赖时省略chdir)

# 注意引用的py文件不能在调用时启动app实例

wsgi-file = ./main.py

# 指定application对象实例

callable= app

  

启动uwsgi服务器

uwsgi mypath/ my_uwsgi.ini

查看uwsgi是否运行

ps -aux | grep uwsgi

查看端口号占用

netstat -anp | grep 7878

结束uwsgi进程

pgrep uwsgi | xargs kill -s 9

在配置的daemonize参数指定的文件中查看错误日志

5. 安装redis

sudo apt-get install redis-server

6.安装nginx

sudo apt-get install nginx

 

删除/etc/nginx/sites-enabled目录下的default链接,复制/etc/nginx/sites-available/default到/etc/nginx/sites-enabled,并按需求命名为myproject.conf,拷贝uwsgi_params到项目路径以便后期客制

cp /etc/nginx/uwsgi_params /home/applex/myproject/

修改myproject.conf,增加:

server {

listen 80;

listen [::]:80;

server_name 127.0.0.1;

charset utf-8;

        # 转发url请求到uwsgi

        location / {

            include /home/applex/myproject/uwsgi_params;

            uwsgi_pass 127.0.0.1:8000;

            uwsgi_param UWSGI_CHDIR /home/applex/myproject;

            uwsgi_param UWSGI_SCRIPT main:app;

        }

        # 配置nginx处理静态文件

        location /static {

            alias /home/applex/conda/envs/myproject/lib/python3.6/site-packages/myproject/static;

        }

}

  

操作nginx服务

sudo service nginx start/stop/reload

Ubuntu16.04下搭建mysql + uwsgi + nginx环境启动flask 项目的更多相关文章

  1. Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】

    本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...

  2. ubuntu16.04下 搭建 lnmp 环境

    apt-get install nginx apt-get php7.-mysql apt-get install mysql 编辑nginx配置文件 vim /etc/nginx/sites-ena ...

  3. ubuntu16.04下安装配置深度学习环境(Ubuntu 16.04/16.10+ cuda7.5/8+cudnn4/5+caffe)

    主要参照以下两篇博文:http://blog.csdn.net/g0m3e/article/details/51420565   http://blog.csdn.net/xuzhongxiong/a ...

  4. 在 Ubuntu16.04 中搭建 Spark 单机开发环境 (JDK + Scala + Spark)

    1.准备 本文主要讲述如何在Ubuntu 16.04 中搭建 Spark 2.11 单机开发环境,主要分为 3 部分:JDK 安装,Scala 安装和 Spark 安装. JDK 1.8:jdk-8u ...

  5. Ubuntu 16.04下搭建kubernetes集群环境

    简介 目前Kubernetes为Ubuntu提供的kube-up脚本,不支持15.10以及16.04这两个使用systemd作为init系统的版本. 这里详细介绍一下如何以非Docker方式在Ubun ...

  6. Ubuntu16.04下修改MySQL数据的默认存储位置

    由于在Linux下MySQL默认是存储在/var/lib/mysql目录下,mysql的数据会非常大,由于/var所划分的空间不够大,所以我们需要将mysql数据存放路径修改一下,放到大分区里面,以便 ...

  7. Caffe学习系列(一)Ubuntu16.04下搭建编译Caffe环境,并运行MNIST示例(仅CPU)

    前言: 正文: 1.安装必要依赖包: sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev l ...

  8. Ubuntu16.04下搭建Go语言环境

    1. 安装GO sudo apt-get install golang-go 2. 设置Go环境变量 打开终端,输入命令: export GOROOT=$HOME/goexport PATH=$GOR ...

  9. Ubuntu16.04下搭建LAMP环境

    前期准备sudo apt-get update             # 获取最新资源包sudo apt-get upgrade           # 本机软件全部更新sudo apt-get d ...

随机推荐

  1. 浅谈unity中gamma空间和线性空间

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概述 很久没有写文章了,今天写一篇对gamma空间和线性空间的个人理解总结,在查阅和学习了各个资料后,算是一个个人笔记 ...

  2. 同一容器中a标签比较多的情况下通过title属性值隐藏

    同一容器中a标签比较多的情况下如何通过title属性值控制a标签的隐藏或显示 最近项目中遇到一个IE兼容性问题,网站需要在底部footer添加"站长统计"代码,容器中动态添加很多a ...

  3. PXE安装windows系统,pxe-e55:ProxyDhcp service did not reply to request on port 4011

    这个pxe-e55" 错误表示 pxe 客户端已向端口4011上的代理 dhcp 服务器发送请求, 但未收到答复.似乎只有在dhcp 服务器上设置了 dhcp 类标识符选项 #60, 但同一 ...

  4. pytest框架之命令行参数2

    前言 上篇博客说到命令行执行测试用例的部分参数如何使用?今天将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则! pytest执行用例命令行参数 --collect-only:罗列出所 ...

  5. CAP 2.3版本发布,支持 MongoDB

    前言 经过2个月的调整及测试,CAP 2.3 版本终于发布了,这个版本最大的特性就是对于 MongoDB 的支持,感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR,相信随着博客园的 ...

  6. mapbox.gl文字标注算法基本介绍

    Well-placed labels can be the difference between a sloppy map and a beautiful one. Labels need to cl ...

  7. 解决MUI阻止a标签默认跳转事件—方法总结

    用过mui的小伙伴们一定不会陌生,有时候真的很烦mui本身会阻止a标签默认跳转.一般只要用了mui的ui组件,比如头部,底部或者弹框,你就不能在用a标签进行跳转了. 注:项目中引用了mui后,可能也会 ...

  8. 网站被k到可以使用关键词搜索到首页优化总结

    从今年二月份,刚过完年回到公司,大约一周多过后,网站就被不知名黑客攻击,然后又因为网站标题关键词堆砌导致网站被降权,从此首页不在有我的网站的踪迹,有的只是其他页面的信息,因为刚开始接触SEO,对这一块 ...

  9. Scanner对象及其获取数据出现小问题和解决方案

    Scanner类简介: Java 5添加了java.util.Scanner类,我们可以通过Scanner类来获取用户输入.它是以前的StringTokenizer和Matcher类之间的某种结合.由 ...

  10. 详细介绍Spring Boot 2.0的那些新特性与增强

    以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...