python项目上线
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项目上线相关推荐
- python项目上线_django之项目部署上线
在开始配置之前,需要将整个项目文件拷贝一份,然后移入你想要的放置的目录中. 一.Django配置 1.settings.py配置 复制全局settings.py配置文件,创建一个副本命名为/pro_s ...
- python项目如何上线_django项目部署上线(示例代码)
前言 完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等.这里只介绍2种,一种是django自带的,另外一种则是nginx + uwsgi完成介绍.这里的系 ...
- Laravel项目上线部署
2019独角兽企业重金招聘Python工程师标准>>> 老项目执行步骤: 1.停掉服务 $ php artisan down 2.从github拉代码. $ git pull 3.编 ...
- Jenkins部署Python项目实战
一.背景 我们工作中常用Jenkins部署Java代码,因其灵活的插件特性,例如jdk,maven,ant等使得java项目编译后上线部署一气呵成,同样对于脚本语言类型如Python上线部署,利用Je ...
- 绝对牛逼的3套Python项目,就业/毕设/私活/女朋友都不愁了
来源: 来自网络,如侵权请告知博主删除,感谢????. 仅学习使用,请勿用于其他- 今天给大家推荐3套Python项目,给大家介绍一波. 第一套 : Python零基础就业项目 ,比较适合还没工作,没 ...
- python项目实践_python实践项目
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 文章节选自<机器学习--python实践>文末评论赠送本书,欢迎留言 ...
- 几个让我欲罢不能的Python项目!
点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 作为一个语法简洁.有着丰富的第三方库的编程语言,Python 上手极为简单,短时间内就可以让你编写出能够解决实 ...
- python项目开发计划_面向中级 Python 开发人员的 13 个项目构想
建立信心:无论项目的复杂程度如何,你都会更加相信自己创建软件的能力. 探索其他技术:你将了解构建完整产品所需的其他技术,如数据库.服务器和其他语言. 更好地理解编程概念:你将学习更好地编写代码,并了解 ...
- 项目上线就炸,这谁受得了
「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 一.Apifox是什么? 二.Apifox能干什么? 1)API 文档设计 2 ...
最新文章
- 滑动换屏——Fragment
- 诸法无我-悉达多 乔达摩
- 【STM32】SPI程序示例
- object references an unsaved transient instance - save the transient instance before flushing .
- 常用的函数式接口_Consumer接口的默认方法andThen
- PostgreSQL DISTINCT用法
- DB2 数据库清表语句
- C语言试题七十二之请编写函数判断三角形的类型,并输出其面积和类型。
- hdu1873 看病要排队-优先队列
- Netty的实现原理、特点与优势、以及适用场景
- 【C语言简介】C语言的前世今生
- pyqt5-控件是否可用
- (转)一个用D3D绘制2D图形的例子
- linux 20个系统监控工具
- 自学人工智能途径_成为数据科学家,AI或ML工程师的自学途径
- 开发文档chm文件打不开
- win10U盘插进电脑读不出来/不显示驱动怎么办?
- arduino定时器控制舵机_用 Arduino 控制舵机
- 什么是pid控制算法_控制算法原理及实现之PID(以飞控为例)
- ms sql 创建表_使用MS查询创建表组合
热门文章
- mysql hint 索引倒序_MySQL中的索引提示Index Hint
- 部分代码_(python openCV)用71行代码实现获取人脸部分并存储功能
- 100盏灯开关问题python_100盏灯泡的开关问题
- 第2次作业:软件案例分析之王者荣耀
- xxljob 里面的 任务超时时间 在什么地方进行使用,FutureTask类使用详情
- 怎么查看计算机系统r2,Windows Server 2012 R2 如何找出域中的操作主机(FSMO)
- 蓝桥杯直播课(软件开发类)记录2021-3-13
- 如何用WinNTSetup安装Windows
- 使用Glide时 错误: 找不到符号 符号: 类 GlideApp解决方案
- iOS开发支付宝支付