当前位置: 首页 > news >正文

【项目部署】Python Django部署到阿里云

目录

  • 1. 发布源码到 GitHub
    • 本地源码发布前的初始化配置
    • 本地源码发布到 GitHub
  • 2. 配置云主机-Django项目部署到阿里云-Centos
    • 2.1. MySQL 的安装
    • 2.2 Redis数据库安装
      • 2.2.1 下载并安装Redis
      • 2.2.2 配置Redis
        • 2.2.2.1 以后台进程的方式启动Redis
        • 2.2.2.2 Redis 客户端的使用
        • 2.2.2.3 设置对外服务器地址
        • 2.2.2.4 设置连接的密码
  • 3. 基础环境的准备
  • 4. 下载Python的源文件、编译和安装
  • 5. pip的完善
  • 6. 准备虚拟环境
  • 7. 打包代码并上传
  • 8. 准备项目的运行环境
  • 9. 创建uwsgi的配置文件
  • 10. 安装Nginx
    • 10.1 配置Nginx
    • 10.2 重启网站

1. 发布源码到 GitHub

本地源码发布前的初始化配置

pass

本地源码发布到 GitHub

git init
git add .
# git status 
git commit -m "项目初始化"
git branch -M main
git remote add origin https://github.com/xxx.git
git push -u origin main

2. 配置云主机-Django项目部署到阿里云-Centos

发布之前,要修改配置信息:
改哪些呢?
修改 settings 【Debug,Alloweb_host,DB】

python 运行环境依赖

2.1. MySQL 的安装

# 1. 查看系统是否安装mysql 
rpm -qa | grep mysql 
# 2. 安装wget工具
yum -y install wget
# 3. 使用wget下载依赖包列表并使用yum安装
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 
# 安装    mysql:
yum -y install mysql57-community-release-el7-10.noarch.rpm 
yum -y install mysql-community-server
#  安装提示报错!
The GPG keys listed for the "MySQL 5.7 Community Server" repository are 
already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository. 
# 原因:官方    MySQL 存储库的    GPG 密钥已过期,无法安装或更新    MySQL 包。
# 解决办法:执行如下命令:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 
# 重新执行
yum -y install mysql-community-server 
# 4. 查看mysql运行状态
查看服务状态:systemctl status mysqld.service
启动服务:systemctl start mysqld.service
设置服务自启动:systemctl enable mysqld.service 
查看服务是否自启动:systemctl is-enable mysqld.service
# 5. 通过端口确认mysql运行 
netstat -ntlp | grep mysql 
# 6. 使用初始密码登陆,修改密码
grep "password" /var/log/mysqld.log
alter user 'root'@'localhost' IDENTIFIED by '123.com'# 7. 远程管理
# 配置远程连接的权限
update user set host='%' where host='localhost' and user='root'; 
# 确认防火墙的状态
systemctl status firewalld.service

2.2 Redis数据库安装

2.2.1 下载并安装Redis

# 新建redis文件夹
cd /usr 
mkdir redis
cd redis
# 下载
wget http://download.redis.io/releases/redis-4.0.6.tar.gz 
# 解压
tar -zxvf redis-4.0.6.tar.gz 
# 安装gcc依赖
yum install gcc 
# 进入目录
cd redis-4.0.6 
# 进行编译
make
# 进入目录运行
cd src
#执行make install 
make install
# 运行redis
redis-server

2.2.2 配置Redis

2.2.2.1 以后台进程的方式启动Redis

# 新建目录并复制redis配置文件 
mkdir -p /etc/redis
cp  /usr/redis/redis-4.0.6/redis.conf /etc/redis/redis_6379.conf 
# ===修改redis.conf (136行)==
daemonize no
#修改为
daemonize yes
# 指定redis.conf文件启动
/usr/redis/redis-4.0.6/src/redis-server /etc/redis/redis_6379.conf
# 查看进程
ps -aux | grep redis
# 将redis启动脚本复制一份到Init.d目录下
cp /usr/redis/redis-4.0.6/utils/redis_init_script /etc/init.d/redisd 
# 设置为redisd开机自启动
chkconfig redisd on
# 报错:service redisd does not support chkconfig 
# 修改redisd
vim /etc/init.d/redisd 
# 添加两行
# chkconfig:2345 90 10
# description:Redis is a persistent key-value database 
# 保存后运行
chkconfig redisd on
# 此时仍然报错:因为标准的自启动调用6379.conf , 我们重命名的为redis_6379.conf 
error, can't open config file '/etc/redis/6379.conf'
# 继续vim 修改
vim /etc/init.d/redisd 
# 修改为:
CONF="/etc/redis/redis_${REDISPORT}.conf" 
# 继续运行
chkconfig redisd on
# 显示成功,目前可以使用service redisd start 启动服务    ,可以使用service redisd stop 
停止服务,
# 可以使用service redisd restart 重启服务 
# 可以通过    ps -aux | grep redis查看是否运行

2.2.2.2 Redis 客户端的使用

在redis中自带了一个客户端redis-cli,可以通过这个客户端测试对redis服务的连接

# 使用    redis-cli
[root@centos2 ~]# redis-cli
127.0.0.1:6379>
# 存储一个key-value值: key:name value:steven 过期时间:10s
127.0.0.1:6379> set name steven -ex 10 
# 取出key=name的值
127.0.0.1:6379> get name 
"steven"
# 超过过期时间10s再去取
127.0.0.1:6379> get name 
(nil)

2.2.2.3 设置对外服务器地址

默认情况下,redis服务器是以127.0.0.1 :6379对外提供服务, 意味着其他的计算机无法连接redis, 需
要修改redis对外服务的IP地址, 具体如下:

# 修改    redis配置文件
vim /etc/redis/redis_6379.conf 
# 修改服务地址为:0.0.0.0  (69行) 
bind 0.0.0.0
# 重启服务后,使用redis-cli连接
[root@centos2 ~]# redis-cli -h 192.168.182.20 -p 6379

2.2.2.4 设置连接的密码

默认情况下,redis连接不需要密码,如果需要设置密码,有两种方式:

1. 修改配置文件
2. 使用redis-cli客户端设置

方法01:修改配置文件

# 修改    redis配置文件
vim /etc/redis/redis_6379.conf 
# 启用密码         (500行)
requirepass 1234.Com
# 重启服务后,使用redis-cli连接
[root@centos2 ~]# redis-cli -h 192.168.182.20 -p 6379 -a 1234.Com

方法02: 使用redis-cli客户端设置

192.168.182.20:6379> config set requirepass ZXCzxc123

可以用redis-cli查看设置的密码:

192.168.182.20:6379> config get requirepass
1) "requirepass"
2) "ZXCzxc123"

3. 基础环境的准备

# 更新所有的软件包 
yum update -y
# 安装Python源文件的编译环境
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel 
sqlite-devel libffi-devel libxml* libssl-dev

4. 下载Python的源文件、编译和安装

# 在centos中新建目录
mkdir /usr/local/python3.7.3 
# 进入目录
cd /usr/local/python3.7.3 
# 使用wget下载Python
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz 
# 解压缩
tar -zxvf Python-3.7.3.tgz 
# 进入目录
cd Python-3.7.3
# 新建一个安装目录
mkdir /usr/local/python3
# 编译前的configure设置         -- 指定路径
./configure --prefix=/usr/local/python3 
# 编译
make
# 安装
make install
# 可能会遇到的坑: ModuleNotFoundError: No module named '_ctypes'
# sudo yum install libffi-devel -y
# make install

# 确认安装是否成功!
cd /usr/local/python3/bin 
# 测试python3是否能运行
./python3
# 测试pip3是否能运行
./pip3
# 为Python3和pip3创建软连接
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3 
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

5. pip的完善

# 更改pip3的下载源 
cd ~
# 新建一个.pip目录 
mkdir .pip
# 进入.pip目录 
cd .pip
# 新建一个pip配置文件 
# touch pip.conf
vim pip.conf
# 添加配置文件的内容
[global]
index-url=http://pypi.douban.com/simple 
trusted-host = pypi.douban.com
# 升级pip3
pip3 install -upgrade pip

6. 准备虚拟环境

目前项目部署在/home/mysite的目录中, 在此目录中创建env目录, 把虚拟环境新建的env目录下:

cd ~
mkdir -p  /home/mysite/
cd /home/mysite/
# =========== 步骤01:安装virtualenv包======== 
# 安装
pip3 install virtualenv
# 创建virtualenv的软链接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv 
# =========== 步骤02:准备虚拟环境的目录    ========
# 新建目录
mkdir -p /home/mysite/env 
# 进入目录
cd /home/mysite/env
# =========== 步骤03:创建虚拟环境    ======== 
# 创建python的虚拟环境,名称为:pyweb 
virtualenv --python=/usr/bin/python3 pyweb
# ===========步骤04:进入并激活虚拟环境    ======== 
# 进入
cd pyweb/bin 
# 激活虚拟环境 
source activate 
# 退出虚拟环境
deactivate

虚拟环境部署方法很多,比如还有 poetry等,上面介绍的方法部署起来是最简单的、最稳定的。
实现效果图:
在这里插入图片描述
创建数据库:
在这里插入图片描述
在这里插入图片描述

7. 打包代码并上传

# 1. 在开发的环境中导出当前项目的依赖包到requirements.txt
pip freeze > requirements.txt
# 2. 上传代码到centos中    -- Git 
git init
# 添加本地仓库和远程仓库的关联
git remote add origin https://gitee.com/xxx.git 
# 第一次,用远程来初始化本地(把两个仓库合并)
git pull origin master --allow-unrelated-histories 
# 把本地仓库推到gitee
git push origin master
# 3. 在centos中,进入/home/mysite目录中 
cd /home/mysite
# 4. 使用git clone下载代码
git clone  https://gitee.com/xxx.git 

8. 准备项目的运行环境

# 先进入虚拟环境    -- pyweb
cd /home/mysite/env/pyweb/bin 
source activate
# 进入项目的目录-- 示例的项目名称为:detectionproject 
cd /home/mysite/detectionproject
# 按照requirements.txt准备运行环境 
pip install -r requirements.txt 
# 安装uwsgi
pip3 install uwsgi
# 为uwsgi建立软链接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
# python manage.py runserver 阿里云内网ip:80
# 浏览器 公网ip:80/user/login

9. 创建uwsgi的配置文件

# 在虚拟环境中,进入项目的根目录
cd /home/mysite/detectionproject
# 新建和项目同名的xml的文件
touch detectionproject.xml 
# 编辑xml文件
vi detectionproject.xml 
# 写入如下内容:
<uwsgi>    
  <socket>127.0.0.1:9999</socket><!-- 内部端口,自定义    -->
  <chdir>/home/mysite/detectionproject/</chdir><!-- 项目路径    -->            
  <module>detectionproject.wsgi</module>
  <processes>4</processes> <!-- 进程数    -->    
  <daemonize>uwsgi.log</daemonize><!-- 日志文件    --> 
</uwsgi>
# 保存:ESC --> :wq

10. 安装Nginx

通过yum来安装

# =======添加nginx的yum源    ======== 
# 1. 创建repo文件
touch /etc/yum.repos.d/nginx.repo 
# 2. 编辑nginx.repo
vi /etc/yum.repos.d/nginx.repo 
# 3. 复制内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0

enabled=1
# ============ 安装nginx ====== 
yum install -y nginx
# 安装后的目录
# config: /etc/nginx/nginx.conf 安装目录 
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid 
# 日志文件在var/log/nginx
# ============启动nginx==== 
systemctl start nginx
systemctl enable nginx

10.1 配置Nginx

#=========== 配置Nginx ============= 
# 修改账号
vi /etc/nginx/nginx.conf 
# 修改为root启动
user root;
# 修改网站配配置 
vi /etc/nginx/
....
server {
   listen       80; # 对外的80端口
   server_name  192.168.182.200;  # 服务器的地址 
   #charset koi8-r;
   #access_log  /var/log/nginx/host.access.log  main; 
   location / {
          include uwsgi_params;
          uwsgi_pass 127.0.0.1:9999;
          uwsgi_param UWSGI_SCRIPT detectionproject.wsgi;
          uwsgi_param UWSGI_CHDIR /home/mysite/detectionproject;#项目路径 
 }
   location /static/ {
   alias /home/mysite/detectionproject/apps/static/; 
 }
   ..... 
}

10.2 重启网站

//==================== 重新加载网站    ==================== 
1. 进入Python运行的虚拟环境
cd /home/mysite/env/pyweb/bin
source activate
2. 进入网站的根目录
cd /home/mysite/DetectionProject
3. 绑定uwsgi的配置文件
uwsgi -x DetectionProject.xml
4. 重加载nginx
cd /usr/local/nginx/sbin/ 
./nginx -s reload
如果重启nginx出现错误,如下命令解决
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

相关文章:

  • MySQL数据库索引并没有你想的那么难之第一节
  • 数据结构与算法-单链表
  • 记一次git误操作, 合并冲突别人新增文件显示成“自己新增“绿色文件
  • Dubbo----------------------------配置信息整合SpringBoot的三种方式
  • 基于视觉的车道线识别技术在智能车导航中的应用研究
  • bleu-mp 多进程bleu评估工具
  • webpack多进程打包
  • 索尼IMX316 标定_ToF模块相机校准
  • 【Proteus仿真】【51单片机】智能鱼缸系统设计
  • 瑞吉外卖2.0 Redis 项目优化 Spring Cache MySQL主从复制 sharding-JDBC Nginx
  • 2023-02-04 Elasticsearch 倒排索引的理解 Trie前缀树原理
  • 【DIY小记】VMWare设置主机连接到的Ubuntu虚拟机的网络端口
  • Spring Boot 集成Quartz
  • 【Java学习】JUC并发编程
  • 【入门AUTOSAR网络管理测试】CANoe测试T_STARTx_AppFrame时间
  • Apache Shiro身份验证绕过(CVE-2023-22602)
  • Cadence PCB仿真 使用 Allegro PCB SI 为电源网络分配电压并选择仿真的电源网络的方法图文教程
  • (考研湖科大教书匠计算机网络)第三章数据链路层-第六节媒体接入控制3:载波监听多址接入-碰撞避免(CSMA-CA)协议
  • ocs系统介绍
  • JVM运行时数据区
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉