一、[傻瓜式一步到位] 阿里云服务器Centos上部署一个Flask项目

哇,这个部署真的弄了好久,网上的教程也是一堆,这个很好的解决了我的问题

原地址:https://www.cnblogs.com/Sugar-Chl/p/9497901.html

我入手的服务器是

阿里云的轻量应用服务器,系统是Centos 7.3.

使用的相关软件是

PuTTY(用于远程连接到服务器),

PSFTP(用于将本地文件上传至服务器),

Navicat for Mysql(数据库可视化工具)。

有一些小细节。

1.如果要用软件远程连接到阿里云的服务器,需要先在阿里云的控制台,为服务器重置一个密码。

2.远程连接服务器,输入密码的时候是不会显示的。

输入完成后直接回车就行了。

3.最好了解一些最基本Linux的命令 例如

cd,pwd,kill,ls, mkdir...


1.1安装Python3.6

首先安装依赖包

yum -y groupinstall "Development tools"yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

然后根据自己需求下载不同版本的Python3,我下载的是Python3.6.2

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz#其他版本地址:https://www.python.org/ftp/python/

如果速度不够快,可以直接去官网下载,利用WinSCP等软件传到服务器上指定位置,我的存放目录是/usr/local/python3,使用命令:

mkdir /usr/local/python3 

建立一个空文件夹

然后解压压缩包,进入该目录,安装Python3

tar -xvJf  Python-3.6.2.tar.xzcd Python-3.6.2./configure --prefix=/usr/local/python3make && make install

安装完后会提示安装好了pip等工具.

出现“successfully installed”等字样。

到此为止,Python3.6已经安装好了,

由于centos7 中自带的python的版本是python2.

而现在很多包只支持python3 ,所以我们要安装虚拟环境,在虚拟环境中的python版本是3.6

然后我们要安装virtualenv(python环境隔离工具)。

之后我们的flask的部署以及python包的下载都要在这个虚拟环境中进行!

每次重新远程连接centos的时候都要记得进去虚拟环境后再操作。

1.2 安装virtualenv

pip  install virtualenv建立python3独立环境
virtualenv  -p /usr/local/python3/bin/python3.6 /py3env进去python3独立环境
source /py3env/bin/activate
 

成功进入独立环境后是这样的。

 

最后 我们再输入

python -V

来验证一下python的版本

  

到此为止 python3的安装以及独立环境的安装完成了

参考链接:

1.https://blog.csdn.net/jon_me/article/details/49618619

2.http://www.cnblogs.com/mqxs/p/8692870.html  

2.搭建LNMP环境(Mysql,Nginx,Php)

参考:https://blog.csdn.net/wszll_alex/article/details/76285324

我只执行了这个博主的文章中的

2.安装软件

5.启动服务

就行了

有一个注意的地方,这个博主的文章中有一个错误的地方,

在安装Mysql时,

mysql > update user set password=password(‘123456‘) where user=‘root‘;
这个语句是错误的
应该是
mysql > update user set password=password('123456') where user='root';
123456就是mysql的密码
这个密码随便设置,别忘记了就好,(忘记了挺麻烦的)

3.上传flask项目文件至服务器

X.X.X.X处用服务器的公网ip地址代替
例如我的服务器的公网IP地址是XXX.XX.XX.XXXopen X.X.X.X

然后输入账号密码,就成功的连接到服务器上了。

假如我的flask项目在本地的地址为 C:\Users\73876\blog

我想将这个项目整个上传至服务器上的 /usr/local/python3/bin/

在FSFTP中输入

cd /usr/local/python3/bin/
("cd" 在服务器上的切换文件夹位置)
lcd C:\Users\73876\blog
(“lcd” 在本地电脑上的切换文件夹位置)

切换好位置后分别将manage.py

requirements.txt

以及app文件夹上传

put manage.py
put requirements.txt
put -r app

然后我们进入服务器的文件夹查看这2个文件和1个文件夹是否上传好

(有点凌乱,没有事先建立一个文件夹来放flask项目)

4.安装Python包

cd /usr/local/python3/binyum install mysql-devel gcc gcc-devel python-develpip install -r requirements.txt

至于如何生成requirements.txt请百度or谷歌


5.调试Mysql脚本文件

在服务器上重新建数据库,建表,会比较麻烦,而且有时候mysql在本地的电脑上已经存在部分数据。

所以比较快捷的方法就是在本地的数据库上导出sql脚本文件,然后将这个脚本文件上传到服务器,运行就好了。

运行之后,整个数据库就能搬到服务器上了

我是使用Navicat for Mysql来导出sql文件

右键blog 转储sql文件

得到blog.sql文件后将文件上传到服务器,如同上述步骤一样。

假如blog.sql文件的位置是 /usr/local/python3/bin/blog.sql

首先进入mysql

mysql -u root -p
输入密码
在Centos下里面的是首先要新建一个和文件相同名字的数据库。mysql>create database blog;然后输入指令:mysql> use blog;mysql>source /usr/local/python3/bin/blog.sql;
mysql>exit;
 

然后就OK了。

参考:

https://www.cnblogs.com/walblog/articles/7890442.html

6.安装 gunicorn

pip install gunicorn

7.运行flask项目

gunicorn -w 3 -b x.x.x.x:8000 manage:app

注意把x.x.x.x替换成内网ip地址(是内网,内网,内网!!!!)

大功告成啦!

外网想要访问你的flask网站

只要通过公网的IP地址就行了

X.X.X.X:8000

如果要停止这个程序的运行

ps -aux | grep gunicorn
查看进程
然后
kill掉这3个进程就好了

如果重新连接服务器,记得要进入独立环境后再操作!

source /py3env/bin/activate

二、安装Linux宝塔面板

原地址:https://blog.csdn.net/qq_46921028/article/details/109007153

宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。
有20个人的专业团队研发及维护,经过200多个版本的迭代,功能全,少出错且足够安全,已获得全球百万用户认可安装。

CentOS安装命令:

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装成功后会弹出一些内容信息:

外网面板地址: http://183.126.212.168:8888/c135ea5b
内网面板地址: http://11.32.17.120:8888/c135ea5b
username: qvwcdjg2
password: 2d7a163a

上面的东西一定要记得备份!!!
进入宝塔面板:

 http://183.126.212.168:8888/c135ea5b

并输入刚才弹出的账号和密码;

大功告成!!

三、nginx启动提示nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

nginx启动报错

今天在centos7部署nginx,安装时一切顺利,但是在启动的时候却报错了,提示如下错误:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

后经排查,原来是端口占用了。nginx默认启动端口是80,之前刚好在这个服务器启动了个80端口的tomcat。现解决方式如下:

安装iptables服务

需要通过防火墙开放对外端口。如果服务器上没有iptables服务,需要安装。如果有,则跳过。

yum install iptables-services
systemctl mask firewalld.service
systemctl enable iptables.service
systemctl enable ip6tables.service

配置端口

进入iptables配置80端口,因为nginx默认是由80端口访问

vi /etc/sysconfig/iptables

打开后,默认的配置信息如下(加粗部分为新添加的):
INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6:696]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

后续需要开放其它端口,也是在此文件中添加修改即可!

修改完后,保存退出文件编辑。

重启防火墙

systemctl restart iptables.service

查看80端口被占用的进程

lsof -i:80

通过kill命令干掉该进程

kill -9 进程号

启动nginx

这个时候在启动nginx,一切正常了!

/usr/local/nginx/sbin/nginx

Flask(1) | Flask的部署相关推荐

  1. python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

    简述 Nginx在服务器部署中的作用 请求通过Nginx实现反向代理,将请求提交给代理服务器.本文中只用了一台服务器,所以是代理到本机. gunicorn的作用 作为服务器代码的容器.接收Nginx的 ...

  2. OpenCV-Python实战(22)——使用Keras和Flask在Web端部署图像识别应用

    OpenCV-Python实战(22)--使用Keras和Flask在Web端部署图像识别应用 0. 前言 1. Keras 应用程序 2. 创建 Keras 应用程序的深度学习 REST API 小 ...

  3. Flask项目到服务器部署

    前几天看到华为云的服务器在搞活动,40块就有一年,虽然性能差但是想着自己搞个网站玩玩也可以就买了一套. 这篇文章代码用的python,讲述了我在搭建时遇到的一些坑以及解决方式. 废话不多说直接开搞 首 ...

  4. Apache24 + wsgi + Flask on Python3.8部署实践

    1. 安装Apache2.4 Apache官网没有Windows安装包,只有源码需要自己编,可以下载ApacheHaus编译版 点此处下载:httpd-2.4.46-o111j-x64-vc15.zi ...

  5. 【Flask】flask上下文

    上下文:即语境,语意,在程序中可以理解为在代码执行到某一时刻时,根据之前代码所做的操作以及下文即将要执行的逻辑,可以决定在当前时刻下可以使用到的变量,或者可以完成的事情. Flask中有两种上下文,请 ...

  6. 【Flask】flask入门以及第一个flask项目的创建

    一.Flask介绍 Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三 ...

  7. Flask框架(flask中的蓝图Blueprint)

    1. 我们学习Flask框架,开始的时候是把所有的视图函数等都写在一个文件中 我们在这单个文件中可以定义路由.视图函数.定义模型等等. 但这显然存在一个问题:随着业务代码的增加,将所有代码都放在单个程 ...

  8. Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)

    模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染:  render_template("模板名字",键=值,键=值)       ...

  9. Flask框架(flask中的数据库SQLAlchemy(python3),配置、模型类、创建表)

    1.  SQLAlchemy是一个关系型数据库框架, 它提供了高层的ORM和底层的原生数据库的操作. flask-sqlalchemy是一个简化了SQLAlchemy操作的flask扩展. 2. 安装 ...

  10. Flask框架(flask中的请求上下文和应用上下文,以及请求钩子的使用,Flask-Script 扩展命令行)

    1.请求上下文与应用上下文 请求上下文(request context) request和session都属于请求上下文对象. 应用上下文(application context) current_a ...

最新文章

  1. Spring框架中的设计模式(四)
  2. QT的QTextStream类的使用
  3. 【Boost】boost库中thread多线程详解13——线程标识符
  4. 关于21年电赛,这些一定要熟悉!
  5. pycharm导入模块不智能显示_Pycharm自动导入模块小技巧
  6. vlookup两个条件匹配_vlookup,你还是只会基础的单条件查找?
  7. 1001:Hello,World! 【信息学奥赛一本通(C++版)在线评测系统】
  8. this-is-how-we-troubleshoot-windows-interoperability-issues-in-the-open-specifications-support-team/
  9. mysql 虚拟表 分页_MySql大表分页(附独门秘技)
  10. vs中能编译通过,但是会有红色下划线提示未定义标示符问题
  11. javaScript判断数组内容去重方法
  12. 世界十大极限运动是什么
  13. centos7 yum 配置阿里云镜像
  14. 机器学习(9)--决策树和随机森林
  15. 均方误差——MSE 和标准差 的区别
  16. HCIA:动态路由路由协议RIP及DHCP
  17. flex弹性盒子flex-grow 和flex的区别
  18. LeetCode——1104. 二叉树寻路(Path In Zigzag Labelled Binary Tree)[中等]——分析及代码(Java)
  19. iphone怎么更新9.0系统更新服务器,iOS 9 推送前你必须知道的几件事:iOS 9 升级指南...
  20. HTTP, 网络七层模型

热门文章

  1. 大数据集群多用户数据资源隔离管理
  2. 金万维linux 路由,金万维动态域名解析(宽带通)Linux版
  3. 学了3D建模,我可以干嘛?
  4. 安信可Ai-WB1系列AT指令连接MQTT阿里云物联网平台
  5. 进程和线程以及线程池(一)
  6. Mastering Embedded Linux Programming 学习 (五)在百问网157开发板上,解决网络配置问题
  7. 情迁QQ机器人如何远程添加违禁词?
  8. 蓝桥杯STM32学习之G431、F103基础知识(六)
  9. element UI, Bootstrap,amazeUI 插件使用部分总结
  10. Fenix – 基于 Node.js 的桌面静态 Web 服务器