CentOS7 部署 Django项目

CentOS7 部署 Django项目

本来想使用ubuntu的系统(虽然同是Linux,只是觉得ubuntu更亲切一些)安装, 但是中间两次坑, 一次是nginx解析不到静态文件, 重装系统后遇到第二次坑, 由于没技术, django始终无法migrate到重装系统后的postgresql中. 再各位大佬的指点下, 又一次重装了centOS系统,重头在来, 期间也遇到两个坑, 第一是由于头脑发热, 想使用MySQL数据库, 但是创建数据库时, 忘记指定 "charset=utf8" 导致无法发布带汉字的文章; 第二是使用MySQL后, 发布文章后, 文章的详情页无法打开! 哎!! 在找不到办法的情况下, 只能将数据库又换回到postgresql. 换完之后一切正常了!
这只是一个残次品或者说半成品(流下了没技术的眼泪), 先把坑再看看, 希望下次部署的时候不要再跳进去!


准备工作

  1. 系统版本: CentOS 7.6 64位 (腾讯云虚拟机)
  2. python版本: 官方python3.6.3
  3. django版本: django 2.1
  4. uwsgi版本: uwsgi 2.0.8
  5. nginx版本: nginx 1.13.7
  6. postgresql版本: (PostgreSQL) 9.2.24
  7. 可连接到服务器的工具 比如: 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. 将本地项目上传到服务器

  1. 可通过 将本地项目上传到github, 并在服务器系统上通过git clone 将项目拉取到服务器, 实现项目的上传;
  2. 可通过 FinalShell(我在用的SSH工具, 自带项目上传和下载)自带的功能实现项目的上传;
  3. 可通过在服务器配置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

你可能感兴趣的:(CentOS7 部署 Django项目)