CentOS7 部署 Django项目
本来想使用ubuntu的系统(虽然同是Linux,只是觉得ubuntu更亲切一些)安装, 但是中间两次坑, 一次是nginx解析不到静态文件, 重装系统后遇到第二次坑, 由于没技术, django始终无法migrate到重装系统后的postgresql中. 再各位大佬的指点下, 又一次重装了centOS系统,重头在来, 期间也遇到两个坑, 第一是由于头脑发热, 想使用MySQL数据库, 但是创建数据库时, 忘记指定 "charset=utf8" 导致无法发布带汉字的文章; 第二是使用MySQL后, 发布文章后, 文章的详情页无法打开! 哎!! 在找不到办法的情况下, 只能将数据库又换回到postgresql. 换完之后一切正常了!
这只是一个残次品或者说半成品(流下了没技术的眼泪), 先把坑再看看, 希望下次部署的时候不要再跳进去!
准备工作
- 系统版本: CentOS 7.6 64位 (腾讯云虚拟机)
- python版本: 官方python3.6.3
- django版本: django 2.1
- uwsgi版本: uwsgi 2.0.8
- nginx版本: nginx 1.13.7
- postgresql版本: (PostgreSQL) 9.2.24
- 可连接到服务器的工具 比如: FinalShell
安装
通过ssh连接到服务器, 默认使用root身份登录centos系统(默认在/root路径下)
这里夜夜月是指点我的大佬的文章地址
下面是一行命令,下面的说明是上面命令的说明
1. 安装各类基础模块
yum install gcc-c++
// 说明: 为centos系统增加编译功能
yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
// 说明: 安装这些模块都是为了成功编译安装python3,防止出现各种异常
yum install libxml*
// 说明: 安装这个模块是为了让uwsig支持使用“-x"选项,能通过xml文件启动项目
2. 编译安装python3
进入home路径(默认是在 /root, 切换到 /home),执行以下命令
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
// 说明: 下载python3.6.3
tar -zxvf Python-3.6.3.tar.gz
// 说明: 解压 下载的压缩包
cd Python-3.6.3
./configure --prefix=/usr/local/python3
// 说明: 切换到解压后的python-3.6.3目录, 将python3安装到/usr/local/python3/路径下
make -j2
make install -j2
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
// 说明: 上两条命令是编译, 下两条命令是创建python3和pip3的软连接到 /usr/bin/ 方便在终端中使用python3和pip3 命令
3. 将本地项目上传到服务器
- 可通过 将本地项目上传到github, 并在服务器系统上通过git clone 将项目拉取到服务器, 实现项目的上传;
- 可通过 FinalShell(我在用的SSH工具, 自带项目上传和下载)自带的功能实现项目的上传;
- 可通过在服务器配置samba来实现本地和服务器共享文件;
4. 安装postgresql, 并创建项目需要的数据库
yum install postgresql-server postgresql-contrib -y
// 说明: 安装postgresql
postgresql-setup initdb
// 说明: 初始化数据库
systemctl enable postgresql //开启启动
systemctl start postgresql
// 说明: 启动数据库
su - postgres // linux 系统下postgresql 数据库默认的超级管理员
psql // 连接数据库 命令行变成: postgtes=# 这种形式就是对的
CREATE USER user1 WITH PASSWORD "111111"; // 创建用户
\h create database; // 查看创建数据库的命令, 网上现查的
CREATE DATABASE blog
WITH OWNER = user1
ENCODING = utf8; // 创建数据库并指定拥有者和字符集
\d blog; // 查看数据库信息
\q // 退出数据库连接
exit // 退出postgres用户
systemctl restart postgresql.server // 重启postgresql数据库
// systemctl start postgresql.service // 启动数据库
// systemctl stop postgresql.service // 停止数据库
// systemctl restart postgresql.service // 重启数据库
// 说明: 创建django项目需要的数据库
vim /var/lib/pgsql/data/pg_hba.conf
// 将TYPE下面的local的METHOD改为trust
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
// 将 replication privilege 改为 md5
local replication postgres md5
host replication postgres 127.0.0.1/32 md5
host replication postgres ::1/128 md5
// 重启数据库
systemctl restart postgresql.service // 重启数据库
// 说明: 配置postgresql数据库
// 切换到项目manage.py所在的目录
cd /home/www/mysite
// 执行数据库迁移
python3 manage.py makemigtations
python3 manage.py migtare
// 迁移成功后, 创建超级用户,根据提示填写姓名邮箱及密码
python3 manage.py createsuperuser
5. 安装uwsgi并配置
pip3 install uwsgi
// 说明: 通过pip3安装uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3
// 说明: 为了方便在终端中使用uwsgi命令
// 切换到项目的路径下(这个路径是manage.py同目录的路径)如:
cd /home/www/mysite
// 创建一个myproject.xml
vim myproject.xml
// 输入如下内容
127.0.0.1:8997 //
/home/www/mysite //
mysite.wsgi
2 //
uwsgi.log //
// x 保存退出(vim下, 摁 Esc 进入末行模式, 输入 wq 或 x 都是保存退出)
6. 安装nginx及配置nginx.conf文件
// 切换到home下
cd /home
// 下载nginx
wget http://nginx.org/download/nginx-1.13.7.tar.gz
// 解压
tar -zxvf nginx-1.13.7.tar.gz
// 切换到nginx1.13.7目录
cd nginx-1.13.7
// 编译
./configure
make
make install
// 说明: 安装nginx
// 配置nginx.conf(默认在/usr/local/nginx/conf/中)
vim /usr/local/nginx/conf/nginx.conf
// 在http{}花括号体中添加下面内容
server {
listen 8996; // #暴露给外部访问的端口
server_name localhost;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8997; // #外部访问8996就转发到内部8997
}
location /static/ {
alias /home/www/mysite/blog/static/; // #项目静态路径设置
}
}
// 说明: 配置nginx.conf文件, 其中转发端口要和uwsgi对应
// 切换到 nginx 可执行文件目录
cd /usr/local/nginx/sbin/
// 这条命令检查配置文件nginx.conf是否有错
./nginx -t
// 开启nginx服务
./nginx
// 检查nginx是否开启
ps -aux | grep nginx
// 说明: 开启nginx
7. 访问项目页面
// 切换到项目manage.py所在目录
cd /home/www/mysite
// 执行下面命令启动
uwsgi3 -x myproject.xml
// 启动成功后访问 http://192.168.1.111:8996即可访问页面, IP必须是你自己的IP