python项目上线

  • 一 购买服务器
  • 二 使用MobaXterm连接服务器
  • 三 上线图
  • 四 安装git
  • 五 安装mysql
  • 六 安装redis
  • 七 安装python
  • 八 安装uwsgi
  • 九 安装虚拟环境
  • 十 安装nginx
  • 十一 前端部署
  • 十二 后端部署
    • 12.1 git拉取代码,安装依赖
    • 12.2 配置数据库
    • 12.3 迁移数据库
    • 12.4 使用uwsgi启动djagno
  • 十三 后台静态文件代理

一 购买服务器

阿里云服务器:https://www.aliyun.com/product/ecs

在控制台重置实例密码,后面远程链接用。

二 使用MobaXterm连接服务器


三 上线图

四 安装git

yum install git -y

五 安装mysql

1)前往用户根目录
# cd ~2)下载mysql57
# wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm3)安装mysql57
# yum -y install mysql57-community-release-el7-10.noarch.rpm
# yum install mysql-community-server --nogpgcheck4)启动mysql57并查看启动状态
# systemctl start mysqld.service
# systemctl status mysqld.service5)查看默认密码并登录
#  grep "password" /var/log/mysqld.log
# mysql -uroot -p6)修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';

六 安装redis

1)前往用户根目录
# cd ~2)下载redis-5.0.5(源码包)
# wget http://download.redis.io/releases/redis-5.0.5.tar.gz3)解压安装包
# tar -xf redis-5.0.5.tar.gz4)进入目标文件
# cd redis-5.0.55)编译环境
# make6)复制环境到指定路径完成安装
# cp -r /root/redis-5.0.5 /usr/local/redis7)配置redis可以后台启动:修改下方内容
# vim /usr/local/redis/redis.confdaemonize yes8)完成配置修改
# esc
# wq9)建立软连接
# ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
# ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli10)后台运行redis
# cd /usr/local/redis
# redis-server ./redis.conf &查看进程是否在运行:ps aux | grep redis
ctrl + c11)测试redis环境
# redis-cli12)关闭redis服务
客户端连进去,敲  shutdown
pkill -f redis -9

七 安装python

所有linxu和mac,都自带python2,阿里云的centos默认装了python3.6。

源码安装python,依赖一些第三方zlib* libffi-devel
# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y1 前往用户根目录
# cd ~2 下载 或 上传 Python3.8.6  服务器终端
wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz3  解压安装包
# tar -xf Python-3.8.6.tgz4 进入目标文件
# cd Python-3.8.65 配置安装路径:/usr/local/python3
把python3.8.6 编译安装到/usr/local/python38路径下
# ./configure --prefix=/usr/local/python386 编译并安装,如果报错,说明缺依赖
# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y# make &&  make install#7  建立软连接:/usr/local/python38路径不在环境变量,终端命令 python3,pip3
ln -s /usr/local/python38/bin/python3 /usr/bin/python3.8
ln -s /usr/local/python38/bin/pip3 /usr/bin/pip3.8# 机器上有多个python和pip命令,对应关系如下
python       2.x      pip
python3      3.6      pip3
python3.8    3.8      pip3.8#8  删除安装包与文件:
>: rm -rf Python-3.8.8
>: rm -rf Python-3.8.8.tar.xz

八 安装uwsgi

使用uwsgi运行django,不再使用测试阶段的wsgiref来运行django了uwsgi是符合wsgi协议的web服务器,使用c写的性能高,上线要使用uwsgi安装步骤
1)在真实环境下安装
# pip3.8 install uwsgi
安装到了python38的安装路径的bin路径下了
2)建立软连接
# ln -s /usr/local/python38/bin/uwsgi /usr/bin/uwsgi

九 安装虚拟环境

1)安装依赖
# pip3.8 install virtualenv
# python3.8 -m pip install --upgrade pip
# python3.8 -m pip install --upgrade setuptools
# pip3.8 install pbr
# pip3.8 install virtualenvwrapper2)建立虚拟环境软连接
# ln -s /usr/local/python38/bin/virtualenv /usr/bin/virtualenv3)配置虚拟环境:填入下方内容~/ 表示用户家路径:root用户,就是在/root/.bash_profile
# vim ~/.bash_profileVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8
source /usr/local/python38/bin/virtualenvwrapper.sh4)退出编辑状态
# esc5)保存修改并退出
# :wq6)更新配置文件内容
# source ~/.bash_profile7)虚拟环境默认根目录:~/.virtualenvs8)  mkvirtualenv -p python3.8 venv

十 安装nginx

1)前往用户根目录
# cd ~2)下载nginx1.13.7
# wget http://nginx.org/download/nginx-1.13.7.tar.gz3)解压安装包
# tar -xf nginx-1.13.7.tar.gz4)进入目标文件
# cd nginx-1.13.75)配置安装路径:/usr/local/nginx
# ./configure --prefix=/usr/local/nginx6)编译并安装
# make && make install7)建立软连接:终端命令 nginx
# ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx8)删除安装包与文件:
# cd ~
# rm -rf nginx-1.13.7
# rm -rf nginx-1.13.7.tar.xz9)测试Nginx环境,服务器运行nginx,本地访问服务器ip
# 启动 :nginx
# 停止: nginx -s stop
>: 服务器绑定的域名 或 ip:80# netstat -nlp | grep 80
# ps aux | grep 进程名

十一 前端部署

修改前端向后端发ajax请求的地址:项目的地址。
编译vue项目成html,css,js。

1) npm run bulid2) 项目根路径下生成dist文件夹(编译过后的文件)3) 使用SFTP连接服务器,将dict压缩包拖拽到服务端# 或者yum install -y unzip
# yum install lrzsz -y
直接把dist.zip 拖到 云服务器上去
或者在云服务器敲 rz  选择上传4)解压文件
# unzip dist.zip5)移动并重命名
mv ~/dist /home/html6)去向Nginx配置目录,备份配置,完全更新配置:填入下方内容/usr/local/nginx/conf/nginx.conf 是nginx的配置文件
制定nginx启动监听哪个端口
做请求转发,做负载均衡
做静态文件代理# cd /usr/local/nginx/conf做备份
# mv nginx.conf nginx.conf.bak   # vim nginx.conf加入下边配置
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;server {listen 80;server_name  127.0.0.1;charset utf-8;location / {root /home/html;index index.html;}}
} 7)重启nginx
# nginx -s reload或者
# nginx -s stop
# nginx

十二 后端部署

12.1 git拉取代码,安装依赖

1)确认好wsgi.py 中得配置文件是不是用的prod.py2)导出项目所有的依赖,当前虚拟环境的依赖,就是当前项目的依赖
pip freeze > requirements.txt3)在/home/路径下拉取项目
git clone4)切换到venv虚拟环境
workon venv5)安装依赖
pip install -r requirements.txt如果安装mysqlclient报错,需要安装下边依赖
yum install mysql-devel -y
yum install python-devel -y
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

12.2 配置数据库

创建数据库用户,和数据库,再迁移表

1)管理员连接数据库
mysql -uroot -p2)创建数据库
create database db_name default charset=utf8;3)设置权限账号密码:账号密码要与项目中配置的一致
grant all privileges on luffy.* to '用户名'@'%' identified by '密码';
grant all privileges on luffy.* to '用户名'@'localhost' identified by '密码';
flush privileges;4)退出mysql
quit;

12.3 迁移数据库

1)cd到项目目录下2)执行数据库迁移命令
python manage_prod.py makemigrations
python manage_prod.py migrate

12.4 使用uwsgi启动djagno

1)使用uwsgi跑之前先执行
python manage_pro.py runserver 0.0.0.0:80802)项目路径下,进行uwsgi服务配置# uwsgi的配置文件
vim ./api.xml<uwsgi><socket>127.0.0.1:8888</socket><chdir>/home/project_api/</chdir><module>project.wsgi</module><processes>4</processes><daemonize>uwsgi.log</daemonize>
</uwsgi>3)启动uwsgi
uwsgi -x ./api.xml4)查看uwsgi进程
ps aux |grep uwsgi5)配置nginx,把8080的动态请求转发给8888端口
vim /usr/local/nginx/conf/nginx.confevents {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;server {listen 80;server_name  127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80charset utf-8;location / {root /home/html; # html访问路径index index.html; # html文件名称try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题}}# 新增的serverserver {listen 8080;server_name  127.0.0.1;charset utf-8;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8888;uwsgi_param UWSGI_SCRIPT prject.wsgi;uwsgi_param UWSGI_CHDIR /home/prject_api/;}}
}6)重启nginx
nginx -s reload

十三 后台静态文件代理

uwsgi 只转发动态请求,静态资源它不管

1)编辑线上配置文件
vim /home/project_api/project/settings/prod.py2)修改static配置,新增STATIC_ROOT、STATICFILES_DIRS
STATIC_URL = '/static/'
STATIC_ROOT = '/home/project_api/project/static'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "../static"),)3)退出保存4)完成静态文件迁移
python /home/project_api/project/manage_prod.py collectstatic5)修改nginx配置
vim /usr/local/nginx/conf/nginx.confevents {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;server {listen 80;server_name  127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80charset utf-8;location / {root /home/html; # html访问路径index index.html; # html文件名称try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题}}# 新增的serverserver {listen 8080;server_name  127.0.0.1;charset utf-8;location / {include uwsgi_params;uwsgi_pass 127.0.0.1:8888;uwsgi_param UWSGI_SCRIPT project.wsgi;uwsgi_param UWSGI_CHDIR /home/project_api/;}location /static {alias /home/project_api/project/static;}}
}

python项目上线相关推荐

  1. python项目上线_django之项目部署上线

    在开始配置之前,需要将整个项目文件拷贝一份,然后移入你想要的放置的目录中. 一.Django配置 1.settings.py配置 复制全局settings.py配置文件,创建一个副本命名为/pro_s ...

  2. python项目如何上线_django项目部署上线(示例代码)

    前言 完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等.这里只介绍2种,一种是django自带的,另外一种则是nginx + uwsgi完成介绍.这里的系 ...

  3. Laravel项目上线部署

    2019独角兽企业重金招聘Python工程师标准>>> 老项目执行步骤: 1.停掉服务 $ php artisan down 2.从github拉代码. $ git pull 3.编 ...

  4. Jenkins部署Python项目实战

    一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...

  5. 绝对牛逼的3套Python项目,就业/毕设/私活/女朋友都不愁了

    来源: 来自网络,如侵权请告知博主删除,感谢????. 仅学习使用,请勿用于其他- 今天给大家推荐3套Python项目,给大家介绍一波. 第一套 : Python零基础就业项目 ,比较适合还没工作,没 ...

  6. python项目实践_python实践项目

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 文章节选自<机器学习--python实践>文末评论赠送本书,欢迎留言 ...

  7. 几个让我欲罢不能的Python项目!

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 作为一个语法简洁.有着丰富的第三方库的编程语言,Python 上手极为简单,短时间内就可以让你编写出能够解决实 ...

  8. python项目开发计划_面向中级 Python 开发人员的 13 个项目构想

    建立信心:无论项目的复杂程度如何,你都会更加相信自己创建软件的能力. 探索其他技术:你将了解构建完整产品所需的其他技术,如数据库.服务器和其他语言. 更好地理解编程概念:你将学习更好地编写代码,并了解 ...

  9. 项目上线就炸,这谁受得了

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 一.Apifox是什么? 二.Apifox能干什么? 1)API 文档设计 2 ...

最新文章

  1. 滑动换屏——Fragment
  2. 诸法无我-悉达多 乔达摩
  3. 【STM32】SPI程序示例
  4. object references an unsaved transient instance - save the transient instance before flushing .
  5. 常用的函数式接口_Consumer接口的默认方法andThen
  6. PostgreSQL DISTINCT用法
  7. DB2 数据库清表语句
  8. C语言试题七十二之请编写函数判断三角形的类型,并输出其面积和类型。
  9. hdu1873 看病要排队-优先队列
  10. Netty的实现原理、特点与优势、以及适用场景
  11. 【C语言简介】C语言的前世今生
  12. pyqt5-控件是否可用
  13. (转)一个用D3D绘制2D图形的例子
  14. linux 20个系统监控工具
  15. 自学人工智能途径_成为数据科学家,AI或ML工程师的自学途径
  16. 开发文档chm文件打不开
  17. win10U盘插进电脑读不出来/不显示驱动怎么办?
  18. arduino定时器控制舵机_用 Arduino 控制舵机
  19. 什么是pid控制算法_控制算法原理及实现之PID(以飞控为例)
  20. ms sql 创建表_使用MS查询创建表组合

热门文章

  1. mysql hint 索引倒序_MySQL中的索引提示Index Hint
  2. 部分代码_(python openCV)用71行代码实现获取人脸部分并存储功能
  3. 100盏灯开关问题python_100盏灯泡的开关问题
  4. 第2次作业:软件案例分析之王者荣耀
  5. xxljob 里面的 任务超时时间 在什么地方进行使用,FutureTask类使用详情
  6. 怎么查看计算机系统r2,Windows Server 2012 R2 如何找出域中的操作主机(FSMO)
  7. 蓝桥杯直播课(软件开发类)记录2021-3-13
  8. 如何用WinNTSetup安装Windows
  9. 使用Glide时 错误: 找不到符号 符号: 类 GlideApp解决方案
  10. iOS开发支付宝支付