CentOS7 Django项目服务器搭建(局域网内访问)

刚开始接触Django开发,这篇文章由个人经验总结以及借鉴互联网资料而成,若有错误欢迎指正

操作步骤(默认主机接入路由器并可上网,部分操作需要root权限):

    1. CentOS7系统
    2. wget&换源
    3. ifconfig
    4. vim
    5. 配置网络
    6. python&pip换源
    7. virtualenv&创建环境
    8. uwsgi
    9. (virtualenv)uwsgi
    10. (virtualenv)django
    11. (virtualenv)上传代码
    12. (virtualenv)配置uwsgi
    13. 安装配置nginx
    14. 启动项目&放行端口(防火墙)

步骤1:安装CentOS 7系统

下载镜像,制作启动U盘,安装

安装时可能遇到的问题:

        问题1:报错“has invalid signature , you need to load the kernel first”
          解决办法:
        1. 进入主板BIOS
        2. 关闭SecureBoot
        3. 保存重启
        4. 安装系统

问题2:报错”starting dracut initqueue hook“

          解决办法:
        1. 在启动引导界面(Install CentOS 7...)按 e 编辑开机选项
        2. 查看U盘路径,将”linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet“更改为”linuxefi /images/pxeboot/vmlinuz linux dd nomodeset quiet“,完成后按 ctrl + x ,得到U盘路径”scd4 vfat CentOS\x207\x20x86_64“
        3. 重启,在启动引导界面(Install CentOS 7...)按 e 编辑开机选项
        4. 修改安装位置,将”linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet“更改为”linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:/dev/sdc4 quiet“,完成后按 ctrl + x 进入安装界面
        5. 安装系统

步骤2:安装wget并更换国内源

安装:yum install wget -y

换源:

      1. 切入CentOS-Base.repo所在目录,cd  /etc/yum.repos.d
      2. 将CentOS-Base.repo改名成CentOS-Base.repo.bak,mv CentOS-Base.repo CentOS-Base.repo.bak
      3. 更换源文件(阿里云),使用 wget -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/Centos-7.repo 或 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/Centos-7.repo(当无法使用yum下载wget及其他工具包时)
      4. 切入CentOS-Base.repo所在目录,cd  /etc/yum.repos.d
      5. 清除缓存,yum clean all
      6. 重新生成缓存,yum makecache
      7. 更新最新源设置,yum update -y

步骤3:安装ifconfig(查看本机网络信息也可以使用 ip addr)

    1. 查看需要安装的软件包,yum search ifconfig

    2. 安装软件包,yum install net-tools.x86_64

步骤4:安装vim

安装:yum -y install vim*

配置:

      1. 打开配置文件,vim /etc/vimrc
      2. 在配置文件末尾增加
        1. set nu                "显示行号
        2. set showmode  "在命令行界面最下面显示当前模式等
        3. set ruler            "在右下角显示光标所在的行数等信息
        4. set autoindent  "每次单击Enter键后光标移动到下一行时与上一行的起始字符对齐
        5. syntax on          "语法检测,编辑脚本时关键字会用特殊颜色显示
      3. 保存文件,按先按Esc,再输入 :wq ,回车

步骤5:配置网络(静态IP)

    1. 查看当前局域网信息,选择一个未使用的IP地址,避免IP地址冲突
    2. 打开网卡配置文件,vim /etc/sysconfig/network-scripts/ifcfg-ens33
    3. 编辑配置文件
      1. BOOTPROTO=static               #使用静态IP地址,默认为dhcp

      2. ONBOOT=yes                        #设置网卡启动方式为开机启动

      3. IPADDR=192.168.1.20           #设置的静态IP地址

      4. NETMASK=255.255.255.0     #子网掩码

      5. GATEWAY=192.168.1.1          #网关地址

      6. DNS1=223.5.5.5                    #DNS服务器(按需设置)

      7. DNS2=114.114.114.114        #DNS服务器(按需设置)
    4. 保存文件,按先按Esc,再输入 :wq ,回车
    5. 重启网络服务,service network restart
    6. 测试连接

步骤6:安装python并更换国内源(python版本以项目为准)

安装python:

      1.  更新系统软件包,yum update -y
      2. 安装软件管理包和可能使用的依赖
        1. yum -y groupinstall "Development tools"

        2. yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel

      3. 下载Pyhton3到/usr/local 目录
        1. cd /usr/local

        2. wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz(下载速度不稳定时快时慢,建议使用华为镜像: https://repo.huaweicloud.com/python/3.9.6/Python-3.9.6.tgz)

      4. 解压,tar -zxvf Python-3.9.6.tgz
      5. 进入Python-3.9.6路径,cd Python-3.9.6
      6. 编译安装到指定路径,./configure --prefix=/usr/local/python3
      7. 安装python3
        1. make
        2. make install
      8. 给python3建立软链接,ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3
      9. 给pip3建立软链接,ln -s /usr/local/python3/bin/pip3.9 /usr/bin/pip3
      10. 查看python3和pip3安装情况
        1. python3
        2. pip3 -V

换源:pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/

步骤7:安装virtualenv并创建虚拟环境

安装virtualenv:

      1. pip3 install virtualenv
      2. 建立软链接,ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

创建虚拟环境:

      1. 创建安装目录,mkdir -p /data/env
      2. 切换到/data/env/下,创建指定版本的虚拟环境,virtualenv --python=/usr/bin/python3 pyweb
      3. 切换到/data/env/pyweb/bin下,启动虚拟环境,source activate
      4. 换源,pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/

步骤8:在主机上安装uwsgi

      安装uwsgi:

      1. pip3 install uwsgi

      2. 给uwsgi建立软链接,ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

步骤9:在虚拟环境上安装uwsgi(同主机安装)

注意切换到虚拟环境

步骤10:在虚拟环境上安装django(django版本以项目为准)

注意切换到虚拟环境

安装django:pip3 install django(pip3 install django==4.2.5) 

步骤11:在虚拟环境上传代码(将源码打包成压缩文件上传)

    1. 创建代码存放路径,mkdir -p /data/wwwroot
    2. 解压,unzip meslite.zip
    3. 切换到项目目录,cd /data/wwwroot/meslite
    4. 测试django运行,python3 manage.py runserver

项目运行时可能出现的问题:

问题:报错“django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3”

解决办法:使用第三方包运行SQLite,把sqlite3 更换为pysqlite3 和 pysqlite3-binary

          1. 安装pysqlite3,pip install pysqlite3
          2. 安装pysqlite3-binary,pip install pysqlite3-binary
          3. 打开文件/data/env/pyweb/lib/python3.9/site-packages/django/db/backends/sqlite3/base.py,注释“from sqlite3 import dbapi2 as Database”并在下面添加“from pysqlite3 import dbapi2 as Database”
          4. 保存文件,按先按Esc,再输入 :wq ,回车

步骤12:在虚拟环境配置uwsgi文件

在项目根目录下创建在项目根目录下创建meslite.xml文件,输入如下内容:(注意<module>里的meslite,为wsgi.py所在的目录名)

<uwsgi>    
   <socket>127.0.0.1:8997</socket> <!-- 内部端口,自定义 --> 
   <chdir>/data/wwwroot/meslite/</chdir> <!-- 项目路径 -->            
   <module>meslite.wsgi</module>  <!-- meslite为wsgi.py所在目录名--> 
   <processes>4</processes> <!-- 进程数 -->     
   <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

查看uwsgi状态:ps -ef| grep uwsgi

启动uwsgi:uwsgi -x meslite.xml

停止uwsgi:killall -9 uwsgi

步骤13:主机安装配置nginx

安装nginx:

      1. 进入home目录,cd /home
      2. 下载nginx,wget http://nginx.org/download/nginx-1.13.7.tar.gz
      3. 解压,tar -zxvf nginx-1.13.7.tar.gz
      4. 进入解压后的文件夹,cd nginx-1.13.7
      5. 执行安装命令
        1. ./configure

        2. make
        3. make install

配置nginx:

      1. 进入nginx配置文件夹,cd /usr/local/nginx/conf
      2. 先备份一下nginx.conf文件以防意外,cp nginx.conf nginx.conf.bak
      3. 写入配置文件

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server {
        listen 80;
        server_name  127.0.0.1:80; #改为自己的域名,没域名修改为127.0.0.1:80
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8997;  #端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT meslite.wsgi;  #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /data/wwwroot/meslite/; #项目路径
        }
        location /static/ {
           alias /data/wwwroot/meslite/monitor/static/; #静态资源路径
        }
    }

}

检查nginx配置文件:进入/usr/local/nginx/sbin/,执行./nginx -t命令先检查配置文件是否有错

启动nginx:./nginx

查看nginx:ps -ef | grep nginx

关闭nginx :kill -9 进程号

停止 nginx : ./nginx -s stop

重启nginx:./nginx -s reload

步骤14:启动项目并放行端口(防火墙)

启动项目:

      1. 切换到虚拟环境路径,cd /data/env/pyweb/bin
      2. 进入虚拟环境,source activate
      3. 切换到项目路径,cd /data/wwwroot/meslite
      4. 启动uwsgi,uwsgi -x meslite.xml
      5. 切换到nginx路径,cd /usr/local/nginx/sbin
      6. 启动nginx,./nginx

放行端口:有些服务器外网默认是无法访问的,因为防火墙不允许,所以要开启防火墙,让其可以访问需要访问的端口号

看zone名称:firewall-cmd --get-active-zones

打开端口(以80端口为例):firewall-cmd --zone=public --add-port=80/tcp --permanent

查看端口(以80端口为例):firewall-cmd --query-port=80/tcp

重启防火墙:firewall-cmd --reload

posted @ 2024-01-20 23:20  四十四  阅读(80)  评论(0)    收藏  举报