1. 程式人生 > >Centos7作業系統下部署專案

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⑨”步驗證。


個人小結,定有不足之處,歡迎指點。
謝謝~