Python3+Apache+Django+CentOS


使用django開發的項目上到正式環境的環境搭建,系統軟件版本:

CentOS6.5
setuptools-28.3.0.tar.gz
pip-8.1.2.tar.gz
Python-2.7.12.tgz
pcre-8.39.tar.bz2
mod_wsgi-4.5.7.tar.gz
httpd-2.4.28.tar.gz
apr-util-1.6.1.tar.gz
apr-1.6.3.tar.gz

(本來想放上阿里雲的pypi鏡像地址的,但是。。。。那個目錄我實在是看不懂,有懂的同學麻煩告訴我一下吧)

為啥不用yum?
好問題,因為正式環境里的系統一般是最小化安裝的,如果使用yum進行默認安裝,各軟件之間的調用的文件路徑可能會不一樣,使用源碼安裝可以指定組件的路徑,提高部署成功的機率

1、安裝python2.7
為啥不用自帶的2.6,親們請看這里,https://segmentfault.com/q/1010000007956173?_ea=1504132

yum -y install zlib-devel openssl-devel
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
tar xzf Python-2.7.12.tgz
cd Python-2.7.12/
./configure --prefix=/usr/local/python CFLAGS=-fPIC
make && make install


*不安裝zlib-devel的話,在安裝setuptools時會報錯。不安裝openssl-devel的話,在安裝django時會報錯。不加CFLAGS=-fPIC參數,安裝mod_wsgi時會報錯。

將python2.7加入環境變量
在/etc/profile文件末尾添加以下內容:

export PATH=/usr/local/python/bin:$PATH

然后使配置文件生效:

. /etc/profile

2、 安裝setuptools

wget https://pypi.python.org/packages/6b/dd/a7de8caeeffab76bacf56972b3f090c12e0ae6932245abbce706690a6436/setuptools-28.3.0.tar.gz
tar xzf setuptools-28.3.0.tar.gz
cd setuptools-28.3.0/
python setup.py install

3、 安裝pip

wget https://pypi.python.org/packages/e7/a8/7556133689add8d1a54c0b14aeff0acb03c64707ce100ecd53934da1aa13/pip-8.1.2.tar.gz
tar xzf pip-8.1.2.tar.gz
cd pip-8.1.2/
python setup.py install

4、安裝apr

wget http://apache.fayea.com/apr/apr-1.5.2.tar.bz2
tar xjf apr-1.6.3.tar.bz2 
cd apr
-1.6.3/
.
/configure --prefix=/usr/local/apr make && make install

5、 安裝apr-util

wget http://apache.fayea.com/apr/apr-util-1.5.4.tar.bz2
tar xjf apr-util-1.6.1.tar.bz2
cd apr-util-1.6.1/
./configure --with-apr=/usr/local/apr/
make && make install
cd ../

6、 安裝pcre
復制代碼

yum -y install gcc-c++
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.bz2
tar xjf pcre-8.39.tar.bz2
cd pcre-8.39/
./configure --prefix=/usr/local/pcre
make && make install

7、 安裝httpd(apache)

# yum -y install perl
wget http://apache.fayea.com/httpd/httpd-2.4.23.tar.bz2
tar xjf httpd-2.4.23.tar.bz2
cd httpd-2.4.23/
./configure --prefix=/usr/local/httpd --with-pcre=/usr/local/pcre
make && make install

在/etc/profile文件末尾添加以下內容:

export PATH=/usr/local/httpd/bin:$PATH

然后使配置文件生效:

. /etc/profile

8、 安裝mod_wsgi

wget https://pypi.python.org/packages/28/a7/de0dd1f4fae5b2ace921042071ae8563ce47dac475b332e288bc1d773e8d/mod_wsgi-4.5.7.tar.gz
tar xzf mod_wsgi-4.5.7.tar.gz
cd mod_wsgi-4.5.7/
./configure --with-apxs=/usr/local/httpd/bin/apxs --with-python=/usr/local/python/bin/python
make && make install
chmod 755 /usr/local/httpd/modules/mod_wsgi.so(安裝好之后應該是自動就將該文件改成755 的)

9、 安裝Django

pip install django

10、安裝mysql的開發包

yum -y install mysql-devel

11、配置Django,重點來了:新建一個目錄或者使用httpd的默認目錄,我這里的默認目錄為/usr/local/httpd/htdocs/,如果不知道默認目錄在哪,也可以查看配置文件里DocumentRoot那一行,看那里寫的是什么
將你的項目整個放上來,放上來的結構應該是這樣的

12、在你的項目里同名文件下應該會有一個wsgi.py的文件,在里添加

import sys
sys.path.append('/usr/local/httpd/htdocs/mysite0')

13、配置httpd(Apache)
配置Apache
啟用虛擬主機配置文件
編輯/usr/local/httpd/conf/httpd.conf文件,找到下面這句並取消注釋:

Include conf/extra/httpd-vhosts.conf

在一堆以LoadModule開頭的段落下添加一行:

LoadModule wsgi_module modules/mod_wsgi.so

修改虛擬主機配置文件
編輯/usr/local/httpd/conf/extra/httpd-vhosts.conf文件,將原來的配置全部注釋掉(已經注釋過的就不用再注釋了),然后在末尾添加以下內容:

復制代碼

 1 <VirtualHost *:80>
 2     DocumentRoot "/usr/local/httpd/htdocs/mysite0/mysite0"
 3 
 4     Alias /static/ /usr/local/httpd/htdocs/mysite0/static/
 5     <Directory "/usr/local/httpd/htdocs/mysite0/static">
 6         Options FollowSymlinks
 7         AllowOverride none
 8         Require all granted
 9     </Directory>
10     WSGIScriptAlias / "/usr/local/httpd/htdocs/mysite0/mysite0/wsgi.py"
11 
12     <Directory "/usr/local/httpd/htdocs/mysite0/mysite0">
13         AllowOverride All
14         Require all granted
15     </Directory>
16 </VirtualHost>            

 

14、 啟動你的django

apachectl start

碰到的問題:

頁面報400:
將項目里settings.py里允許主機更改為ALLOWED_HOSTS = ["*"]

頁面找不到靜態文件(css,js....)
將先要看apache里的vhost.conf站點配置文件里static別名,注意斜杠,貝勒因為這個斜杠的問題也是尷尬了很久哇
其次看你的settings文件里配置是不是下面這個樣子的

STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)

因為開發環境里的使用的python3.6,生產環境使用提2.7,所以在部署的時候也需要安裝pymysql,並且在項目的同名目錄里的__init__.py里添加如下代碼:

import  pymysql
pymysql.install_as_MySQLdb()

 

本文大部分是參閱了昨、夜星辰的文件,原文地址http://www.cnblogs.com/yestreenstars/p/5949037.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM