Centos7作業系統下部署專案
Y16
本部落格借鑑於其他部落格而作,有地方不同。大家可視自身所需情況瞭解。 借鑑部落格: http://blog.51cto.com/51reboot/2105415
在Centos7下部署專案,需要先部署相關環境。在此配置環境版本:
- Remote:Centos7.0以上版本作業系統
- Python: Python3.6.5
- Apache: Apache 2.4.6
- Mod_wsgi: 4.6.4
- 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.py:vi ‘專案名’/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⑨”步驗證。
個人小結,定有不足之處,歡迎指點。
謝謝~