目录
一.基本配置
二.部署准备
三.进入ubuntu
1.系统更新
2.安装MySQL数据库
3.配置MySQL数据库
4.创建项目目录并安装虚拟环境
5.安装uWSGI服务器(以下命令建议在虚拟环境中执行)
6.安装Nginx
7.在服务器上配置项目
8.配置Nginx
9.配置uWSGI
四.测试
五.放几张成功截图
开发使用的Django版本:3.2.5;
开发使用的python版本:3.8.5;
开发使用的mysql版本:8.0.26;
服务器上的python版本:3.6.9;
服务器上的Django版本:3.2.8;
服务器上的mysql版本:5.7.35;
开发环境:window10;
部署环境:Ubuntu18.04;
uwsgi version:2.0.20;
nginx version: nginx/1.14.0;
从阿里云官网购买一个最低配的云服务器ECS就可以,我购买的是1核 2 GiB。购买成功后他会让你选择该服务器的系统,选择Ubuntu18.04就可以,设置登录的用户名与密码。购买完成后,会出现运行的实例。然后需要配置安全组规则,即对端口的访问进行限制,先选择快速添加安全组规则,把那些添加后,我们再添加一个允许外界对8000端口进行访问的规则。
进入之后我们就是root用户,我没有再设置新用户,直接使用root用户对ubuntu进行操作。
接下来就开始命令行(如果是root用户下面的sudo可以不用敲)
sudo apt-get update
sudo apt-get dist-upgrade
用上面两条命令进行系统更新
sudo apt-get -y update
更新Ubuntu中的/etc/apt/source.list的源
sudo apt-get install python-setuptools
更新python安装工具
sudo apt-get install mysql-server
安装数据库
sudo mysql_secure_installation
对数据库进行安全配置
这里找不到我当初看的博客了,我在这个输入的地方,输入的n;这样数据库对你的密码强度就没有要求了,如果单纯为了实验可以选择个简单的密码。后面一直输入y就可以。
下文链接:https://blog.csdn.net/qq_24472235/article/details/100033837
Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车
… Success!
Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止(根据个人需求)
… Success!
By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车(根据个人需求)
Dropping test database…
… Success!
Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
上文链接:https://blog.csdn.net/qq_24472235/article/details/100033837
cd /etc/mysql
sudo vim my.cnf
进入MySQL数据库配置文件所在的目录,用vim修改my.cnf。
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[client]
port=3306
default-character-set=utf8
[mysqld]
port=3306
character-set-server=utf8
[mysql]
no-auto-rehash
default-character-set=utf8
注:在我看的参考书上的socket进行了配置,但是我配置后会报错,所以我没有配置。具体配置内容:socket=/var/lib/mysql/mysql.sock。(在[client]下)
sudo service mysql restart
重启数据库,让配置生效
sudo mysql -uroot -p
登录数据库,如果可以正常登录,则说明数据库的安装和配置都没问题。
在django项目的setting文件下找到数据库的名字,在服务器中也创建一个。
create database you default character set utf8 collate utf8_general_ci;
数据库命令行中须运行以下命令以保证python可以与数据库进行连接。(把用户,密码改成自己安装数据库时候设置的用户和密码)
mysql>update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root';
mysql> flush privileges;
mkdir myweb
在根目录下建立myweb目录
sudo pip install virtualenv
安装viryualenv
cd myweb
sudo virtualenv --python=python3 myenv
进入myweb目录,建立虚拟目录
soure myenv/bin/activate
激活虚拟环境
PS:ubuntu18.04会自带python2和python3,可以把python2卸载,以防调用出错。
sudo apt-get install gcc
sudo apt-get install python3-dev
sudo pip install uwsgi
安装GCC,python开发相关工具模块,uwsgi
uwsgi
允许uwsgi测试安装是否成功
sudo apt-get install nginx
安装nginx用以处理静态文件请求
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1','localhost','192.168.0.168','*']
在项目的setting中要增加以上内容,以允许外部域名访问
把应用程序的migrations文件下,把以数字开头的文件删除,因为那会影响到利用python对服务器中数据库表的建立。
利用Xftp把项目上传到服务器中的myweb目录下。
(注:djangoProject下面的_init_.py中应有:
import pymysql
pymysql.install_as_MySQLdb()
)
进入虚拟环境,进入myweb/djangoProject/ (项目名称为djangoProject)
pip install django
安装django
python3 manage.py makemigrations
python3 manage.py migrate
运行以上命令在ubuntu的数据库中创建表
python3 manage.py createsuperuser
生成Django管理后台的管理员
cd myweb/djangoProject
cp /etc/nginx/uwsgi_params
把uwsgi_params复制到项目根目录下
cd /etc/nginx
vim nginx.conf
在该文件的开头添加:user root;
在该文件http大括号中添加:
upstream django {
server 127.0.0.1:8001;
}
server {
listen 8000;
server_name 192.168.0.106;#域名
charset utf-8;
location /media {
alias /root/myweb/djangoProject/media;#我实际的保存路径为/root/myweb/djangoProject/media/headimage但用这个路径图片无法显示
}
location /static {
alias /root/myweb/djangoProject/static;
}
client_max_body_size 75M;
location / {
uwsgi_pass django;
include /root/myweb/djangoProject/uwsgi_params;
}
location /templates {
alias /root/myweb/djangoProject/templates;
}
}
重启nginx使配置生效:
sudo service nginx restart
在项目根目录下:sudo vim project_uwsgi.ini
[uwsgi]
chdir=/root/myweb/djangoProject
module=djangoProject.wsgi
master=true
processes=10
socket=127.0.0.1:8001
chmod-socket=662
vacuum=true
home =/root/myweb/myenv
uwsgi --ini project_uwsgi.ini
进入后台管理时,会发现缺失CSS框架,我们把/root/myweb/myenv/lib/python3.6/site-packages/django/contrib/admin/static这个路径下的admin文件夹中的静态文件复制到我们项目的static中就可以了。