Centos7下部署Django项目与遇到的问题

    xiaoxiao2025-01-20  40

    1.在本地的虚拟环境中,项目根目录下,执行命令收集所有包

    pip freeze > plist.txt

     2.Centos7下安装pip

    当root用户使用yum install -y python-pip 时会报如下错误:

    No package python-pip available

    Error:Nothing to do

    解决方法如下:

    首先安装epel扩展源:

    yum -y install epel-release

    更新完成之后,就可安装pip:

    yum -y install python-pip

    安装完成之后清除cache:

    yum clean all

    这是在root用户时使用的命令

    3.在服务器端虚拟环境安装所有需要的包

    安装虚拟环境 pip install virtualenv pip install virtualenvwrapper

     进入虚拟环境及安装所需包

    workon [虚拟环境名称] pip install -r plist.txt

    4.更改settings.py文件

    DEBUG = False ALLOW_HOSTS=['*',]表示可以访问服务器的ip

     5.安装uwsgi

    安装 pip install uwsgi 配置 [uwsgi] socket=外网ip:端口(使用nginx连接时,使用socket) http=外网ip:端口(直接做web服务器,使用http) chdir=项目根目录 wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录 processes=4 threads=2 master=True pidfile=uwsgi.pid daemonize=uswgi.log  命令 启动:sudo sbin/nginx 停止:sudo sbin/nginx -s stop 重启:sudo sbin/nginx -s reload

    6.安装nginx

    使用nginx的作用

    负载均衡:多台服务器轮流处理请求反射代理:隐藏真实服务器 yum install nginx 配置

    编辑conf/nginx.conf文件

    vim /etc/nginx/nginx.conf 在server下添加新的location项,指向uwsgi的ip与端口 location / { include uwsgi_params;将所有的参数转到uwsgi下 uwsgi_pass uwsgi的ip与端口; } 命令 启动 systemctl start nginx 停止 systemctl stop nginx 重启 systemctl restart nginx

    7.部署过程中遇到的问题及解决办法

    当启动nginx时报错,

    Starting nginx: [emerg]: bind() to IP failed (99: Cannot assign requested address)

    解决办法:

    在/etc/sysctl.conf文件中加入

    # allow processes to bind to the non-local address # (necessary for apache/nginx in Amazon EC2) net.ipv4.ip_nonlocal_bind = 1

    服务启动成功但查看端口不存在

    查看已开启端口 netstat -anp  关闭防火墙,并修改 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld

     

    添加端口 firewall-cmd --add-port= 端口 /tcp --permanent 重载入添加的端口: firewall-cmd --reload 查询指定端口是否开启成功: firewall-cmd --query-port= 端口 /tcp

     

    最新回复(0)