本项目实现的是类似于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服务器部署(二)项目部署的更多相关文章

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

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

  2. 在阿里云上遇见更好的Oracle(二)

    从上一篇文章的反馈来看,大家还是喜欢八卦多过技术细节,那这一篇继续一些题外话,说说我对“去IOE”的看法. 对同一件事情,参与的没参与的人,讨论起来,都会有各自的立场.所以这里先申明一下,以下内容只是 ...

  3. 在阿里云上搭建自己的git服务器

    这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器. 1. 安装git 首先安装git,一般而言,现在的服务器已经内置了git安装包,我们只需要执行简单的安装命令即可安装.比如: ...

  4. Ubuntu | Flask + Gunicorn + Nginx 部署服务器环境

    现在我们手里有一个准备发布的项目,那么如何将他上传到你的服务器,并让外网访问呢? 前提: 1. 安装了Python环境 apt-get install python-dev 2. 安装Flask pi ...

  5. 云计算之路-阿里云上:博客web服务器轮番CPU 100%

    今天下午14:30左右开始,不知道怎么回事,博客站点负载均衡中的web服务器轮番CPU 100%.平时访问高峰5台服务器就能稳稳支撑,而今天发现CPU出现100%问题后就开始加服务器,结果到目前加到了 ...

  6. 阿里云上到底能运行SAP哪些产品?

    本文主要内容大部分来源于SAP已经发布的note:  2552731 - SAP Applications on Alibaba Cloud: Supported Products and IaaS ...

  7. 阿里云上,Ubuntu下配置Nginx,在tomcat中加了https协议就不可以了

    问题 阿里云上,Ubuntu服务器,本来部署的是tomcat,并且使用了https 协议.后来为了静态资源分离集成了 nginx,nginx代理跳转到 tomcat.刚开始直接访问http 网址发现, ...

  8. [Linux]阿里云免费试用体验(在阿里云的ubuntu上部署个人服务)

    作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...

  9. Linux学习总结(13)——在阿里云的ubuntu上部署个人服务

    作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...

随机推荐

  1. Tomcat优化详细1

    在Tomcat和应用程序进行了压力测试后,如果您对应用程序的性能结果不太满意,就可以采取一些性能调整措施了,当然了前提是应用程序没有问题,我们这里只讲Tomcat的调整.由于Tomcat的运行依赖于J ...

  2. 59.加载Viewcontroller的几种方法(添加导航,解决xib里面空间不显示问题)

    // 一.根据StoryboardID(需要在Storyboard设置),通过ViewController所在的Storyboard来加载: UIStoryboard *storyboard = [U ...

  3. 爬取微博的数据时别人用的是FM.view方法传递html标签那么jsoup怎么解析呢

    使用JSOUP就行 这里给出点思路 我只做了自己的首页和其他人的微博首页的抓取 其他的抓取没尝试(不好意思 比较懒...) 首先是利用JSOUP进行登陆 获取页面 看了下微博的登陆表格 发现用了aja ...

  4. 2019.01.17 bzoj2753: [SCOI2012]滑雪与时间胶囊(最小生成树)

    传送门 最小生成树菜题. 题意:给出一些有向边,问有向的最小生成树. 思路:先dfsdfsdfs一把所有有用的边都存起来,然后按终点点权为第一关键字,边权为第二关键字给边排序保证最小生成树的合法性,排 ...

  5. 百度地图足迹demo(多点轨迹生成)

    不要忘记引用JQuery//~~~<script src="jquery-1.7.1.min.js" type="text/javascript"> ...

  6. springboot Thymeleaf 整合

    Thymeleaf是一个Java模板引擎开发库,可以处理和生成HTML.XML.JavaScript.CSS和文本,在Web和非Web环境下都可以正常工作. Thymeleaf可以跟Spring bo ...

  7. ubuntu彻底删除apache2 再重装

    删除apache2不彻底,导致用 apt-get install apache2 重新装时总是不成功.下面是如何彻底删除apache2 1. 删除apache 代码: $ sudo apt-get - ...

  8. 学以致用六---Centos7.2+python3.6.2+django2.1.1 --搭建一个网站

    目的,创建django project,开始django web之旅 一.创建一个project    在opt目录下创建一个project [root@gxc opt]# django-amdin. ...

  9. 【慕课网实战】Spark Streaming实时流处理项目实战笔记十之铭文升级版

    铭文一级: 第八章:Spark Streaming进阶与案例实战 updateStateByKey算子需求:统计到目前为止累积出现的单词的个数(需要保持住以前的状态) java.lang.Illega ...

  10. Python实现文件备份

    Python实现文件拷贝 2017年8月27日 1.实现目的 统一时间对服务器某文件夹内文件进行备份保存,如若备份成功则不提示任何错误,否则将以邮件的形式告知管理员,备份出错. 2.程序流程图 主要流 ...