Nginx与uWSGI搭建Django应用程序

前言

之前帮女朋友做的一个 ‘享忆’ (大学生二手交易平台),都是在本地演示,显的有点low,刚好之前在Google Cloud Platform有注册,就准备把 ‘享忆’放到我的服务器上(网站点这里).主要利用到的技术就是Nginx和uWSGI.

Nginx

这里就不介绍什么是Nginx了,随便谷歌一篇文章都比我解释的清楚,省的在关公面前耍大刀。主要就是记录一下整体的过程和遇到的问题。

配置

  1. 安装
  2. 安装完成后,找到nginx的安装目录,nginx默认配置文件是nginx.conf。
  3. cat nginx.conf, 应该可以看到类似以下内容(根据nginx的安装目录不同):
 include /etc/nginx/conf.d/*.conf;
 include /etc/nginx/sites-enabled/*;

这两段意思是,引入confg.d 目录下的以conf为结尾的文件和sites-enabled下的所有文件。
你也可以其目录,例如 sites-enabled和sites-available目录中都有一个default 配置文件,里面已经配置好了许多东西。
因为之后我可能会将我的博客也放到服务器上,所以我需要为应用程序单独配置,所以我将sites-available目录中的default文件复制一份到conf.d中(注意文件结尾).并修改一下内容:

server{
    ...
    root your project path
    ...
}

修改root 后半段为你的前端目录路径,修改完成后保存,nginx 会帮你解析静态文件。

uWSGI

1. 安装   `sudo pip install uwsgi`

2. 确保你的django 后台程序能够运行, `python manage.py runserver`

3.  在你的后台目录中新建 uwsgi.ini 文件,输入以下内容(注意修改相关内容)
[uwsgi]
socket = 127.0.0.1:9090 # (监听的地址)
chdir= your backend project path
module=填写你django后台的wsgi文件 # (例如 xx.wsgi)
master = true         
processes=2
threads=2
max-requests=2000
chmod-socket=664
vacuum=true
daemonize = your backend project path/uwsgi.log
4. 再次打开刚才nginx的配置文件,修改以下内容:
server{
    ...
    location /api/ {
        include /etc/nginx/uwsgin_params;
        uwsgi_pass 127.0.0.1:9090;
    }
    ...
}

这里配置这么多的东西,主要是为了让 nginx当检测到路由中有api/(我后台的接口是http:// xxx.xxx.xxx/api/xxx)就将流量通过uwsgi 转发到django 应用程序 ,让django程序处理。
这样就完成了对一套完整的应用程序的处理:静态文件让nginx处理, 静态文件访问后台api, 通过uwsgi转发,让django处理。

遇到的问题和需要注意的地方

  1. 我的前台/后台文件都放在github上,我配置了ssh key,但是在我git push的时候,出现这样的情况:
Can't finish GitHub sharing process

Successfully created project 'Test' on GitHub, but initial commit failed:
*** Please tell me who you are. Run git config --global user.email "[email protected]" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: empty ident name (for (null)>) not allowed during executing git -c core.quotepath=false commit -m "Initial commit" --

意思是让你配置好你的用户名和邮箱。我尝试通过命令

git config --global user.email "[email protected]"  
git config --global user.name "Your Name"

但是没有效果,我就直接修改项目目录下.git(隐藏目录)中的config文件

[user]
    name = XXX(自己的名称)
    email = XXXX(邮箱)
  1. 我的系统是Debian, 数据库是mysql, 当我用普通用户连接数据库时,连接不上,只有root用户才可以,网上找到相关方法点这里

  2. 每次修改完nginx 的配置文件后,需要执行以下命令,让配置文件重新生效

(sudo) nginx -s reload / sudo systemctl reload nginx

你可能感兴趣的:(平台开发,Nginx)