esc服务器部署项目后403,python+nginx+uwsgi部署云主机遇到的问题

问题后期会有次序的整理,目前整理一小部分

1.部署之后出现403问题。

403权限问题的修改:

(1)打开nginx.conf文件

vim /etc/nginx/nginx.conf

(2)按键盘“i”进入编辑模式,修改第一行为

user root;

(3)按键盘“esc”退出键,输入:wq,保存并推出。

(4)查看80端口占用pid值

lsof -i tcp:80

e860823dbdb1efdbe470385ea3ad2244.png

(5)杀死pid=14012的进程

kill 14012

(6)启动nginx

sudo /usr/sbin/nginx

查看页面是否显示正常

2.uwsgi的理解及简单使用?

(1)简单运用-利用文件启动

新建uwsgitest.py的文件(python3+写法)

def application(env, start_response):

start_response('200 OK', [('Content-Type','text/html')])

return [b"Hello World"]

放置在服务器某个目录下

在该目录运行

uwsgi --http :9090 --wsgi-file uwsgitest.py

f440141fefa8bf3adf64d6f4f702d70b.png

可以看到打出的文字,uwsgi起作用,但是关闭终端后,无法显示。

需要新建uswgi.ini文件,并设定开机启动

uwsgi.ini

[uwsgi]

socket = 127.0.0.1:9090

chdir = /root/projects/

wsgi-file = py_rest/uwsgitest.py

processes = 4

threads = 2

stats = 127.0.0.1:9191

更新ini文件

uwsgi -i /root/projects/py_rest/uwsgi.ini &

(2)django的uwsgi设置

9d0a44581bc9e719d57b96251c0b9394.png

其中,conf目录下2文件和uwsgi_params为必须文件(py_rest/uwsgi.ini和py_uwsgitest.py为上文必须文件)

conf目录下放置本项目nginx和uwsgi配置文件

uc_nginx.conf

upstream django {

# server unix:///path/to/your/mysite/mysite.sock; # for a file socket

server 127.0.0.1:80; # for a web port socket (we'll use this first)

}

server {

listen 80; # 监听端口

server_name xx.xxx.xx.xx; # 填写你的服务器

charset utf-8;

autoindex on;

# 资源限制

client_max_body_size 75M; # adjust to taste

client_header_buffer_size 16k;

# Django media资源

location /media {

alias /root/projects/py_rest/media; # 指向django的media目录

}

# Django static资源

location /static {

alias /root/projects/py_rest/static; # 指向django的static目录

}

# 日志

access_log /root/projects/py_rest/access_log;

error_log /root/projects/py_rest/error_log;

location / {

# A.静态页面

# root /root/projects/py_rest/templates;

# index index index.html urls.py;

# B.django项目

uwsgi_pass 127.0.0.1:8000; #这个和uwsgi中的socket要一致

include uwsgi_params;

# C.其他设置

# autoindex on;

# autoindex_exact_size on;

autoindex_localtime on;

}

}

uwsgi.ini

# py_rest.ini file

[uwsgi]

# Django的项目全路径

chdir = /root/projects/py_rest

# Django's wsgi文件

#module = py_rest.wsgi

wsgi-file = py_rest/wsgi.py

master = true

processes = 10

# socket连接

socket = 127.0.0.1:8000 # 这个和uc_nginx.conf中的uwsgi_pass要一致

vacuum = true # 退出uwsgi是否清理中间文件,包含pid、sock和status文件

procname-prefix-spaced= py_rest # uwsgi的进程名称前缀

py-autoreload=1 # py文件修改,自动加载

# 虚拟环境路径

home = /root/.virtualenvs/testvir3

virtualenv = /root/.virtualenvs/testvir3

# 日志

logto = /tmp/mylog.log

文件上传到服务器上

uswgi_prama(重要,ini文件设置location / {include uwsgi_params;}时需要该文件的路径,如本例所示就要在chdir设置的目录下,也就是   /root/projects/py_rest目录下。如过放到别的路径下,include后面需要给路径

uwsgi_param QUERY_STRING $query_string;

uwsgi_param REQUEST_METHOD $request_method;

uwsgi_param CONTENT_TYPE $content_type;

uwsgi_param CONTENT_LENGTH $content_length;

uwsgi_param REQUEST_URI $request_uri;

uwsgi_param PATH_INFO $document_uri;

uwsgi_param DOCUMENT_ROOT $document_root;

uwsgi_param SERVER_PROTOCOL $server_protocol;

uwsgi_param UWSGI_SCHEME $scheme;

uwsgi_param REMOTE_ADDR $remote_addr;

uwsgi_param REMOTE_PORT $remote_port;

uwsgi_param SERVER_PORT $server_port;

uwsgi_param SERVER_NAME $server_name;

1) conf更新

cd /etc/nginx/conf.d/

rm uc_nginx.conf

sudo ln -s /root/projects/py_rest/conf/nginx/uc_nginx.conf /etc/nginx/conf.d/

lsof -i tcp:80

kill 12344

sudo /usr/sbin/nginx

2) ini更新

uwsgi -i /root/projects/py_rest/conf/uwsgi.ini &

查看页面已经可以刷出

由于设置的是80端口,在浏览器里输入主机ip就可以看到主页内容

不过对静态资源的加载出现问题,需要设置。

3.ImportError: No module named 'MySQLdb'

778b1bf5786d990752919d743ab97cc8.png

解决1:

路径:/root/.virtualenvs/env_rest/lib/python3.5/site-packages/django/db/backends/mysql/base.py

vim /usr/lib/python3.5/site-packages/django/db/backends/mysql/base.py

在from django.utils.safestring import SafeBytest,SafeTest下添加下面两条

import pymysql

pymysql.install_as_MySQLdb()

结果:运行会报错

解决2:

wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz

tar zxf MySQL-python-1.2.3.tar.gz && cd MySQL-python-1.2.3

python2 setup.py build

python2 setup.py install

centos提示ImportError: No module named MySQLdb解决办法:https://lvtao.net/server/645.html

结果

参考文档

5.python3.*报“ImportError: No module named ‘MySQLdb'”:https://www.cnblogs.com/TaleG/p/6735099.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值