【新手向】阿里云上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上面也可以实现,但是这跟一台一直开着 ...
随机推荐
- Eventlog Analyzer日志管理系统、日志分析工具、日志服务器的功能及作用
Eventlog Analyzer日志管理系统.日志分析工具.日志服务器的功能及作用 Eventlog Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机.服务器.网络设 ...
- Hibernate 的Configuration、sessionFactory和session和transaction对象解释
1.Configuration对象: Configuration conf=new Configuration(); conf.configure(); 1.1 到 src下面找到名称hibernat ...
- python约束 异常 MD5 日志处理
一.约束 1.用父类执行约束 子类继承父类,用重写方法,对子类的方法进行约束. class Foo: def login(self): # 对子类进行约束,该方法需要重写 # 没有执行的错误 rais ...
- 百度地图经纬度和地址互转(Java代码)
这是基于springmvc+mybatis 的一个controller.如果不是这个框架,可以把方法实体抽到自己写的一个类中,然后再测试 package com.uwitec.controller.s ...
- shell知识积累
Ubuntu下常用的快捷键:https://blog.csdn.net/u010771356/article/details/53543041 变量名和等号之间不能有空格,变量名中间不能有空格,可以使 ...
- js格式化文件大小, 输出成带单位的字符串工具
/** * 格式化文件大小, 输出成带单位的字符串 * @method formatSize * @grammar formatSize( size ) => String * @grammar ...
- Hibernate关联关系配置(一对多,一对一,多对多)
一对多 创建两个类 Manager(一这一端) Worker(多这一端) 即一个经理下有多个员工 package com.hibernate.n21; import java.util.HashS ...
- 21-z-index
z-index 这个东西非常简单,它有四大特性,每个特性你记住了,页面布局就不会出现找不到盒子的情况. z-index 值表示谁压着谁,数值大的压盖住数值小的, 只有定位了的元素,才能有z-index ...
- 1.gil全局解释器锁, 2. 死锁与递归锁 3. 信号量 4. Event事件 5. 线程queue
gil本质就是一把互斥锁,相当于执行权限,每个进程都会存在一把gil,同一进程内的多个线程必须抢到gil 之后才能使用cpython解释器来执行自己的代码,同一进程下的多线程不能并行,但可以实现并发 ...
- memcache和redis本质区别在哪里?
转自:http://www.dewen.org/q/971/memcache%E5%92%8Credis%E6%9C%AC%E8%B4%A8%E5%8C%BA%E5%88%AB%E5%9C%A8%E5 ...