ubuntu-djang-nginx-uwsgi开发常用命令

1.背景

个人有个djagno项目准备上线,但是被nginx与uwsgi之间的连接以及.ini和.conf文件配置困扰很久,以下为个人学习时常用的代码,为方便使用,做此记录.
ps:标题中"常用"的意思是以下命令,作者配置时基本都用到了。

2.开发环境

xshell;xftp;ubuntu
nginx-1.1.4
pthon-3.6.9
django-3.2.7

3.常用命令

3.1 ubuntu

sudo -i -u root 切换用户
sudo su 切换为root用户

linux文件处理命令

mkdir newFolder 创建文件夹(目录)
rmdir newFolder 删除文件夹(目录)
touch aa.txt 创建文件
rm aa.txt 删除文件
rm -r newFolder 强制删除带有文件的文件夹(目录)
mv old_name new_name#文件重命名

端口处理:

lsof -i:端口号 查看服务器端口占用情况
kill -9 PID 关闭该端口

比如,kill -9 24194 就可以关闭该端口了

3.2 uwsgi

uwsgi --ini *.uwsgi.ini # 启动
uwsgi --stop /tmp/uwsgi.pid # 停止
uwsgi --reload /tmp/uwsgi.pid # 重载
uwsgi --connect-and-read /tmp/uwsgi.status # 查看状态
检查uwsgi有无启动:ps -ef |grep -i uwsgi

uwsgi挂载:

(要cd到有uwsgi.ini文件下,uwsgi文件需要自己配置)
启动:uwsgi -d --ini uwsgi.ini
关闭:sudo pkill -f uwsgi -9

3.3 nginx相关命令

参考

  • 安装命令:

    sudo apt-get install nginx #安装sudo apt-get install nginx #安装
    启动Nginx:
    /etc/init.d/nginx start #启动 区别于sudo service nginx start (系统nginx,对于含多个nginx系统容易出现问题)
    /etc/init.d/nginx stop #关闭
    /etc/init.d/nginx restart #重启

  • nginx卸载:

    sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。
    sudo apt-get purge nginx nginx-common #(重要) 卸载所有东东,包括删除配置文件。
    sudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。
    sudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包。

  • nginx状态管理与配置路径

    systemctl status nginx.service#查看nginx状态
    sudo service nginx restart #重启nginx
    nginx配置文件目录:/etc/nginx/conf.d
    校验配置文件(语法问题): sudo nginx -t

  • 查看nginx路径:

    whereis nginx
    find / -name nginx

  • 查看nginx进程

    ps -ef | grep nginx(第二个是子进程号)

  • 杀进程

    pkill -9 nginx

    在这里插入图片描述

关于nginx配置文件编写说明

[1].location参数说明

区分:root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~
来源:https://www.nginx.cn/4658.html

[2]Nginx配置中uwsgi_pass和proxy_pass之间的区别?

3.4 ubuntu下Mysql安装

推荐: Ubuntu20.04安装Mysql

3.5 vim基础命令

i 编写模式
Esc键:退出编写模式
:!wq 保存退出
set paste 粘贴

4. 问题

4.1 uwsgi与nginx配置

推荐:Django2.0教程 39.用Nginx+uWSGI部署-哔哩哔哩:https://b23.tv/Ym1cu0

4.2 个人错误

4.1 应该在/etc/nginx/sites-available 和/etc/nginx/sites-enabled添加配置文件,而非修改/etc/nginx/nginx.conf
4.2 将uwsgi.ini里的http属性注释掉或不写
涉及命令:

ps -aux |grep uwsgi #对sites-available进行操作
ln -s /etc/nginx/sites-available/my_object /etc/nginx/sites-enabled#建立软连接s

4.3 xftp文件无法传输或传输过慢

  1. 原因:
    使用xshell登录时用的别的账号然后中途切换成root,这样使用xftp的时候会默认使用第一次登录的账号,所以xftp使用的不是root账号,传输权限较低。我们只需要使用root账户登录,或者是使用你切换的用户登录xshell,或是xftp就可以上传文件。要保持两者的一致性。
    参考
  2. 更改文件夹权限(服务器上创建同名文件夹,然后用覆盖的方式上传):chmod 777 文件夹名字

5. 报错

5.1 启动nginx,chrom返回502 Bad Gateway
查找原因:查看错误日志(默认位置:/var/log/nginx),在my_object_erro.log中记录为

2021/11/18 22:05:08 [error] 18369#18369: *6 open() “/home/ubuntu/my_object/for_team/static/favicon.ico” failed (13: Permission denied), client: 45.83.67.88, server: 106.52.229.18, request: “GET /favicon.ico HTTP/1.1”, host: “106.52.229.18”

查了一下,是权限问题,修改参考

https://www.cnblogs.com/xiaohuiduan/p/9867656.html
要改nginx.conf里面user wwwuser root

5.2 nginx仍然返回502 Bad Gateway,日志报错记录

2021/11/18 22:14:50 [error] 20897#20897: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 125.90.50.108, server: 106.52.229.18, request: “GET /favicon.ico HTTP/1.1”, upstream: “uwsgi://127.0.0.1:3011”, host: “106.52.229.18”, referrer: “http://106.52.229.18/”

看了一下,打开nginx后,没打开uwsgi,因此索引到uwsgi.ini文件目录下输入uwsgi -d --ini uwsgi.ini静态文件就加载成功了.

5.3 虽然加载成功了,但是一些css文件仍然无法很好显示
chrome控制台报错404 (Not Found),即一些静态文件没加载出来。
问题解决参考:链接

Logo

更多推荐