Centos7操作系统下部署项目

Y16


本博客借鉴于其他博客而作,有地方不同。大家可视自身所需情况了解。 借鉴博客: http://blog.51cto.com/51reboot/2105415


在Centos7下部署项目,需要先部署相关环境。在此配置环境版本:

  1. Remote:Centos7.0以上版本操作系统
  2. Python: Python3.6.5
  3. Apache: Apache 2.4.6
  4. Mod_wsgi: 4.6.4
  5. Django: Django 2.0.4

一、python3.6环境配置

  1、安装 python3.6.5 源及依赖包

# yum install epel-release -y

# yum groupinstall "Development tools" -y

# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel zx-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel -y

  2、编译安装 python3.6.5 以及 pip package manager

# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz --no-check-certificate

# tar xf Python-3.6.5.tar.xz

# cd Python-3.6.5

# ./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

# make && make altinstall

  3、安装 virtualenv

# pip3.6 install virtualenv

二、Django环境配置

  1、配置 Django virtualenv

# mkdir -p /var/www/html/django

# cd /var/www/html/django

# virtualenv -p /usr/local/bin/python3.6 venv

  2、开启 virtualenv python3 环境

# source venv/bin/activate

  3、在此环境安装 Django 相关模块

# pip install django pymysql

三、Apache配置

  1、退出python3环境,安装apache package

# deactivate

# yum install httpd httpd-devel -y

  2、开启 virtualenv python3 环境,安装mod_wsgi for python3

# pip install mod_wsgi

  3、导出 apache 所需的 mod_wsgi 模块

# mod_wsgi-express install-module

  4、注意第3步导出的第一句即:

LoadModule wsgi_module "/usr/lib64/httpd/modules/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so"

  5、配置 apache 配置文件

# vi /etc/httpd/conf/httpd.conf

在末行添加第4步的语句(即第3步导出的第一句语句)

  6、配置 django 配置文件

vi /etc/httpd/conf.d/django.conf

在里面填写:(注意工程名要统一,可自取)

Alias /static /var/www/html/django/’工程名’/static
<Directory /var/www/html/django/’工程名’/static>
Require all granted
</Directory>
<Directory /var/www/html/django/’工程名’/’工程名’>
 <Files wsgi.py>
   Require all granted
 </Files>
</Directory>
WSGIPythonHome "/var/www/html/django/venv"
Listen 8080
<VirtualHost *:8080>
ServerName django.example.com
WSGIDaemonProcess ‘工程名’ python-path=/var/www/html/django/venv/lib/python3.6/site-pachages
WSGIScriptAlias / /var/www/html/django/’工程名’/’工程名’/wsgi.py
</VirtualHost>

  7、此时一定要关闭防火墙或者开启8080端口方法链接

四、Django项目配置


如果是新建项目,推荐看顶层的借鉴博客,以下介绍直接部署已完成的项目。


  以上执行完成后开始上传工程: 输入rz上传文件(若不能上传,使用yum -y install lrzsz安装上传插件),上传后解压缩

注意:上传的工程中不能有存在的数据库和已迁移文件,否则不能再centos中完成数据迁移,删除压缩包。

上传的工程有以下为两种数据库方式,请根据项目所连接的数据库选择对应方法。

1、部署项目基于sqlite数据库的操作

 ① 编辑settings.pyvi ‘项目名’/settings.py,在末行添加

 STATIC_ROOT = os.path.join(BASE_DIR, "static/")

 ② 进入工程目录中,迁移数据;创建项目管理员账户;生成静态文件目录

Python manage.py makemigrations    #更新数据
Python manage.py migrate           #迁移数据
Python manage.py createsuperuser   #创建项目管理员
Python manage.py collectstatic     #生成项目静态文件目录

 ③ 修改wsgi入口文件: # vi ‘工程名’/wsgi.py

import os
import sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
sys.path.append('/var/www/html/django/工程名')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

 ④ 添加ALLOWED_HOSTS: # vi ‘工程名’/settings.py
    修改其中的: ALLOWED_HOSTS = [’*’]

    ‘*’ 代表允许任何网址访问。

 ⑤ 修改项目属性和权限

# chmod -R 755 /var/www/html
# chown -R apache:apache /var/www/html

 ⑥ Ls -l 可以用来查看生成的项目文件

 ⑦ 临时关闭selinux防火墙 输入setenforce 0
永久关闭可使用: vi /etc/selinux/config
改:SELINUX=enforcing
为:SELINUX=disabled (输入getenforce查看状态)

 ⑧ 如果views.py中有用到 IP 的地方(例如前后端交互使用静态网址路由上传文件),需要找到对应链接,改为此操作系统IP,即改为127.0.0.1

 ⑨ 测试网页。在网页中输入:
IP:8080/admin或IP:8080/url  (url为urls.py中定义网址名)


2、部署项目基于mysql数据库的操作

 ① 完成文件上传后,在虚拟环境( source venv/bin/activate )中执行:

先执行:yum install mysql-devel
后执行:pip install mysqlclient

 ② 启动mysql (mysql -uroot -p) , 创建数据库(数据库名称必须和settings.py中的名称对应) , quit退出 , 之后进入虚拟环境
  此时 , 若启动时出现错误Can’t connect to MySQL server on ‘XXX’
是因为mysql和centos在同一个操作系统中,所以执行setsebool httpd_can_network_connect 1 , 执行完后,重启阿帕奇和mysql数据库.

 ③ 安装成功之后执行上面的3(10)~(13)步骤,之后再修改项目中的__init__.py文件

 ④ Vi 项目名/__ init __.py
在其中添加:
import pymysql
pymysql.install_as_MySQLdb()

在这里插入图片描述
 ⑤ 重新启动systemctl restart httpd , 即可通过第“1⑨”步验证。


个人小结,定有不足之处,欢迎指点。
谢谢~

猜你喜欢

转载自blog.csdn.net/qq_43317529/article/details/83040381