1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署

【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署

时间:2020-09-04 15:27:43

相关推荐

【新手向】阿里云上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 updateyangxg@localhost:~$ sudo apt-get upgrade

从github上下载代码

Linux终端进入需要下载代码的目录后,输入:

git clone /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即可:/document_detail/53090.html?spm=a2c4g.11174283.3.1.LavwRK

注意:如果项目使用的是python3,使用pip下载时都需要改为pip3 install pacakage

下载好依赖包后,最好都用终端进入Python3 import试一试:

1 root@iZ2ze2gihbn4ot85zlcdxdZ:~# python32 Python 3.5.2 (default, Nov 23 , 16:37:01) 3 [GCC 5.4.0 0609] on linux4 Type "help", "copyright", "credits" or "license" for more information.5 >>> import flask_login6 >>>

建议进入python3命令行方式引入包,而不是直接进入运行服务器的python文件,因为这时如果没有正常退出py文件的话,使用gunicorn运行时会发生进程被占用的情况,显示:connect in use, 可以通过该方法解决:/IcarusYu/p/8582894.html

创建数据库

由于项目的配置文件(我的是app.conf)中数据库的位置是这样:

SQLALCHEMY_DATABASE_URI = 'sqlite:///../nowstagram.db'

nowstagram.db是我所建的网站的数据库,路径使用的是相对路径(为了避免写代码时路径与远程服务器路径不一样,建议写为相对路径),所以我们要在下载的代码的目录下创建数据库:

root@iZ2ze2gihbn4ot85zlcdxdZ:/home/yy/now_picshare# sqlite3 nowstagram.dbSQLite version 3.11.0 -02-15 17:29:24Enter ".help" for usage hints.sqlite>

执行以上语句后,如果此时目录下没有nowstagram.db数据库则会新建数据库,如果已经有则打开数据库。

由于网站首页会展示一些用户的图片,因此我们需要初始化数据库。在代码中写好有初始数据库的方法init_database,并且置于manager.py文件中@mand下。因此我们可以在网站代码路径下执行命令:

python3 manager.py init_database

这样初始化后,在nowstagram.db中应该能检查到有新增数据:

sqlite> .tablescomment image user sqlite> select * from image...> ;1|/head/894m.png|1|-03-16 16:39:42.1075732|/head/863m.png|1|-03-16 16:39:42.1078223|/head/125m.png|1|-03-16 16:39:42.1080024|/head/48m.png|1|-03-16 16:39:42.1081725|/head/238m.png|1|-03-16 16:39:42.1083376|/head/24m.png|1|-03-16 16:39:42.1084997|/head/107m.png|1|-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端口号就能访问网站,收到服务器的响应

参考:/post/20/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。