Ubuntu+Nginx+uwsgi+python 腾讯云服务器开发常用命令与报错解决
ubuntu切换用户:sudo -i -u rootlinux文件处理命令:mkdir newFolder创建文件夹(目录)rmdir newFolder删除文件夹(目录)touch aa.txt创建文件rm aa.txt删除文件rm -r newFolder删除带有文件的文件夹(目录)检查uwsgi有无启动:ps -ef |grep -i uwsgiuwsgi挂载:启动:uwsgi -d --i
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安装
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文件无法传输或传输过慢
- 原因:
使用xshell登录时用的别的账号然后中途切换成root,这样使用xftp的时候会默认使用第一次登录的账号,所以xftp使用的不是root账号,传输权限较低。我们只需要使用root账户登录,或者是使用你切换的用户登录xshell,或是xftp就可以上传文件。要保持两者的一致性。
参考 - 更改文件夹权限(服务器上创建同名文件夹,然后用覆盖的方式上传):
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 www
为user 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)
,即一些静态文件没加载出来。
问题解决参考:链接
更多推荐
所有评论(0)