- A+
其实写过很多个教程,在本地也好,在博客也好,很多人容易搞错,乱七八糟的问题,各种bug,可能一个符号的出错,一个字母的出错,都能让你绝望很久。
所以重新再写个简单一点的教程。
注:本教程可能会出现权限问题
系统包含如下
教程分类
- 系统更新
- 安装虚拟环境
- 创建项目
- 安装uwsgi与配置
- 安装nginx与配置
- 最后处理
系统更新
- sudo apt-get update
- sudo apt-get upgrade
安装虚拟环境
安装pip3
- sudo apt-get install python3-pip
安装virtualenv和virtualenvwrapper,关于virtualenv和virtualenvwrapper相关介绍可自行百度了解。这里不展开说明。
- sudo pip3 install virtualenv virtualenvwrapper
- echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
- echo "export WORKON_HOME=~/Env" >> ~/.bashrc
- echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
- //提供shell初始化脚本
- source ~/.bashrc
切记不要一下子复制。别偷懒,中文内容不需要放入,如果你没有在服务器中创建其他的用户
创建项目
创建虚拟环境mysite, 查看root/Env/ 目录下多了一个mysite文件夹,后期当前网站的配置文件都将在此文件夹中。
- mkvirtualenv mysite
指定安装django版本1.11.7
- pip install django ==1.11.7
在当前目录下创建示例项目
- cd ~
- django-admin.py startproject firstsite
cd ~ 是指进入当前用户的目录下,我们使用的是root,所以会在root文件下创建firstsite文件夹
因下面的内容不需要服务的主要内容,所以快速带过。
- cd ~/firstsite //进入项目目录
- ./manage.py migrate //创建数据库,db.sqlite3
- ./manage.py createsuperuser //创建管理员
- vi firstsite/settings.py //配置静态文件
- STATIC_ROOT = os.path.join(BASE_DIR, "static/") //增加此内容到settings.py文件中
- ./manage.py collectstatic //收集静态文件
- ./manage.py runserver 0.0.0.0:8080 //启动服务
退出虚拟环境
- deactivate //退出虚拟环境
- workon firstsite //进入虚拟环境
安装本地的pip配置环境
- //本地操作
- pip freeze #查看项目的配置环境
- pip freeze > requirements.txt #将项目的配置环境导出至requirements.txt中
- //服务器操作
- cd //进入到requirements.txt文件的目录下
- pip install -r requirements.txt # 安装原项目的环境配置
安装uwsgi
在安装uwsgi之前,需要先安装依赖
- sudo apt-get install python3-dev
- sudo pip3 install uwsgi
创建uwsgi配置文件
为了后期的方便管理,在/etc/uwsgi/目录下创建sites文件夹
- sudo mkdir -p /etc/uwsgi/sites //创建sites文件夹
- cd /etc/uwsgi/sites //进入此文件夹
通过linux自带的编辑器,创建配置文件
- sudo vi firstsite.ini
配置内容如下
- [uwsgi]
- project = firstsite
- base = /root
- chdir = %(base)/%(project)
- home = %(base)/Env/%(project)
- module = %(project).wsgi:application
- master = true
- processes = 5
- socket = %(base)/%(project)/%(project).sock
- chmod-socket = 664
- vacuum = true
在内容输入后,按下Esc键后输入下面的命令保存并退出文件。
- :wq //请注意是英文状态
为了方便懒人直接复制上述内容,在下面拷贝一份做说明,请注意在复制的时候,可能[uwsgi]是不完整,切记不要犯这个低级错误
- [uwsgi]
- project = firstsite //项目名称
- base = /root //用户主目录
- chdir = %(base)/%(project) //项目地址
- home = %(base)/Env/%(project) //项目环境
- module = %(project).wsgi:application //
- master = true
- processes = 5 //项目进程数
- socket = %(base)/%(project)/%(project).sock //Unix套接字地址
- chmod-socket = 664 //设置套接字权限
- vacuum = true //项目停止自动清理
创建自启动脚本
在etc/init/目录下创建uwsgi.conf 文件用于自启动服务
- sudo vi /etc/init/uwsgi.conf
自启动服务内容包含
- description "uWSGI application server in Emperor mode"
- start on runlevel [2345]
- stop on runlevel [!2345]
- setuid root
- setgid www-data
- exec /usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
- 服务内容描述
- 启动级别
- 停止权限
- 运行的用户名
- 运行的组
- 在Emperor模式下启动uWSGI并传入我们存储配置文件的目录。
安装nginx
- sudo apt-get install nginx
创建nginx配置文件
- sudo vi /etc/nginx/sites-available/firstsite
配置内容
- server {
- listen 80;
- server_name firstsite.com www.firstsite.com;
- location /static/ {
- root /root/firstsite;
- }
- location / {
- include uwsgi_params;
- uwsgi_pass unix:/root/firstsite/firstsite.sock;
- }
- }
注释版:
- server {
- listen 80; //端口
- server_name firstsite.com www.firstsite.com; //绑定的域名,多个域名中间空格隔开
- location /static/ {
- root /root/firstsite; //静态文件的地址
- }
- location / {
- include uwsgi_params;
- uwsgi_pass unix:/root/firstsite/firstsite.sock; //套接字位置
- }
- }
nginx配置文件语法检测
- sudo service nginx configtest
最后处理
软连接sites-enabled目录
- sudo ln -s /etc/nginx/sites-available/firstsite /etc/nginx/sites-enabled
重启nginx
- sudo service nginx restart
启动uwsgi
- sudo service uwsgi start
扩展阅读
- #cat 的用途是查看
- cat /var/log/nginx/access.log #网站日志
- cat /var/log/nginx/error.log #系统日志
- sudo service nginx start //启动nginx
- sudo service nginx stop //停止nginx
- sudo service uwsgi restart //重启restart
- sudo service uwsgi stop //停止uwsgi