nginx+uwsgi部署django程序
系统环境
系统 Centos 7.3 //debian系列,如ubuntu等也可借鉴次方法 本应用使用80端口,也可以自定义端口 如果不是root用户而是sudo用户,有些命令前需要加sudo netstat -lnp | grep 80 // 查看80端口是否被使用,确保80端口不被占用,一个程序只能拥有一个端口 service iptables status // 查看防火墙状态,确保其关闭、或者开放80端口 getenforce //确保selinux关闭,selinux类似防火墙
安装nginx
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7
chkconfig nginx on # 设置开机启动项 浏览器输入: 公网ip或域名, 如果看到nginx欢迎页面nginx安装成
安装mysql
因为mysql数据库在Linux上实在是太流行了,所以目前下载的主流Linux系统版本基本上都集成了mysql数据库在里面,但是版本可能较老 我们卸载它重新安装,Centos7默认安装了mysql的免费版mariadb rpm -qa | grep mariadb// 这个命令就会查看该操作系统上是否已经安装了mariadb数据库 rpm -e --nodeps `rpm -qa | grep mariadb`// mysql有依赖包,普通模式无法删除;nodeps为强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除 yum install -y mariadb-server mariadb //安装mysql,mysql-server是服务端,mysql是客户端,mysql-devel是依赖包
rpm -qi mariadb-server //查看刚安装好的mysql-server的版本,但并不是mysql官网的最新版本 service mysqld start
//启动mysql ps -ef | grep mysql //如果出现3行mysql相关信息说明启动成功;默认端口是3306,建议通过/etc/my.cnf修改,改后service mysqld restart
chkconfig mariadb on //设置nginx为开机启动项
mysqladmin -u root password 'root' //为mysql程序设置密码,这里设置为root
mysql -u root -p //进入mysql程序 grant all on *.* to root identified by 'root';
//设置root用户可远程连接 通过navicat新建一个数据库
配置虚拟环境
yum install python-setuptools python-devel # 安装virtualenvwrapper pip install virtualenvwrapper //mkvirtualenv自动加入环境变量 # 编辑~/.bashrc文件 export WORKON_HOME=$HOME/.virtualenvs source /usr/bin/virtualenvwrapper.sh source ~/.bashrc # 重新加载.bashrc文件 mkvirtualenv //有提示则安装成功
部署
# 新建虚拟环境 mkvirtualenv myenv # 安装pip包 workon myenv //进入到项目的虚拟环境 pip freeze > requirements.txt //把pip安装的依赖包导出 # 把数据库同步到服务器的mysql下的mxonline库 pip install -r requirements.txt # 脚本启动Django python manage.py runserver 0.0.0.0:8000 //脚本方式直接启动 # uwsgi启动Django cd Project pip install uwsgi uwsgi --http :8000 --module Project.wsgi //启动后,页面能访问则测试成功,继续下一步,利用nginx开启静态缓存和端口转发等,这里不再介绍,配置nginx即可
谢谢