HttpRunnerManager接口测试平台部署在服务器上(Centos + python3.6 + Mysql5.7 + uwsgi + nginx)...

本文详细介绍了使用HttpRunnerManager结合Python 3.6、Mysql 5.7、uwsgi和nginx进行项目部署的过程。从服务器环境搭建到应用配置,再到具体步骤如安装依赖、数据库设置、服务配置等均有涉及。

整个思路:HttpRunnerManager + python3.6 + Mysql5.7 + uwsgi + nginx

安装依赖环境,将源代码传到服务器,修改settings,增加uwsgi配置,增加nginx配置并启动,用公网ip访问平台。

1.我这边是用的华为云服务器,系统是centos7.3,登录后,从安全组添加80和8000端口(nginx监听80端口用于访问,8000端口用于部署时的调试工作,部署完成后关闭8000端口)

2.下载了远程连接工具SSH Secure ,这个可以远程连接和上传/下载源代码,以及本地修改配置后上传,因为新手对vim不太熟悉,可以用这个工具,不过不建议,因为在部署的过程中用vim也能逐步熟悉vim和常用的命令。

3.连接后安装python3,过程:下载安装包,解压,configure,make,make install,建立软连接。参考:https://www.cnblogs.com/levelksk/p/7921066.html

4.利用远程工具SSH secure上传源代码及requirement.txt, 并在服务器上安装依赖 pip3 install -r requirement.txt

5.安装mysql5.7,安装完成后,需要用如下命令拿到默认密码:grep 'temporary password' /var/log/mysqld.log

  可以参考:https://blog.youkuaiyun.com/a394268045/article/details/79288718

  安装完成后,登录mysql,创建所需的HttpRunner数据库:

  CREATE DATABASE `HttpRunner` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  并在源代码路径下修改HttpRunnerManager下的settings文件的sql部分(账号 秘密 数据库名等),顺便关闭debug模式:

  #DEBUG = True
  DEBUG = False
  #ALLOWED_HOSTS = ['*']
  ALLOWED_HOSTS = ["114.115.203.178",]
  进入项目根目录,删除app/migrations/下的以数字开头的数据库同步日志文件,然后数据库迁移与同步:
    python3 manage.py makemigrations
    python3 manage.py migrate

6.安装uwsgi,pip3 install uwsgi

7.安装nginx,pip install nginx

8.配置uwsgi和nginx的启动文件

uwsgi配置可以新建一个uwsgi.ini的文件放到项目根目录,配置如下:

[uwsgi]
#http= 0.0.0.0:8000

# Django-related settings

project = HttpRunnerManager-master 项目根目录
project1= HttpRunnerManager   项目settings和wsgi所在目录
base = /home  #源代码存放的服务器目录


chdir = %(base)/%(project)
module = %(project1).wsgi:application
env = DJANGO_SETTINGS_MODULE = %(base)/%(project)/%(project1).settings

master = true
processes = 5
#daemonize = wsgi.log

socket = %(base)/%(project)/%(project1).sock
chmod-socket = 666
vacuum = true

  

nginx配置:需要进入切换到/etc/nginx/ 目录,打开nginx.conf文件进行server部分配置添加如下:

    server {
        listen       80 default_server;     #默认监听端口
        listen       [::]:80 default_server;
        server_name  xxx.xxx.xxx.xxx;      #公网ip地址

        #root         /usr/share/nginx/html;
        root          /home/HttpRunnerManager-master;   #项目目录

        # Load configuration files for the default server block.
        include /etc/nginx/conf.d/*.conf;

            access_log /var/log/nginx/httprunnermanager_access.log; #增加正常日志
            error_log /var/log/nginx/httprunnermanager_error.log;  #增加异常日志

    #增加静态文件目录
        location /static/ {
            root /home/HttpRunnerManager-master;
            }
        
        location /media/ {
            root /home/HttpRunnerManager-master;
        }
    #连接到uwsgi
        location / {
            include         uwsgi_params;
            uwsgi_pass      unix:/home/HttpRunnerManager-master/HttpRunnerManager.sock;
        }

            error_page 404 /404.html;
        location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

  

  配置后先启动uwsgi,启动方式,进入uwsgi.ini文件所在目录,执行命令:uwsgi --ini uwsgi.ini ,如果需要在后台运行,可以加上-d

  配置后启动nginx,启动方式,直接输入nginx即可。部署过程中,修改后需要重新启动服务,可以先杀掉端口然后重启,如fuser -k 80/tcp

  或者:ps -ef|grep uwsgi 查到PID后使用kill -9 PID XXX

 

  然后web登录,OK就说明部署成功了。然后将启动写入默认启动,关闭服务器的8000端口。本篇虽然没有说8000端口那些事,但实际情况是有先用uwsgi启动http连接确认源代码及配置是否正常,因为uwsgi只能单用户登录,所以加入nginx反向代理服务器。

 

 然后还有rabbitMQ中间件后面再部署啦。 看起来是不是很简单,实则首次部署真的好多的坑。列举下我遇到的坑:

  1. mysql安装后无法登录,因为不知道默认密码

  2.python3安装错误位置导致覆盖在自带的python2目录下

  3. 数据库从windows中备份,linux中部分数据无法导入

  4.uwsgi安装后,执行命令报无此command,需要建立软链接

  5.uwsgi nginx配置有部分后发现总是无法访问,报server internal error

  6.uwsgi nginx配置,这部分我在这绕了很久,网上都写的很复杂而且有些有错误。

 

rabbitMQ中间件部分请移步:https://www.cnblogs.com/Sandy-1128/p/linux-sandy-0326.html

转载于:https://www.cnblogs.com/Sandy-1128/p/HttpRunner-sandy-0323.html

<think>嗯,用户现在问的是如何将Python开发的API接口部署到欧拉服务器上,是不是直接把.py文件拷贝进去就行。首先,我需要理解用户的需求。用户可能对服务器部署流程不太熟悉,以为直接复制文件就能运行,但实际上部署涉及更多步骤。 首先,我得考虑用户提到的欧拉服务器,应该是华为的EulerOS,基于CentOS的Linux发行版。所以部署步骤可能与其他Linux系统类似,但需要确认EulerOS的具体配置,比如包管理工具是yum还是dnf,以及Python环境的安装方式。 然后,用户的问题是否仅在于文件传输,还是有更深层次的需求?比如,用户可能没有考虑到依赖管理、虚拟环境、Web服务器配置、进程管理、安全性等。直接拷贝.py文件是不够的,还需要安装依赖,配置服务器软件如Gunicorn或uWSGI,以及Nginx反向代理,设置防火墙规则,使用HTTPS等。 接下来,我需要分步骤回答,先纠正直接拷贝的误区,再介绍标准部署流程。可能需要包括环境准备、项目结构优化、依赖管理、选择WSGI服务器、配置反向代理、进程守护、自动化部署和监控等步骤。同时,要提到使用虚拟环境的重要性,避免系统Python环境被污染。 还要考虑用户可能遇到的常见问题,比如权限问题、依赖冲突、端口被占用、服务启动失败等,给出相应的解决建议。例如,使用systemd管理服务,检查日志文件,使用--user参数安装依赖等。 另外,是否需要推荐一些工具或最佳实践?比如使用Docker容器化部署,或者CI/CD自动化流程,但用户可能刚开始接触部署,所以先从基础开始,逐步引导。 最后,确保语言通俗易懂,结构清晰,分步骤说明,让用户能一步步跟着操作。可能还需要提醒用户注意安全性,比如配置防火墙,使用非root用户运行服务,设置HTTPS等。</think>以下是将Python API部署到欧拉服务器(EulerOS)的标准流程,比直接复制文件更专业的解决方案: --- ### 一、基础环境准备(SSH连接服务器后操作) 1. **更新系统环境**: ```bash sudo yum update -y # EulerOS使用yum包管理器 sudo yum install -y git python3 python3-pip ``` 2. **创建专用用户**(避免使用root): ```bash sudo useradd -m api_user # 创建系统用户 sudo passwd api_user # 设置密码 su - api_user # 切换用户 ``` --- ### 二、项目文件规范化传输 1. **推荐使用Git部署**: ```bash git clone https://你的仓库地址 /home/api_user/project # 比直接scp上传更利于版本控制 ``` 2. **手动上传时的正确操作**: ```bash # 本地终端执行 scp -r ./project api_user@服务器IP:/home/api_user/ # 保持项目完整结构(含requirements.txt) ``` --- ### 三、专业部署核心步骤 1. **创建虚拟环境**: ```bash python3 -m venv /home/api_user/venv # 创建独立环境 source /home/api_user/venv/bin/activate ``` 2. **安装依赖**: ```bash pip install --upgrade pip pip install -r requirements.txt # 必须包含WSGI服务器(如gunicorn/uwsgi) ``` 3. **配置生产级WSGI服务器**(以Gunicorn为例): ```bash gunicorn -w 4 -b 0.0.0.0:8000 "app:create_app()" # 需根据实际应用入口调整 ``` --- ### 四、Nginx反向代理配置(需sudo权限) 1. **安装Nginx**: ```bash sudo yum install -y nginx sudo systemctl start nginx ``` 2. **配置站点文件**: ```bash sudo vim /etc/nginx/conf.d/api.conf ``` ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 3. **应用配置**: ```bash sudo nginx -t # 测试配置 sudo systemctl reload nginx ``` --- ### 五、进程守护(Systemd服务) 1. **创建服务文件**: ```bash sudo vim /etc/systemd/system/api.service ``` ```ini [Unit] Description=Python API Service After=network.target [Service] User=api_user WorkingDirectory=/home/api_user/project ExecStart=/home/api_user/venv/bin/gunicorn -w 4 -b 0.0.0.0:8000 "app:create_app()" Restart=always [Install] WantedBy=multi-user.target ``` 2. **启动服务**: ```bash sudo systemctl daemon-reload sudo systemctl start api sudo systemctl enable api ``` --- ### 六、安全加固措施 1. **防火墙配置**: ```bash sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload ``` 2. **SSL证书申请**(Let&#39;s Encrypt): ```bash sudo yum install -y certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com ``` --- ### 七、部署后验证 1. **检查服务状态**: ```bash systemctl status api # 查看服务运行状态 journalctl -u api.service # 查看详细日志 ``` 2. **接口测试**: ```bash curl http://localhost:8000/healthcheck curl -I https://your-domain.com/api/v1/test ``` --- ### 八、高级部署方案(可选) 1. **Docker容器化**: ```Dockerfile FROM python:3.9-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt EXPOSE 8000 CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:create_app()"] ``` 2. **使用CI/CD工具**: - 配置GitLab Runner/Jenkins实现自动部署 - 结合Webhook触发更新 > 实际部署时需根据具体框架(Flask/FastAPI/Django等)调整启动命令,建议先通过 `python -m py_compile *.py` 检查语法错误再部署
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值