ubuntu18.04安装部署python3、nginx、Flask项目

热心市民老郭 2020-11-11 17:30:14
安装 Ubuntu python3 部署 ubuntu18.04


昨天服务器开了一个新管理员账号,用的弱口令,导致被黑了,ssh也不能登录,没办法,只能重装系统,还好没重要资料,服务器上只跑了一个公交的api和博客,早上重装了系统,环境从新搭建,记录下。

服务器是腾讯云的,系统是ubuntu18.04,自带python2和python3,我的项目是基于python3的,所以可以直接使用。

1.安装依赖包

sudo apt install python3-pip
sudo apt install build-essential python-dev python-setuptools
sudo apt install build-essential python3-dev python3-setuptools
2.安装virtualenv

Virtualenv用来建立一个虚拟的python环境,可以为每个Python应用创建独立的开发环境,使他们互不影响,Virtualenv 能够做到:

在没有权限的情况下安装新套件

不同应用可以使用不同的套件版本

套件升级不影响其他应用

pip3 install virtualenv
查看是否安装成功

virtualenv --version

安装成功,接下来就要使用它了,我的项目是个api服务,我把我的项目文件放在/opt下,文件名为busAPI,我把我的项目文件都放在里面

image.png

安装虚拟环境,名字叫venv,必须进入到项目目录里,

virtualenv venv
在项目目录下就会建立一个新的 venv 目录,里面就是运行python 的基本环境的工具与指令和包。然后启用该环境。

source venv/bin/activate
调用 activate 指令后命令符前就会出现 (venv) 字样。可通过 deactivate 退出虚拟环境。

3.安装项目的依赖(Flask框架)

我的项目文件已经上传到目录里,但是项目依赖还没有安装,安装依赖,我的依赖文件

已经放到requirements.txt文件里,

pip install -r requirements.txt
这样安装依赖文件比较方便,如果依赖少,可以一个一个安装。

4.安装并配置uWSGI

此时我们已经在虚拟环境中,直接安装uWSGI

pip install uwsgi
在项目根目录新建config.ini文件

vim config.ini
文件内容

`[uwsgi]

uwsgi 启动时所使用的地址与端口

socket = 127.0.0.1:8001

指向网站目录

chdir = /opt/busAPI/

python 启动程序文件

wsgi-file = run.py

python 程序内用以启动的 application 变量名

callable = app

处理器数

processes = 4

线程数

threads = 2
`

状态检测地址

stats = 127.0.0.1:9191
注释已经很明显,只解释下callable=app 这个 app 是 run.py 程序文件内的一个变量,这个变量的类型是 Flask的 application 类 。
image.png

可以运行测试下

uwsgi config.ini
但这只是命令启动形式,要使其随同服务器启动并作为后台服务运行才是运营环境的实际所需要。因此接下来我们需要安装另一个工具来引导 uwsgi 。

5.安装 Supervisor

sudo apt-get install supervisor

Supervisor 的全局的配置文件位置在:

/etc/supervisor/supervisor.conf
正常情况下我们并不需要去对其作出任何的改动,只需要添加一个新的 *.conf 文件放在/etc/supervisor/conf.d/下就可以,那么我们就新建立一个用于启动 busAPI 项目的 uwsgi 的 supervisor 配置 (命名为:busAPI.conf):

[program:busAPI]

启动命令入口

command=/opt/busAPI/venv/bin/uwsgi /opt/busAPI/config.ini

命令程序所在目录

directory=/opt/busAPI

运行命令的用户名

user=root

autostart=true
autorestart=true

日志地址

stdout_logfile=/var/log/uwsgi_supervisor.log

启动和终止服务

启动服务

sudo service supervisor star

终止服务

sudo service supervisor stop

查看状态

sudo service supervisor status
6.安装 Nginx

sudo apt-get install nginx
配置Nginx,我们修改default这个文件

/etc/nginx/sites-available/default

默认是80端口,这里我没有使用80,因为小程序必须要https,所以我配了443端口,重启下Nginx

sudo service nginx restart
Nginx服务命令

启动

sudo service nginx start

停止

sudo service nginx stop

重启

sudo service nginx restart

查看状态

sudo service nginx status
7.总结

记录下从无到有的过程,中间也遇到不少的坑,但是最终还是运行成功。总结下,方便日后查找。
文章来源:标梵互动(https://www.biaofun.com/)

版权声明
本文为[热心市民老郭]所创,转载请带上原文链接,感谢
https://segmentfault.com/a/1190000038137066

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database