【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署
本项目实现的是类似于ins的图片分享网站。继续(一),当nginx的配置已修改好后,要在远程服务器上部署网站,只需要几个步骤:
1 前期准备
2 将运行网站的代码从github上下载过来
3 下载依赖包
4 创建数据库
5 运行gunicorn+nginx
前期准备
如果是一台全新服务器的话,通常我们是以 root 用户登录的。在 root 下部署代码不安全,最好是建一个新用户(如果你已经以非 root 用户登录的话可以跳过这一步)。下面的一些列命令将创建一个拥有超级权限的新用户:
# 选择一个你喜欢的用户名,不一定非得和我的相同
root@localhost:~# useradd -m -s /bin/bash yangxg
# 把新创建的用户加入超级权限组
root@localhost:~# usermod -a -G sudo yangxg
# 为新用户设置密码
# 注意在输密码的时候不会有字符显示,不要以为键盘坏了,正常输入即可
root@localhost:~# passwd yangxg
# 切换到创建的新用户
root@localhost:~# su - yangxg
# 切换成功,@符号前面已经是新用户名而不是 root 了
yangxg@localhost:~$
新用户创建并切换成功了。如果是新服务器的话,最好先更新一下系统,避免因为版本太旧而给后面安装软件带来麻烦。运行下面的两条命令:
yangxg@localhost:~$ sudo apt-get update
yangxg@localhost:~$ sudo apt-get upgrade
从github上下载代码
Linux终端进入需要下载代码的目录后,输入:
git clone https://github.com/Icarus1994/now_picshare.git
其中url可以在自己所创建仓库的clone or download处找到:

即可在指定目录下下载代码。注意:不要下载数据库。
下载依赖包
本项目是基于flask这种轻量级框架写的,同时使用ORM使python对象与数据库记录一一对应,并且服务器对于用户上传的图片的存储使用的是阿里云的存储技术,即上传的图片实际上是存储到阿里云的服务器中,而自己租用的远程服务器只是存储由阿里云提供的图片外链的url,这样大大减轻了服务器的负担。
因此,远程服务器上需要下载的依赖包包括:
数据库相关--pip3 install mysql-server , libmysqlclient-dev
服务器--python-flask , python-dev
依赖包--Flask-Script , Flask-Login , Flask-SQLAlchemy , Flask-MySQLdb,以及用于存储图片的阿里云SDK中要求下载的相关包:
pip3 install aliyun-python-sdk-core-v3
pip3 install aliyun-python-sdk-ecs
也可能根据需求需要下载其他包,参见阿里云SDK即可:https://help.aliyun.com/document_detail/53090.html?spm=a2c4g.11174283.3.1.LavwRK
注意:如果项目使用的是python3,使用pip下载时都需要改为pip3 install pacakage
下载好依赖包后,最好都用终端进入Python3 import试一试:
root@iZ2ze2gihbn4ot85zlcdxdZ:~# python3
Python 3.5. (default, Nov , ::)
[GCC 5.4. ] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import flask_login
>>>
建议进入python3命令行方式引入包,而不是直接进入运行服务器的python文件,因为这时如果没有正常退出py文件的话,使用gunicorn运行时会发生进程被占用的情况,显示:connect in use, 可以通过该方法解决:https://www.cnblogs.com/IcarusYu/p/8582894.html
创建数据库
由于项目的配置文件(我的是app.conf)中数据库的位置是这样:
SQLALCHEMY_DATABASE_URI = 'sqlite:///../nowstagram.db'
nowstagram.db是我所建的网站的数据库,路径使用的是相对路径(为了避免写代码时路径与远程服务器路径不一样,建议写为相对路径),所以我们要在下载的代码的目录下创建数据库:
root@iZ2ze2gihbn4ot85zlcdxdZ:/home/yy/now_picshare# sqlite3 nowstagram.db
SQLite version 3.11. -- ::
Enter ".help" for usage hints.
sqlite>
执行以上语句后,如果此时目录下没有nowstagram.db数据库则会新建数据库,如果已经有则打开数据库。
由于网站首页会展示一些用户的图片,因此我们需要初始化数据库。在代码中写好有初始数据库的方法init_database,并且置于manager.py文件中@manager.command下。因此我们可以在网站代码路径下执行命令:
python3 manager.py init_database
这样初始化后,在nowstagram.db中应该能检查到有新增数据:
sqlite> .tables
comment image user
sqlite> select * from image
...> ;
|https://images.nowcoder.com/head/894m.png|1|2018-03-16 16:39:42.107573
|https://images.nowcoder.com/head/863m.png|1|2018-03-16 16:39:42.107822
|https://images.nowcoder.com/head/125m.png|1|2018-03-16 16:39:42.108002
|https://images.nowcoder.com/head/48m.png|1|2018-03-16 16:39:42.108172
|https://images.nowcoder.com/head/238m.png|1|2018-03-16 16:39:42.108337
|https://images.nowcoder.com/head/24m.png|1|2018-03-16 16:39:42.108499
|https://images.nowcoder.com/head/107m.png|1|2018-03-16 16:39:42.108676
运行gunicorn+nginx
以上都执行完后,只要运行gunicorn和nginx即可见到自己建好的网站啦(参见(一))。nginx配置文件中的listen 80;proxy_pass 127.0.0.1:5000使服务器的80端口被监听,并将请求转到5000端口。gunicorn运行命令中的myapp:app指定了要执行的代码路径和监听端口5000(我设置的是5000,也可以设置其它的),这样用户访问时输入IP+80端口号就能访问网站,收到服务器的响应

参考:https://www.zmrenwu.com/post/20/
【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署的更多相关文章
- python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试
简述 Nginx在服务器部署中的作用 请求通过Nginx实现反向代理,将请求提交给代理服务器.本文中只用了一台服务器,所以是代理到本机. gunicorn的作用 作为服务器代码的容器.接收Nginx的 ...
- 在阿里云上遇见更好的Oracle(二)
从上一篇文章的反馈来看,大家还是喜欢八卦多过技术细节,那这一篇继续一些题外话,说说我对“去IOE”的看法. 对同一件事情,参与的没参与的人,讨论起来,都会有各自的立场.所以这里先申明一下,以下内容只是 ...
- 在阿里云上搭建自己的git服务器
这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器. 1. 安装git 首先安装git,一般而言,现在的服务器已经内置了git安装包,我们只需要执行简单的安装命令即可安装.比如: ...
- Ubuntu | Flask + Gunicorn + Nginx 部署服务器环境
现在我们手里有一个准备发布的项目,那么如何将他上传到你的服务器,并让外网访问呢? 前提: 1. 安装了Python环境 apt-get install python-dev 2. 安装Flask pi ...
- 云计算之路-阿里云上:博客web服务器轮番CPU 100%
今天下午14:30左右开始,不知道怎么回事,博客站点负载均衡中的web服务器轮番CPU 100%.平时访问高峰5台服务器就能稳稳支撑,而今天发现CPU出现100%问题后就开始加服务器,结果到目前加到了 ...
- 阿里云上到底能运行SAP哪些产品?
本文主要内容大部分来源于SAP已经发布的note: 2552731 - SAP Applications on Alibaba Cloud: Supported Products and IaaS ...
- 阿里云上,Ubuntu下配置Nginx,在tomcat中加了https协议就不可以了
问题 阿里云上,Ubuntu服务器,本来部署的是tomcat,并且使用了https 协议.后来为了静态资源分离集成了 nginx,nginx代理跳转到 tomcat.刚开始直接访问http 网址发现, ...
- [Linux]阿里云免费试用体验(在阿里云的ubuntu上部署个人服务)
作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...
- Linux学习总结(13)——在阿里云的ubuntu上部署个人服务
作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...
随机推荐
- php与html代码的若干转换
以前懵懵懂懂的看过,没怎么在意,现在总结一下 一般来说,像留言板之类的content,用这样的就够了: $content=addslashes(htmlspecialchars($_POST['con ...
- SWE_Browser编译
QRD从android4.4开始使用SWE_Browser,android原始代码中不再提供Browser.最近在做一个QRD8916_113517 CMCC入库版本,需要使用SWE_Browser. ...
- 【转载】 IP实时传输协议RTP/RTCP详解
http://www.chinaitlab.com/cisco/RIP/832426.html 1.简介 目前,在IP网络中实现实时语音.视频通信和应用已经成为网络应用的一个主流技术和发展方向,本文详 ...
- bootstrap表格参数说明
表格参数: 名称 标签 类型 默认 描述 - data-toggle String ‘table’ 不用写 JavaScript 直接启用表格. classes data-classes String ...
- vue 开发系列(四) vue 使用外部JS
概要 在开发时我们会经常需要使用到外部的JS,这样我们需要引入外部js,然后进行使用. 实现方法 我们在开发的过程中需要使用到 sha256 将用户的密码进行加密传输. 我们对js进行一点点改造. f ...
- vue 开发系列(二) vue ajax 拦截
概要说明 在开发的过程中,我们需要通过AJAX请求,访问后台获取数据,这个获取数据的时候,当然需要后台需要时登录状态才能访问数据,当没有登录的情况,这个时候我们需要跳转到登录界面进行登录. 如果每次请 ...
- Docker学习以及镜像制作流程
一.何为Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...
- 分布式的CAP理论
CAP是强一致性.可用性(实时可用).分区容忍性: Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性) 一般来说 P 是前提. ...
- Day1-python基础
python是一门动态解释性的强类型定义语言 python 3.0 ALL IS UNICODE NOW 认识python,了解python的发展史. 1.变量 变量命名规则:变量名只能是字母.数字 ...
- (转)FIKKER和Nginx的反向代理服务功能对比评测报告
转自:http://tieba.baidu.com/p/1268737304 针对高并发反向代理服务器 NGINX和FIKKER评测报告 测试硬件环境:服务端:CPU:E5200硬盘:SATA 133 ...