本文指導(dǎo)安裝Apache2, mod_wsgi 4.6.5, Django2.1,以及安裝過(guò)程中可能出現(xiàn)的問(wèn)題及解決方法。
1,安裝Apache2.4
我本機(jī)是Ubuntu16.04的系統(tǒng),如果時(shí)CenterOS,使用yum安裝就好了.
sudo apt install apache2 這個(gè)安裝一般沒(méi)有什么問(wèn)題
2,源碼編譯安裝Python3.6
源碼地址:https://www.python.org/ftp/python/3.7.1/Python-3.6.9.tgz
編譯安裝相關(guān)命令如下:
tar -zxf Python-3.6.9.tgz
cd Python-3.6.9
./configure --prefix=/usr/local/python36 --enabled-shared --enable-loadable-sqlite-extensions
配置選項(xiàng) --prefix指定安裝目錄,跟其他Python環(huán)境獨(dú)立開(kāi)來(lái),也方便不用的時(shí)候刪除;
--enable-shared 啟用共享庫(kù),mod_wsgi需要Python開(kāi)發(fā)庫(kù)支持;
--enable-loadable-sqlite-extensions django默認(rèn)使用sqlite數(shù)據(jù)庫(kù)
make
sudo make install
3, 編譯安裝mod_wsgi4.6.5
下載地址: https://github.com/GrahamDumpleton/mod_wsgi/releases
編譯安裝過(guò)程,如有不詳細(xì)的地方,請(qǐng)參考:https://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#
tar xvfz mod_wsgi-X.Y.tar.gz
./configure --with-apxs=/usr/bin/apxs
--with-python=/usr/local/python36/bin/python3.6
配置選項(xiàng)--with-apxs 如果沒(méi)有執(zhí)行sudo apt install apache2-dev
--with-python 指定上面安裝的Python路徑
make
make install
安裝完成可以看下:
4, Apache配置支持wsgi
sudo vim /etc/apache2/site-available/wsgi.conf
<VirtualHost *:80>
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
#WSGIPythonHome /path/to/venv
#WSGIPythonPath /path/to/mysite.com
# 使用 mod_wsgi 后臺(tái)模式,"Daemon mode" 是運(yùn)行 mod_wsgi 的推薦模式
WSGIDaemonProcess example.com python-home=/path/to/venv python-path=/path/to/mysite.com
WSGIProcessGroup example.com
<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
# 提供文件服務(wù)
Alias /robots.txt /path/to/mysite.com/static/robots.txt
Alias /favicon.ico /path/to/mysite.com/static/favicon.ico
Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/
<Directory /path/to/mysite.com/static>
Require all granted
</Directory>
<Directory /path/to/mysite.com/media>
Require all granted
</Directory>
</VirtualHost>
注意事項(xiàng):
如果多個(gè) Django 站點(diǎn)運(yùn)行在同一 mod_wsgi 進(jìn)程,它們會(huì)共用最先啟動(dòng)的站點(diǎn)配置。能通過(guò)以下修改改變行為:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
wsgi.py 中也這么改:
os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"
上傳文件名稱包含非 ASCII 字符的文件時(shí),若拋出 UnicodeEncodeError,確認(rèn) Apache 是否被正確配置,能接受非 ASCII 文件名:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'
常見(jiàn)的配置文件路徑是 /etc/apache2/envvars
5, 啟用網(wǎng)站
啟用配置/棄用
sudo a2ensite/a2dissite path/to/wsgi.conf
檢查你的配置文件
apache2ctl configtest如果有問(wèn)題,可以根據(jù)提示解決
sudo service apache2 start/restart
6, 最后
curl http://localhost/api 檢查你的網(wǎng)站,也可以在瀏覽器打開(kāi)相應(yīng)的地址