首先说了遇到的坑 , 版本的大问题,!!! 这个很重要,我用的是 虚拟机的安装的是 UBuntu18LTS
系统 Ubuntu18 LTS
python版本 py3.6.8
mysql 8 下载的最新版
1. 安装 Python3
系统自带的版本是python2,py2和py3的区别可以去了解下,个人建议最好用py3,如果有python3的话可以用管
# 请注意不要卸载系统预装的Python,我安装py3.6.8
# 从官网下载 ,看网速,可以在本机下载好后 传到 ubuntu18 上面
sudo wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
# 解压
sudo tar -xzvf Python-3.6.8.tgz
# 进入 文件夹
cd Python-3.6.8
# 安装到/usr/local/python 目录(不用事先创建python目录)
sudo ./configure --prefix=/usr/local/python --with-ssl --enable-optimizations
# 编译
sudo make
# 安装完成后删除源码压缩包与文件夹
# 创建python与pip软连接
sudo ln -s /usr/local/python/bin/python3.6 /usr/bin/python
sudo ln -s /usr/local/python/bin/pip3.6 /usr/bin/pip
# 然后就可以 使用 python3 ,和 pip3
# 如何 提示没有 pip3 ,apt-get 安装 pip3
# sudo apt-get install python3-pip
2. 安装 Python3 的虚拟环境
安装完py3后,一般运行项目都会在python的虚拟环境运行 项目,此时安装python虚拟环境
1. 安装虚拟环境
sudo pip3 install virtualenv
2. 安装虚拟环境扩展包
sudo pip3 install virtualenvwrapper
3. 编辑家目录下的.bashrc文件,在最后面 添加下面两行代码
# [如果没显示.bashec这个文件 ctrl + h 可以显示]
# 使用vim编辑.bashrc文件
vim ~/.bashrc
export WORKON_HOME= $HOME/.virtualenvs # 虚拟环境的安装目录
export VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3.6' # 安装python的版本
source /usr/local/bin/virtualenvwrapper.sh #虚拟环境的管理,virtualenvwrapper.sh 的路径
4. 以上是虚拟环境文件安装步骤,,,,,,,,接下来是创建虚拟环境和虚拟环境的使用
4.1 创建虚拟环境命令(python2的虚拟环境)
mkvirtualenv 虚拟环境名
4.2 创建python3的虚拟环境
mkvirtualenv -p python3 虚拟环境的名字
4.3 进入虚拟环境
workon 虚拟环境名
4.4 退出虚拟环境
deactivate
4.5 查看机器上有多少虚拟环境
workon 空格 + 两个Tab键
4.6 删除虚拟环境
rmvirtualenv 虚拟环境名称
4.7 查看虚拟环境装了那些包
pip list
5. 在虚拟环境安装一些包,
pip install django # 默认最新版本Django
pip install django==2.1.0 # 指定版本安装
6. 从虚拟环境导出版本和指定版本号,并在新环境安装相同版本
pip freeze > requirements.txt // 当前目录下的requirements.txt文件
# 创建新环境之后
pip install -r requirements.txt
3. 安装 Mysql
ubuntu18 安装软件还是比较简单,apt-get 就可以
1. 查看有没有安装MySQL
dpkg -l | grep mysql
2. 安装MySQL:
apt install mysql-server
3. 登录mysql和修改密码 权限,远程登录
3.1 登录 mysql,第一次自己回车
mysql -u root -p
3.2 设置自己登录密码
use mysql;
#复制的时候不要复制到分号,修改密码123456为你自己的密码。最后再添加分号,语句执行
update mysql.user set authentication_string=password('123456(你的密码)') where user='root(你的用户名)' and Host ='localhost(你的主机地址)';
# 这个 很重要!!!,很重要!!!,很重要!!! 不更新的话 更新后登录不了,会提示错误
update user set plugin="mysql_native_password";
# 刷新
flush privileges;
quit
3.3 重新登录 mysql
# 重启mysql
sudo service mysql restart
# 接下来可以输入密码登录,密码可以写在-p后,但是不推荐。
mysql -uroot -p
3.4 设置允许远程访问
#退出数据库,在本地打开MySQL的配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉 bind-addr =127.0.0.1
# 进入 数据库 以root权限进入MySQL命令行,
# 执行开启权限命令,本示例中MySQL中用户root与密码123456
grant all on *.* to root@'%' identified by '123456' with grant option;
# 刷新
flush privileges;
# 退出数据库,并重启一下数据库
sudo /etc/init.d/mysql restart
3. 安装 Nginx 和 uwsgi
1 . 安装 Nginx
sudo apt-get install nginx
1.1 启动服务
sudo service nginx start
sudo service nginx stop
sudo service nginx restart
1.3 增加服务器配置
1. /etc/nginx/uwsgi_params
2. 在项目目录下创建配置文件mysite_nginx.conf,并写入以下内容:
server {
listen 80 default_server;
listen [::]:80 default_server;
#server_name 127.0.0.1 192.168.247.129; #绑定域名
#charset UTF-8;
#access_log /var/log/nginx/Django_Demo_access.log;
#error_log /var/log/nginx/Django_Demo_error.log;
#client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; # django运行端口
uwsgi_read_timeout 2;
}
location /static {
#静态文件配置
alias /home/zxx/PyDjango/django_Demo/static;
}
location /media {
# 静态文件配置
alias /home/zxx/PyDjango/django_Demo/static;
}
}
# 这里 会一些不一样,我的系统在 sites-enabled 文件夹下一个 默认的deault 文件,我在这里面修改 添加的 server 设置的,这里我看到一些版本不一样,
#不过发现设置的时候 只要找到的默认的 listen 80 端口的文件,在这个文件里面修改 添加server 就可以
2. 安装 uwsgi
2.1 python环境内安装 uwsgi
pip install uwsgi # 一般是进入 虚拟环境配置
2.2 测试
进入 django 项目目录,运行 uwsgi.py 文件(先测试 成功!用runserver 运行成功后 在进行uwsgi)
uwsgi --http :8080 --module django_Demo.uwsg
2.3 配置uwsgi 启动 django 项目
在manage.py 的同级目录,新建一个 uwsgi.ini文件 ,文件里面 配置以下这些内容(根据自己情况修改)
用 uwsgi --ini uwsgi.ini ((你自己新建的名字) 启动django项目
[uwsgi] #这个 一定要有,一定一定一定!!! [uwsgi]
#监听的端口
#socket是用nginx来测试时用的
socket = 127.0.0.1:8000
#http-socket = :8000
#用uwsgi单独测试时用
#http = :8000
# (这个可以根据自己的项目需求进行设定)
buffer-size = 65536
#指定和nginx进行套接字通信的方式:端口或文件
#socket = 127.0.0.1:8000
#socket = /home/kzzf/project/OfferHelp/OfferHelp.sock
#项目所在目录,和manage.py同级
chdir = /home/zxx/PyDjango/django_Demo
#虚拟环境所在目录
home=/home/zxx/PyVirtualenv/Test
PYTHONHOME = /home/zxx/PyVirtualenv/Test/bin
#主应用中的wsgi文件
module = django_Demo.wsgi
#使用路由代理静态资源,但失败了
#static-safe=/home/kzzf/project/OfferHelp/static/
#route = /static/(.*) static:/home/kzzf/project/OfferHelp/static/$1
#代理静态资源:路径映射
#static-map = /static=/home/zxx/PyDjango/django_Demo/collet_static
#启动一个master进程,来管理其余的子进程
master=true
processes = 4
threads = 2
#保存主进程的pid,用来控制uwsgi服务
pidfile=/home/zxx/PyDjango/django_Demo/uwsgi.pid
#启动项目 uwsgi uwsgi.ini
#uwsgi --stop/reload xxx.pid 停止/重启uwsgi
#设置后台运行,保存日志
#daemonize=/home/zxx/PyDjango/django_Demo/log/uwsgi.log
#deamonize=1 ; 用来配置background运行
#设置每个工作进程处理请求的上限,达到上限时,将回收(重启)该进程。可以预防内存泄漏
max-requests=5000
# 服务停止时自动移除unix Socket和pid文件
vacuum=true
4. 外部访问
使用 ip a 查看 虚拟机的静态 ip 地址 ,
进入虚拟环境的 django项目路径 执行 uwsgi --ini uwsgi.ini
然后 外部就可以 通过 ip 访问了,!!!
小白使用 虚拟机 UBuntu18 LTS 部署 django 项目,欢迎大佬指正