首先需要有一个能运行的django项目.
本文不会从头开始实现如何写一个django项目,而是记录在完成django并且在pycharm测试通过后,如何配置到生产环境的过程.
生产环境搭建如下:
系统:Centos7
数据库:Mysql 8.0
项目配置:Nginx + uWSGI + Django
获取并安装Centos7
- 选择需要的映像文件下载
- 下载并安装UltraISO
- 使用UltraISO 文件-> 打开ISO文件
- 插入U盘(重要数据提前备份)并在UltraISO中 启动 ->写入硬盘映像
至此,安装盘(U盘)制作完成.
安装Centos7
语言随意
选择最小安装
配置网络
-
分区
/boot:256M
/swap:16G
其余空间全分给 /
输入服务器密码,创建新用户
至此系统安装完成.
安装Xshell6远程工具(太简单略)
安装后升级及配置
-
更新Yum
yum update
-
更新组件
yum install -y net-tools setuptool ntsysv iptables system-config-securitylevel-tui system-config-network-tui tree vim
-
更新开发工具
yum groupinstall "Development tools" -y
-
安装依赖包
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel wget -y
安装python3
-
新建下载目录和安装目录并进入下载目录
mkdir /home/download cd /home/download
-
下载python3并解压进入目录
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz tar xf Python-3.6.6.tar.xz cd Python-3.6.6
-
编译安装
./configure --prefix=/usr/local/python3 make && make install
-
创建软连接(python3和pip3)
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
-
pip升级
pip3 install -upgrade pip
-
安装包
pip3 install uwsgi django==1.11 jieba pymysql django-pure-pagination
-
创建uwsgi和django的软连接
ln -s /usr/local/python3/bin/django-admin /usr/bin/ ln -s /usr/local/python3/bin/uwsgi /usr/bin/
安装mysql8.0
-
下载源
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
-
安装并更新缓存
rpm -ivh mysql80-community-release-el7-1.noarch.rpm yum clean all yum makecache
插曲:查看仓库及修改要安装的版本
# 查看仓库
yum repolist all | grep mysql
# 使用 yum-config-manager 命令修改相应的版本为启用状态最新版本为禁用状态
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
# 或者可以编辑 mysql repo文件
cat /etc/yum.repos.d/mysql-community.repo
# 更改相应版本下面的enable为1
-
安装Mysql
yum install mysql-community-server -y
-
重启mysql(必须!)
# 重启 systemctl restart mysqld.service # 关闭 systemctl stop mysqld.service # 启动 systemctl start mysqld.service
-
获取初始密码
cat /var/log/mysqld.log | grep password
-
修改密码及创建新用户
# 修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'; # 刷新 flush privileges; # 创建新用户 CREATE USER 'django'@'192.168.1.132' IDENTIFIED BY 'password'; # 查看权限 SHOW GRANTS FOR 'django'@'192.168.1.132'; # 赋予权限 GRANT EXECUTE,INSERT,SELECT,UPDATE DROP ON *.* TO 'DJANGO'@'192.168.1.132'; # 开启远程登录权限 # 不推荐这样做 # 同样不推荐上面创建新用户来管理,因为要开端口 # 可以使用SSH通道 update user set host = '%' where user = 'root'; flush privileges; alter user 'root'@'%' identified with mysql_native_password by 'password';
-
以下是旧版mysql:
- 登陆并修改密码(旧版mysql使用)
mysql -u root
use mysql;
update user set password=password(‘123456‘) where user=‘root‘;
flush privileges;
exit; - 开启远程连接
mysql -u root -p
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
- 登陆并修改密码(旧版mysql使用)
-
编译安装(如果非要这样的话)
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.12-linux-glibc2.12-x86_64.tar.xz
防火墙开启端口
-
关闭,开启,重启防火墙
# 关闭 service iptables stop # 开启 service iptables start # 重启 service iptables restart
-
增加打开端口
# 编辑配置文件 vim /etc/sysconfig/iptables # 按相应端口新增下面内容 -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
测试并配置uwsgi
把jdango项目上传至指定目录
-
测试django项目
# 注意:要在上面防火墙一步开启相应端口,测试后再关闭 python3 manage.py runserver 192.168.1.132:8080
-
测试uwsgi托管django服务
# 确保出于和manage.py同一层目录 # module后是项目的主名称,也就是包含wsgi.py文件的目录名称 # 此时uwsgi无法处理静态文件 uwsgi --http :8080 --module Standard_server.wsgi
-
创建uwsgi配置文件
# 在项目根目录(与manage.py同级目录)建立uwsgi配置文件 >vim /home/server/uwsgi.ini [uwsgi] # 通过外网直接访问uwsgi服务的地址(通常测试后即关闭此端口) http = :8080 # nginx通过这一项和项目相连 socket = 127.0.0.1:8001 # 项目目录,BASE_DIR chdir = /home/server # 相对BASE_DIRr的wsgi文件 wsgi-file = Standard_server/wsgi.py # 进程数 processes = 4 # 线程数 threads = 2 stats = 127.0.0.1:9191 vacum = true # 静态文件目录 static-map = /static=/home/server/static # 开启服务,开启式务必开放配置文件内端口(测试后即关掉) >uwsgi /home/server/uwsgi.ini
安装并配置nginx
-
查看源
-
下载并安装源
http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.0-1.el7_4.ngx.x86_64.rpm rpm -ivh nginx-1.14.0-1.el7_4.ngx.x86_64.rpm # 下一步貌似可以省略 yum install -y nginx
-
启动,停止,重启nginx
# 启动 service nginx start # 停止 service nginx stop # 重启 service nginx restart
-
使用nginx托管django服务的原理
- 使用uwsgi开启django服务(通过配置文件启动)
- 防火墙关闭uwsgi端口(uwsgi的websocket一定要使用127.0.0.1的方式配置))
- 编写nginx配置文件,通过nginx访问uwsgi,再通过uwsgi访问django
-
nginx配置文件
# 编辑创建配置文件(扩展名必须是.conf) vim /home/server/server_nginx.conf # 编辑配置文件 upstream django { server 127.0.0.1:8001; } server { listen 80; server_name DLSC; charset utf-8; client_max_body_size 75M; location /media { alias /path/media; } location /static/ { alias /home/server/static/; } location / { uwsgi_pass django; include /home/server/uwsgi_params; } }
-
注意地方
-
nginx配置文件可以放在项目目录,但是要建立去向nginx目录下的软连接
ln -s /home/server/server_nginx.conf /etc/nginx/conf.d
-
nginx版本不同,建立软连接的目标也可能不同,具体参照nginx目录下nginx.inf文件中include:
# 例如例子里的版本中是 include /etc/nginx/conf.d/*.conf;
如果软连接目标地方还有其他配置文件(例如默认的default.conf),并且监听的端口和建立配置文件冲突的,修改或者改名(扩展名不能是.conf)
-
最后重启nginx,配置完成.