Python web项目部署
远程服务器
-
xshell 远程连接
软件网址:https://www.xshell.com/zh/xshell/
软件下载:https://www.xshell.com/zh/xshell-download/
免费版:https://www.xshell.com/zh/free-for-home-school/
git 上传代码
-
安装git 官网 :https://git-scm.com/
-
创建仓库 我选择在gitee上创建仓库,然后复制仓库地址 比如说:https://gitee.com/username/test
-
创建本地仓库 电脑安装git,然后创建本地仓库 配置.gitignore文件,忽略不需要上传的文件 python项目配置.gitignore文件示例:参照.gitignore文件,可以直接网上搜索
-
本地仓库上传代码 一次性代码:
# 配置用户名和邮箱
# 这里的用户名和邮箱是gitee的,用于上传代码做配置
git config --global user.name "名字"
git config --global user.email "邮箱"
cd test # 进入项目目录
git init # 初始化本地仓库
git remote add origin https://gitee.com/username/test.git # 添加远程仓库地址
# 这里可能需要输入gitee的账号和密码
# 如果是win10系统,需要安装,密码会保存在windows的凭据中
常用命令:
git add . # 添加所有文件
git commit -m "init" # 提交代码,init为备注,可以用于记录本次提交的备注
git push origin master # 提交代码到远程仓库,master为分支名
# Ps:origin为远程仓库地址,master为分支名,因为之前已经配置了远程仓库地址,所以这里origin就是远程仓库地址,简化了操作.
-
同步代码(下载代码):
5.1 服务器安装git
yum install git
5.2 第一次下载代码:
cd /test # 进入项目目录
mkdir www # 创建www目录
cd /test/www/ # 进入www目录
git clone https://gitee.com/username/test.git # 下载代码,克隆到www目录
# 这里可能需要输入gitee的账号和密码
5.3 后续同步代码:
cd /test/www/test # 进入项目目录
git pull origin master # 下载代码
# Ps:origin为远程仓库地址,master为分支名,因为之前已经配置了远程仓库地址,所以这里origin就是远程仓库地址,简化了操作.
配置服务器环境
安装python3
- 安装
gcc
,用于编译python源码
yum install gcc
- 安装python依赖
yum install zlib zlib-devel -y
yum install bzip2 bzip2-devel-y
yum install ncurses ncurses-devel-y
yum install readline readline-devel-y
yum install openssl openssl-devel-y
yum install xz lzma xz-devel-y
yum install sqlite sqlite-devel-y
yum install gdbm gdbm-devel-y
yum install tk tk-devel -y
yum install mysql-devel -y
yum install python-devel -y
yum install libffi-devel -y
- 下载python源码
cd /test/
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
```
注意如果没有wget命令,需要安装```yum install wget -y```
4. 解压,编译安装
* 解压
```bash
tar -xvf Python-3.9.5.tgz
* 进入目录并编译安装
cd Python-3.9.5
./configure
make all
make install
* 安装完成后,测试是否安装成功
python3 --version
>>> print("hello world")
/usr/local/bin/python3
/usr/local/bin/pip3
/usr/local/bin/pip3.9
- 配置其他的python源
pip3.9 config set global.index-url https://pypi.douban.com/simple/
也可以配置其他的国内镜像源
配置服务器虚拟环境
安装virtualenv
- 安装virtualenv
pip install virtualenv
如果安装失败,可以尝试使用`pip3 install virtualenv`
如果还是失败,可以尝试使用`yum install python3-devel -y`安装依赖
- 创建虚拟环境
mkdir /envs
cd /envs
virtualenv /envs/venv --python=python3.9
# venv为虚拟环境名称,可以自己命名,python3.9为python版本
virtualenv venv
- 激活虚拟环境
source venv/bin/activate
激活之后,在执行安装命令的时候,就会自动安装到虚拟环境
比如:
pip install django
pip install django==1.10
pip install flask
如果我想运行,那么直接进入某个项目的目录
cd /www/wwwroot/项目目录
python manage.py runserver、python manage.py runserver 0:8000
或者
python app.py
都是可以的,但是这样运行,还是不够安全,性能也一般
- 退出虚拟环境
deactivate
删除虚拟环境
rm -rf venv(虚拟环境名称)
配置uwsgi,基于wsgi运行python项目
安装uwsgi
-
在虚拟环境下安装
1.1 首先要激活虚拟环境
source venv(虚拟环境目录)/bin/activate
1.2 安装uwsgi
pip install uwsgi
-
基于uwsgi运行项目
2.1 基于命令方式:
cd /项目路径
uwsgi --http :8080 --wsgi-file app.py--callable app
2.2 基于配置文件方式(推荐):
uwsgi --ini uwsgi.ini
2.3 配置文件示例
假设虚拟环境名字是 venv:
[uwsgi]
# 指定项目路径
chdir = /Users/admin/Desktop/bushu
# 指定项目内wsgi模块
wsgi-file = app.py
# 指定wsgi模块中变量名
callable = app
# 指定端口
http = :8080
# 指定进程数
processes = 4
# 指定线程数
threads = 2
# 指定主进程
master = true
# 指定pid文件
pidfile = uwsgi.pid
# 指定日志文件
daemonize = uwsgi.log
# 指定错误日志文件
error-log = uwsgi.log
# 指定wsgi模块
module = app
# 指定虚拟环境
home = /Users/admin/.virtualenvs/venv
# 指定虚拟环境bin目录
-
其他命令
--后台模式运行
uwsgi --ini uwsgi.ini &
--查看进程
ps -ef | grep uwsgi
--关闭进程
kill -9 pid(进程号)
配置nginx,反向代理
-
安装nginx
1.1 任何位置执行以下命令,都可以安装nginx
yum install nginx -y
1.2 Nginx会被安装在以下目录:
主配置文件目录:/etc/nginx/
程序文件目录:/usr/share/nginx/
日志文件目录:/var/log/nginx/
网站文件目录:/usr/share/nginx/html/
-
配置nginx
请求转发到我的项目端口
/static/ 静态资源 直接转发到静态资源端口
2.1 配置文件目录:/etc/nginx/nginx.conf,实际上需要替换掉默认的配置文件
2.2 删除默认配置文件
rm nginx.conf
2.3 创建配置文件
cd /etc/nginx/ # 配置文件目录
vim nginx.conf # 创建并打开配置文件
输入 i 进入编辑模式,复制以下内容
退出编辑模式,按 esc
输入 :wq 保存并退出
2.4 配置文件示例
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules.See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream flask {
server 127.0.0.1:8001;
}
server {
listen 80;
listen [::]:80;
location /static {
alias /data/www/day28/static;
}
location / {
uwsgi_pass flask;
include uwsgi_params;
}
}
}
- 启动nginx 3.1 启动nginx
systemctl start nginx # 启动nginx
systemctl stop nginx # 关闭nginx
systemctl restart nginx # 重启nginx
3.2 配置开机启动
systemctl enable nginx # 开机启动
systemctl disable nginx # 取消开机启动
3.3 启动 python 项目
先激活虚拟环境
source 虚拟环境目录/bin/activate
进入项目目录
cd /项目目录
启动项目
uwsgi --ini uwsgi.ini
其他补充
重启脚本可以使用shell脚本
安装 supervisor
- Supervisor进程管理器。Supervisor能够监控和控制系统中的多个进程,确保它们在后台稳定运行,并在意外停止时进行自动重启。这对于需要在系统中长期运行的服务和应用程序非常有用,如Web服务器、数据库、消息队列等。
yum install supervisor -y
-
安装完成后,在/etc/supervisord.d目录下会生成一个名为supervisord.conf的配置文件。
-
使用方法以后补充
安装mysql
- 安装mysql
yum install mysql-server -y # 安装mysql
yum install mariadb-server y # 安装mariadb
yum install mariadb # 安装mariadb客户端
后续补充
域名和https
后续补充
暂无评论数据