centos部署django项目的详细总结

前期准备

yum groupinstall 'Development Tools'
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel

一、pyen安装

一键安装环境:

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

国内镜像
wget http://mirrors.sohu.com/python/3.6.2/Python-3.6.2.tar.xz -P ~/.pyenv/cache/;pyenv install 3.6.2
  • 切换版本 pyenv global
  • 切换python shell版本 pyenv shell

二、MySQL 安装设置

#yum install mysql
#yum install mysql-server
#yum install mysql-devel

mysql-server 安装失败,可以使用mariadb 代替

# yum install mariadb-server mariadb 

相关的命令:

mariadb数据库的相关命令是:

systemctl start mariadb  #启动MariaDB

systemctl stop mariadb  #停止MariaDB

systemctl restart mariadb  #重启MariaDB

systemctl enable mariadb  #设置开机启动

修改root密码

  • 以root身份在终端登陆,必须

  • 输入 mysqladmin -u root -p password root
    后面的 root 是要设置的密码

  • 回车后出现 Enter password
    输入就密码,如果没有,直接回车

创建用户

//创建用户
mysql> insert into mysql.user(Host,User,Password) values("localhost","admin",password("admin"));
//刷新系统权限表
mysql>flush privileges;

这样就创建了一个名为:admin 密码为:admin 的用户。

创建数据库(在root权限下)

create database mydb;
//授权admin用户拥有mydb数据库的所有权限。
>grant all privileges on mydb.* to admin@localhost identified by 'admin';
//刷新系统权限表
mysql>flush privileges;

三、Nginx 安装配置

官网下载

  • 直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html

  • 使用wget命令下载(推荐)。

wget -c https://nginx.org/download/nginx*.tar.gz *替换具体的版本

解压

依然是直接命令:

tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1

配置

其实在 nginx-1.10.1 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。

  • 使用默认配置
./configure

编译安装

make
make install

查找安装路径:

whereis nginx

启动、停止nginx

cd /usr/local/nginx/sbin/
./nginx 
./nginx -s stop
./nginx -s quit
./nginx -s reload
  • ./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。

  • ./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

查询nginx进程:

ps aux|grep nginx

重启 nginx

  • 先停止再启动(推荐):
    对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:
./nginx -s quit
./nginx
  • 重新加载配置文件:

当 ngin x的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 ngin x再启动 nginx 即可将配置信息在 nginx 中生效,如下:

./nginx -s reload

开机自启动

即在rc.local增加启动代码就可以了。

vi /etc/rc.local

增加一行 /usr/local/nginx/sbin/nginx
设置执行权限:

chmod 755 rc.local

最终nginx配置文件:

server {
  listen 8080;  #启动的nginx进程监听请求的端口
  server_name localhost;  #域名
  error_log /var/log/xxx/error.log;   #nginx错误日志,可自行设置,但必须保证提前建立好该目录和文件
  location / {
    include /path/nginx/uwsgi_params;  
    uwsgi_pass 127.0.0.1:9090;  #对于动态请求,转发到本机的9090端口,也就是uwsgi监听的端口
  }
  #error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;  
  location = /50x.html {
     root /usr/share/nginx/html;
  }
  location /static/ {
    alias /var/www/xxx/static/;   #设定静态文件所在目录
  }
  location /media/ {  
    alias /var/www/xxx/media/;    #同样自行设置,要保证目录已经建好
  }
}

四、使用uwsgi提供服务

  • 安装uwsgi
sudo pip install uwsgi
  • 启动uwsgi

切换到项目目录下,会有 proj_name/wsgi.py 文件,执行一下命令:

uwsgi --http :8080 --module your_proj_name.wsgi

就可以运行你的web项目了,这时如果在浏览其中输入127.0.0.1:8080 能够成功访问,说明你的应用服务器部署成功,已经可以对外提供服务。

这种提供服务的方式可以表示为:

the web client <-> uWSGI <-> Django

多数情况下我们不会让浏览器直接与uwsgi交互,而是加入nginx作为中间设备转发或处理请求。

后面介绍只用配置文件启动,可以后台运行
配置在项目目录新建配置文件 uwsgi_config.ini,内容如下:

[uwsgi]
socket = 127.0.0.1:8080
workers = 4
chdir = /root/www/Shop_Coupon
touch-reload = /root/www/Shop_Coupon
py-auto-reload = 1
module= shop_coupon.wsgi
pidfile = /var/run/uwsgi.pid
daemonize = /var/log/uwsgi.log

然后执行命令:

uwsgi --ini mysite_uwsgi.ini # the --ini option is used to specify a file

更加详细的可以参考:http://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/tutorials/Django_and_nginx.html