python项目上线

news2024/11/14 13:48:54

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.rpm

3)安装mysql57
# yum -y install mysql57-community-release-el7-10.noarch.rpm
# yum install mysql-community-server --nogpgcheck

4)启动mysql57并查看启动状态
# systemctl start mysqld.service
# systemctl status mysqld.service

5)查看默认密码并登录
#  grep "password" /var/log/mysqld.log
# mysql -uroot -p

6)修改密码
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.gz


3)解压安装包
# tar -xf redis-5.0.5.tar.gz

4)进入目标文件
# cd redis-5.0.5

5)编译环境
# make

6)复制环境到指定路径完成安装
# cp -r /root/redis-5.0.5 /usr/local/redis

7)配置redis可以后台启动:修改下方内容
# vim /usr/local/redis/redis.conf

daemonize yes

8)完成配置修改
# esc
# wq

9)建立软连接
# ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
# ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli

10)后台运行redis
# cd /usr/local/redis
# redis-server ./redis.conf &

查看进程是否在运行:ps aux | grep redis
ctrl + c

11)测试redis环境
# redis-cli

12)关闭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  -y

1 前往用户根目录
# cd ~

2 下载 或 上传 Python3.8.6  服务器终端
wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz

3  解压安装包
# tar -xf Python-3.8.6.tgz

4 进入目标文件
# cd Python-3.8.6

5 配置安装路径:/usr/local/python3
把python3.8.6 编译安装到/usr/local/python38路径下
# ./configure --prefix=/usr/local/python38

6 编译并安装,如果报错,说明缺依赖
# 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 virtualenvwrapper

2)建立虚拟环境软连接
# ln -s /usr/local/python38/bin/virtualenv /usr/bin/virtualenv

3)配置虚拟环境:填入下方内容
 ~/ 表示用户家路径:root用户,就是在/root/.bash_profile
# vim ~/.bash_profile

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8
source /usr/local/python38/bin/virtualenvwrapper.sh

4)退出编辑状态
# esc

5)保存修改并退出
# :wq

6)更新配置文件内容
# source ~/.bash_profile

7)虚拟环境默认根目录:~/.virtualenvs


8)  mkvirtualenv -p python3.8 venv

十 安装nginx

1)前往用户根目录
# cd ~

2)下载nginx1.13.7
# wget http://nginx.org/download/nginx-1.13.7.tar.gz

3)解压安装包
# tar -xf nginx-1.13.7.tar.gz

4)进入目标文件
# cd nginx-1.13.7

5)配置安装路径:/usr/local/nginx
# ./configure --prefix=/usr/local/nginx

6)编译并安装
# make && make install

7)建立软连接:终端命令 nginx
# ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

8)删除安装包与文件:
# cd ~
# rm -rf nginx-1.13.7
# rm -rf nginx-1.13.7.tar.xz

9)测试Nginx环境,服务器运行nginx,本地访问服务器ip
# 启动 :nginx 
# 停止: nginx -s stop
>: 服务器绑定的域名 或 ip:80

# netstat -nlp | grep 80
# ps aux | grep 进程名

十一 前端部署

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

1) npm run bulid

2) 项目根路径下生成dist文件夹(编译过后的文件)

3) 使用SFTP连接服务器,将dict压缩包拖拽到服务端

# 或者yum install -y unzip
# yum install lrzsz -y
直接把dist.zip 拖到 云服务器上去
或者在云服务器敲 rz  选择上传

4)解压文件
# unzip dist.zip

5)移动并重命名
mv ~/dist /home/html

6)去向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.py

2)导出项目所有的依赖,当前虚拟环境的依赖,就是当前项目的依赖
pip freeze > requirements.txt

3)在/home/路径下拉取项目
git clone

4)切换到venv虚拟环境
workon venv

5)安装依赖
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 -p

2)创建数据库
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:8080

2)项目路径下,进行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.xml

4)查看uwsgi进程
ps aux |grep uwsgi

5)配置nginx,把8080的动态请求转发给8888端口
vim /usr/local/nginx/conf/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; # 改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
            root /home/html; # html访问路径
            index index.html; # html文件名称
            try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
        }
    }
    # 新增的server
    server {
        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.py

2)修改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 collectstatic

5)修改nginx配置
vim /usr/local/nginx/conf/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; # 改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
            root /home/html; # html访问路径
            index index.html; # html文件名称
            try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
        }
    }
    # 新增的server
    server {
        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;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

作为微软开发者官方号,我们又要做点特别的事情了

在“感谢”二字最容易说出口的日子 谢谢每一个你&#xff0c;像一颗颗星星一样 点亮 MSDN 微软开发者社区的技术宇宙 我们也将在这个最值得感谢的日子 做一点特别的事情 MSDN 到底什么来头&#xff1f; MSDN 微软开发者社区已经成立快10年了&#xff0c;相信有很多资深开发…

Android服务器的通信方式

目录 一.HTTP协议 1.简介 2.Get和Post的使用 1.Get请求 2.Post请求 3.Get请求和Post请求的区别 二.Socket Socket的使用类型主要有两种&#xff1a; 客户端&#xff1a; 三.Socket 与 Http 对比 Android与服务器的通信方式主要有两种&#xff0c;一是Http通信&#xf…

Docker安装Gitlab-ruuner

第一步 # 拉取镜像 docker pull gitlab/gitlab-runner:latest # 启动容器 docker run -d --name gitlab-runner --restart always -v /opt/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest 第二步 查看/…

Windows 上修改 docker 的镜像文件存储位置(修改 WSL 文件映射)

Windows 上修改 docker 的镜像文件存储位置&#xff08;修改 WSL 文件映射&#xff09;1、起因2、修改2.1 关闭 Docker Desktop2.2 备份镜像2.3 WSL 取消注册 docker-desktop-data2.4 镜像数据导回 WSL 并挂载到新路径3、验证1、起因 一开始在 Windows 上安装了 docker 后&…

运动用品品牌排行榜,2022年值得买的运动用品推荐

如今&#xff0c;人们的生活节奏越来越快&#xff0c;工作和生活压力大。因此&#xff0c;人们越来越重视体育运动&#xff0c;通过体育运动达到放松和锻炼身体的目的&#xff0c;运动装备也就跟着火热起来。无论是进行室内或户外活动&#xff0c;选一套合适的运动装备是很有必…

【java】java 类型安全 与 unchecked warning

1.概述 1.1. What does type-safety mean? 我的总结: 从概念上来说,Type Safety,最本质上,就是对于内存(Memory)的“正确访问”。假如说,在内存的一块区域上存储着一个String类型的对象;按照正常的逻辑,这块内存区域就应该被当作String来进行处理,这就是所谓的“…

MASA Framework 事件总线 - 进程内事件总线

概述 事件总线是一种事件发布/订阅结构&#xff0c;通过发布订阅模式可以解耦不同架构层级&#xff0c;同样它也可以来解决业务之间的耦合&#xff0c;它有以下优点 松耦合横切关注点可测试性事件驱动 发布订阅模式 通过下图我们可以快速了解发布订阅模式的本质 订阅者将自…

nginx简单学习笔记

目录什么是nginx&#xff1f;反向代理负载均衡动静分离安装nginxNginx常用命令nginx.conf配置文件1、位置2 nginx配置文件组成Nginx 反向代理实例Nginx 配置实例-负载均衡nginx 分配服务器策略Nginx配置实例-动静分离nginx原理什么是nginx&#xff1f; Nginx是一个高性能的 HT…

【附源码】计算机毕业设计JAVA医院住院综合服务管理系统

【附源码】计算机毕业设计JAVA医院住院综合服务管理系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; …

第五站:操作符(第一幕)

操作符相关的知识&#xff0c;在我们初识C语言&#xff08;第三幕&#xff09;这篇文章中其实已经讲到过了。但是那一次讲解仅仅只是一些粗略的知识讲解&#xff0c;我们在那里面已经提到过&#xff0c;后续会专门超级详细的讲解操作符的知识&#xff0c;我们现在就来攻下操作符…

2022亚太数学杯数学建模竞赛B题(思路、程序......)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

C妈妈加密返回值逆向分析

内容仅供参考学习 目标 网址&#xff1a;https://www.chanmama.com/promotionDetail/0IHXaJ1y7lRNaZyiTsKa6vHtvaZDe6zy/live 直播记录接口返回值加密 分析 打开调试工具&#xff0c;先截获一个请求&#xff1a; 进入Initiator 一般情况通过这边进入函数中挨着…

HTML CSS游戏官网网页模板 大学生游戏介绍网站毕业设计 DW游戏主题网页模板下载 游戏娱乐网页成品代码

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

#边学边记 必修5 高项:对人管理 第2章 项目沟通管理和干系人管理 2-5 项目干系人管理

导学 重要知识点&#xff1a;干系人分析&#xff0c;干系人分类、分析技术、项目干系人管理过程的输入、工具与技术、输出等。下午的案例题可能会涉及与项目干系人管理知识点相关的简答题。 干系人管理的过程 1. 识别干系人 识别能够影响项目决策、活动或结果的个人、群体或…

Lysozyme C (46-61) (chicken),62982-31-4

AMPs是由相对较小的分子组成的异质基团&#xff0c;通常含有不到100个氨基酸。 它们最初是在20世纪60年代由Zeya和Spitznagel 在多形核白细胞溶酶体中描述的。 迄今为止&#xff0c;已在数据库&#xff08;如数据库&#xff09;中 确定和登记了2600多个AMP。 它们是由几乎所有的…

Mysql语法三:表的约束和表与表之间的关系以及高级查询

目录 1.表的约束 1.1:约束类型 1.2&#xff1a;NULL约束 1.3&#xff1a;UNIQUE&#xff1a;唯一约束 1.4&#xff1a;DEFAULT &#xff1a;默认值约束 1.5&#xff1a;PRIMARY KEY&#xff1a;主键约束 1.5.1:联合主键 1.5.2&#xff1a;自增主键 1.6&#xff1a;FORE…

HOOPS 3DGS技术概述

1.什么是HOOPS 3D图像系统 HOOPS 3D图形系统&#xff08;HOOPS/3DGS&#xff09;是一款高性能3D图形工具包&#xff0c;适用于开发人员构建Windows和UNIX操作系统以及Internet应用程序。HOOPS/3DGS高度优化的数据结构和算法大大简化了基于CAD/CAM/CAE、科学可视化和地理信息系…

Flutter的三棵树

一、Flutter常见的家族成员 Widget常见的家族成员 Element常见的家族成员 Render常见的家族成员 二、示例代码对应的Flutter Inspector树 示例代码&#xff1a;MyApp->MyHomePage->ErrorWidget&#xff0c;包含了StatelessWidget、StatefulWidget、LeafRenderObjectWid…

远程医疗解决方案-最新全套文件

远程医疗解决方案-最新全套文件一、建设背景二、建设思路三、建设方案四、获取 - 远程医疗全套最新解决方案合集一、建设背景 针对当今社会医疗资源分布不均、看病难看病贵、医学单位间学术交流和研讨开展困难&#xff0c;华为公司推出了远程医疗解决方案&#xff0c;实现远程…

springboot(13):spring 过滤器和拦截器的区别

目录过滤器和拦截器的区别过滤器的使用1.使用spring boot提供的FilterRegistrationBean2.使用原生servlet注解定义Filter拦截器的使用在前面我们讲过拦截器怎么使用&#xff0c;参考&#xff1a;拦截器 和拦截器有个差不多的叫过滤器。 过滤器和拦截器的区别 首先看一下下面…