部署是基于centos7+nginx+uwsgi+python3+django+mysql
一.安装mysql
1 下载并安装MySQL官方的 Yum Repository
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,然后就可以直接yum安装了。
yum -y install mysql57-community-release-el7-10.noarch.rpm
安装MySQL服务器。
yum -y install mysql-community-server
2 MySQL数据库设置
启动MySQL
systemctl start mysqld.service
配置开机自启
systemctl enable mysqld.service
查看MySQL运行状态
systemctl status mysqld.service
通过如下命令在日志文件中找出密码:
grep "password" /var/log/mysqld.log
进入数据库
mysql -uroot -p
输入初始密码,就是grep “password” /var/log/mysqld.log得到的密码
xxx
MySQL默认必须修改密码之后才能操作数据库
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
如果要修改为root这样的弱密码,需要进行以下配置:
查看密码策略:show variables like '%password%';
修改密码策略:vi /etc/my.cnf
#添加validate_password_policy配置
validate_password_policy=0
#关闭密码策略
validate_password = off
重启服务:
systemctl restart mysqld
3 开启mysql的远程访问
允许所有ip访问,以root用户形式,**如果所有用户可以将root改为:***
grant all privileges on *.* to 'root'@'192.168.0.1' identified by 'password' with grant option;
执行命令:
flush privileges;
exit;
默认会监听3306端口:
4 修改mysql的字符编码(不修改会产生中文乱码问题)
显示编码格式:
show variables like '%character%';
修改/etc/my.cnf
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
Navicat连接:
如果提示连接不到mysql服务的话,需要看一下阿里云后台有没有开启3306端口。
二.安装python3
一、更新系统软件包
yum update -y
二、安装软件管理包和可能使用的依赖
yum -y groupinstall "Development tools"
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
三、下载Pyhton3到/usr/local 目录
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
解压:
tar -zxvf Python-3.6.6.tgz
cd进入 Python-3.6.6路径:
编译安装到指定路径
./configure --prefix=/usr/local/python3
安装python3:
make & make install
安装完成之后 建立软链接 添加变量 方便在终端中直接使用python3
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
Python3安装完成之后pip3也一块安装完成,不需要再单独安装
一样建立软链接
ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
四、查看Python3和pip3安装情况
三.python3安装django和uwsgi
命令:
pip3 install uwsgi
pip3 install django 可以指定版本
uwsgi:
django自带的wsgiref 在调试模式下使用的wsgi的文件,网关接口,协议
uwsgi:协议
uWSGI:具体实现方式
四.将项目copy到centos7中
可以使用winSCp或者ftp等软件将项目上传到服务器中
这里使用winSCp,将项目放到data文件夹下:
将本地项目中所有的依赖包导出来,这里放到项目中:
pip freeze > requirements.txt
安装requirements.txt里的依赖:
pip install -r requirements.txt
安装成功:
启动项目:
python3 manage.py runserver 0.0.0.0:9009
启动成功:
报错:
需要将项目中settings.py的ALLOWED_HOSTS值改为*代表所有ip都可以访问:
继续修改settings.py文件。将数据库配置信息改为上面服务器中的:
访问成功:
编写启动uwsgi的配置文件,命名为uwsgi.ini:
[uwsgi]
#http = :8080
socket = :9090
#项目路径
chdir= /data/wwwroot/crm
# uwsgi的文件
wsgi-file= crm/wsgi.py
# 虚拟环境
# virtualenv = /root/env
# 进程个数
processes = 2
# 线程个数
threads=2
# 后台启动,指定日志的输出
# daemonize=/data/crm/django.log
# 清除临时文件
vacuum = true
# python文件发生改变自动重启
py-autoreload=1
五.安装nginx
下载nginx:
wget http://nginx.org/download/nginx-1.13.7.tar.gz
下载完成后,执行解压命令:
tar -zxvf nginx-1.13.7.tar.gz
进入解压后的nginx-1.13.7文件夹,依次执行以下命令:
./configure
make
make install
nginx一般默认安装好的路径为/usr/local/nginx
在/usr/local/nginx/conf/中先备份一下nginx.conf文件
cp nginx.conf nginx.conf.bak
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name 自己的ip;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.0:9090; #注意这里端口要和上面的uwsgi端口一直
}
# 静态文件
location /static/ {
alias data/crm/static/;
}
}
}
进入/usr/local/nginx/sbin/目录
执行./nginx -t命令先检查配置文件是否有错,没有错就执行以下命令:
./nginx
终端没有任何提示就证明nginx启动成功。
执行uwsgi.ini配置文件:
uwsgi --ini /etc/uwsgi.ini #后面要改成你自己的路劲
进入/usr/local/nginx/sbin/目录,执行:
./nginx -s reload
访问:
线上部署样式没有生效的问题:
1.在settings.py文件尾部加入:
STATIC_ROOT = os.path.jon(BASE_DIR,'要收集的文件夹名字') #设置一个目录,把后台CSS样式放到这个目录里
2、收集CSS样式,在终端输入:
python manage.py collectstatic
最后结果:
最后执行一下数据库同步数据库指令生成表:
python3 manage.py migrate
数据库中表创建成功:
到此部署全部结束。