centos7 部署web项目步骤记录

本文详细介绍了在CentOS7环境下如何使用yum安装pip,创建虚拟环境,以及安装和配置uwsgi和nginx,实现Python Web项目的部署。同时,文章还提供了解决静态文件管理问题的方法。

1,centos7下使用yum安装pip

首先安装epel扩展源:

  yum -y install epel-release

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

  yum -y install python-pip

  安装完成之后清除cache:

  yum clean all

这是在root用户时使用的命令,当前用户如果不具有root权限,加上sudo。

如果pip install 出现问题可以试试命令

pip install setuptools==33.1.1

2,创建虚拟环境

  • 优点

    • 使不同的应用开发环境独立

    • 环境升级不影响其他应用,也不会影响全局的python环境

    • 它可以防止系统出现包管理混乱和版本的冲突

  • 安装

  • pip install virtualenv

     

  • 创建虚拟环境

  • virtualenv testvir // 虚拟环境目录
  • 启动虚拟环境

  • cd testvir
    source ./bin/activate
    
    

     

  • 退出虚拟环境

  • deactivate
  • 安装uwsgi

  •  

    pip install uwsgi

    在项目目录中新建一个test.py

     
    python2写法:
    # test.py (我用的是python2)
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return "Hello World"
    
    python3写法:
    # test.py
    def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return [b"Hello World"]
    

    运行测试:

  • sudo uwsgi --http 0.0.0.0:8000 --wsgi-file test.py

    此时在浏览器中访问问  http://ip:8000 页面返回:Hello word! 表明成功安装uwsgi。且工作正常。

  •  

  • 项目目录下新建uwsgi.ini

  • [uwsgi]
    
    # Django-related settings
    
    # 对外提供http服务的端口,用于和nginx进行数据交互的端口,使用nginx连接的时候使用socket
    socket = :8080
    
    # 直接做web服务器使用http
    ;http = :8080
    
    # Django项目根目录 (绝对路径)
    chdir           = /opt/HelloWord_xadmin_v4
    
    # wsgi.py文件在项目中的位置
    module          = HelloWord.wsgi
    
    # process-related settings
    # master
    master          = true
    
    # 运行的进程数
    processes       = 4
    
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
    
    # 后台运行,并输出日志
    daemonize = /var/log/uwsgi.log
    

     

  • 安装nginx

  • 官网下载 
    直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html 
    使用wget命令下载

  • wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
    tar -zxvf nginx-1.10.1.tar.gz
    cd nginx-1.10.1
    ./configure

    编译安装

  • make
    make install

    查找安装路径:

  • whereis nginx

    将安装路径添加到环境变量

  • vim ~/.bashrc

    在末尾加上一句,路径即whereis找到的路径

  • export PATH=$PATH:/usr/local/nginx/sbin/

    保存退出

  • source ~/.bashrc
    

    然后可以直接使用命令启动和停止nginx

  • # 启动nginx
    nginx
    
    # 停止
    nginx -s stop
    
    # 重启
    nginx -s reload
    
    # 等待nginx进程处理任务结束后停止
    nginx -s quit
    
    # 相当于是先查出nginx的进程id,然后使用kill命令强制杀掉进程

    nginx在服务器上的默认端口是:80

  • 寻找nginx的配置文件并打开

  • find / -name nginx.conf
    
    vim /usr/local/nginx/conf/nginx.conf

     

  • 配置nginx.conf主要配置server部分,跟uwsgi是配套的,要统一一些东西。

  • server {
            # nginx默认端口是80端口,监听80端口
            listen       80;
            server_name  localhost;
    
            charset UTF-8;
            # nginx的访问日志请求日志
            access_log  /var/log/access.log;
            # nginx的错误日志
            error_log /var/log/error.log;
    
            location / {
                #root   html;
                #index  index.html index.htm;
                include uwsgi_params;
                    # 同uwsgi内容,同nginx的socket配置,端口一定要一致,这里就完成了反向代理
                    # 访问nginx服务器ip地址的时候,默认80端口,然后从nginx请求uwsgi的8080端口
                    uwsgi_pass 127.0.0.1:8080;
                    # 链接超时时间
                    uwsgi_read_timeout 30;
                    client_max_body_size 1000m;
            }
    
            location /static/ {
                    autoindex on;
                    # 修改的是这个地方,这个地方配置的是静态文件的绝对路径
                    alias /opt/collectedstatic/static/;
            }
    
            #location / {
               # include uwsgi_params;
                #    uwsgi_pass 127.0.0.1:8080;
                #root /home/collectedstatic;
                #uwsgi_param UWSGI_SCRIPT demosite.wsgi;
                #uwsgi_param UWSGI_CHDIR /demosite;
                #root   html;
                #index  index.html index.htm;
                #client_max_body_size 35m;
           # }
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }

    至此就完成了反向代理! 

  • 启动项目:

  • # 注意uwsgi.ini的路径,我这里是当前路径下执行的,还要注意nginx的路径我这里是下面的路径
    uwsgi --ini ./uwsgi.ini & /usr/local/nginx-1.5.6/sbin/nginx 

    拓展:

  • 杀死进程:

  • # 如启动了多个进程,有多个进程id,都是nginx或者uwsgi
    # 查看占用端口的进程
    lsof -i :8080
    lsof -i :80
    
    # 杀死进程
    kill -9 <进程id>
    
    # 一下杀死
    killall -9 nginx
    killall -9 uwsgi

    重启nginx配置

  • 使用命令nginx -s reload命令重启让配置文件生效
    
    reload命令会重新加载配置文件,nginx服务不会中断
    

    解决 django 多 app 静态文件的问题

    # 在 django 程序的 settings.py 文件中添加以下内容:
    
    
    
    STATIC_ROOT = os.path.join(BASE_DIR, "../collectedstatic/static")
    
    # 然后通过执行该命令,将静态文件整合到一个目录中
    
    
    [root@zhangjun.xue $]python manage.py collectstatic
    
     此时会发现在配置的路径下(即BASE_DIR)同级的目录下多了一个目录(即collectedstatic),所有 app 的静态文件都整合在里面了,此处注意collectedstatic文件的访问权限:chmod -R 777 collectedstatic 递归修改该目录以及其下所有文件的权限
  • 然后需要修改 nginx 配置文件中 指向 django 静态目录的配置文件

  • server {
            # nginx默认端口是80端口,监听80端口
            listen       80;
            server_name  localhost;
    
            charset UTF-8;
            # nginx的访问日志请求日志
            access_log  /var/log/access.log;
            # nginx的错误日志
            error_log /var/log/error.log;
    
            location / {
                #root   html;
                #index  index.html index.htm;
                include uwsgi_params;
                    # 同uwsgi内容,同nginx的socket配置,端口一定要一致,这里就完成了反向代理
                    # 访问nginx服务器ip地址的时候,默认80端口,然后从nginx请求uwsgi的8080端口
                    uwsgi_pass 127.0.0.1:8080;
                    # 链接超时时间
                    uwsgi_read_timeout 30;
                    client_max_body_size 1000m;
            }
    
            location /static/ {
                    autoindex on;
                    # 修改的是这个地方,这个地方配置的是静态文件的绝对路径
                    alias /opt/collectedstatic/static/;
            }
    
            #location / {
               # include uwsgi_params;
                #    uwsgi_pass 127.0.0.1:8080;
                #root /home/collectedstatic;
                #uwsgi_param UWSGI_SCRIPT demosite.wsgi;
                #uwsgi_param UWSGI_CHDIR /demosite;
                #root   html;
                #index  index.html index.htm;
                #client_max_body_size 35m;
           # }
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
     
  • 待续

  • 配置nginx解析静态文件(未测试通过)

  • https://blog.youkuaiyun.com/weixin_39198406/article/details/79277580
    
    https://www.cnblogs.com/CongZhang/p/6548529.html
    
    https://blog.youkuaiyun.com/baidu_35085676/article/details/77160040
    
    https://blog.youkuaiyun.com/qq_38111600/article/details/79785562
    
    https://blog.youkuaiyun.com/qq_24861509/article/details/45727983
    
    https://blog.youkuaiyun.com/tyt_XiaoTao/article/details/80209933
    
    https://blog.youkuaiyun.com/eightbrother888/article/details/79503716
    
    https://blog.youkuaiyun.com/c465869935/article/details/53242126
    
    https://blog.youkuaiyun.com/SL_World/article/details/89713329
    
    https://blog.youkuaiyun.com/bysjlwdx/article/details/80859509
    
    https://blog.youkuaiyun.com/qq_35531549/article/details/86600406
    
    http://projectsedu.com/
    
    # 综合
    http://www.liujiangblog.com/course/django/181
    
    https://code.ziqiangxuetang.com/django/django-template2.html

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值