Ich schlage vor, den Prozess der Installation und Konfiguration eines Django-Projekts auf Mac OS X basierend auf einem vorhandenen Projekt in Betracht zu ziehen.
Einige der Schritte ähneln denen, die bereits im Artikel zur Installation von Django für Ubuntu ausgeführt wurden.
Einrichten der virtuellen Umgebung
- Installieren Sie Python 3
brauen installieren python3
2.Installieren Sie alle Pips
sudo easy_install pip
- Installieren Sie virtualenv und erstellen Sie eine virtuelle Umgebung
sudo pip3 install virtualenv
- Richten Sie eine virtuelle Umgebung für das Projekt ein
virtualenv project_env --python=python3
- Wechseln Sie in das Verzeichnis der virtuellen Umgebung des Projekts und klonen Sie das Repository.
cd project_env git-Klon git@bitbucket.org:MyUser/project.git
- Wir klonen auch Submodule, wenn Ihr Projekt ein Git-Submodul verwendet.
CD-Projekt git-Submodul init Git-Submodul-Update
- Ich hoffe, Sie verwenden die Datei requirements.txt, denn es ist an der Zeit, alle erforderlichen Pakete im Projekt zu installieren
pip install -r requirements.txt
Installieren Sie die erforderliche Version von Python
Wenn Sie eine bestimmte Version von Python benötigen, beispielsweise wenn Ihre Produktionsserver-Repositories nicht über die neueste Version verfügen, müssen Sie Mac OS X speziell so konfigurieren, dass es mit der erforderlichen Version funktioniert.
brew install pyenv echo 'eval "$(pyenv init -)"' >> ~/.bash_profile source ~/.bash_profile brew install zlib pyenv install 3.6.7
Wenn Sie Python nicht installieren können und der folgende Fehler auftritt
BUILD FAILED (OS X 10.14.4 using python-build 20180424) Inspect or clean up the working tree at /var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274 Results logged to /var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274.log Last 10 log lines: File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__main__.py", line 5, in <module> sys.exit(ensurepip._main()) File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__init__.py", line 204, in _main default_pip=args.default_pip, File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__init__.py", line 117, in _bootstrap return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths) File "/private/var/folders/qk/l3vyb_653ksb55yt5r54rt380000gn/T/python-build.20190421214232.40274/Python-3.6.7/Lib/ensurepip/__init__.py", line 27, in _run_pip import pip._internal zipimport.ZipImportError: can't decompress data; zlib not available make: *** [install] Error 1
Erstellen Sie dann eine .zshrc -Datei mit folgendem Inhalt
# For compilers to find zlib you may need to set: export LDFLAGS="${LDFLAGS} -L/usr/local/opt/zlib/lib" export CPPFLAGS="${CPPFLAGS} -I/usr/local/opt/zlib/include" # For pkg-config to find zlib you may need to set: export PKG_CONFIG_PATH="${PKG_CONFIG_PATH} /usr/local/opt/zlib/lib/pkgconfig"
Folgen Sie dann den restlichen Schritten.
source .zshrc pyenv install 3.6.7
Überprüfen Sie die verfügbaren Python-Versionen
pyenv versions
Installieren Sie die erforderliche Version von Python
pyenv local 3.6.7 pyenv global 3.6.7
Überprüfen Sie die Version von Python, die derzeit auf Ihrem Mac OS X verwendet wird.
python --version
Danach müssen Sie alle Schritte aus den Einstellungen der virtuellen Umgebung ab Schritt 4 wiederholen, wenn Sie virtualenv bereits installiert haben. Oder alle diese Schritte komplett wiederholen.
PostgreSQL installieren und konfigurieren
- Entfernen einer früheren Version von Postgres
brew uninstall --force postgresql
- Entfernen Sie alle Postgres-Dateien
rm -rf /usr/local/var/postgres
- Installation von Postgres mit Homebrew
brauen postgres installieren
- Installation von PostGIS mit Homebrew
Postgis brauen installieren
- Starten Sie den PostgreSQL-Server. Möglicherweise müssen Sie diesen Befehl jedes Mal ausführen, wenn Sie eine Website entwickeln.
pg_ctl -D /usr/local/var/postgres start
- Erstellung der Projektdatenbank. Viele dieser Schritte wurden im allerersten Artikel zum Einrichten von Django auf einem Computer behandelt, auf dem das Betriebssystem ausgeführt wird.
psql-postgres DATENBANK ERSTELLEN myproject; BENUTZER ERSTELLEN myprojectuser MIT PASSWORT 'password'; ALTER ROLE myprojectuser SET client_encoding TO 'utf8'; ALTER ROLE myprojectuser SET default_transaction_isolation TO 'Read Committed'; ALTER ROLE myprojectuser SETze die Zeitzone auf „UTC“; GEWÄHREN SIE ALLE PRIVILEGIEN AUF DATENBANK myproject AN myprojectuser; \q
Nginx installieren und konfigurieren.
Ich verwende Nginx, um statische Inhalte zu verteilen, also installieren wir Nginx auch auf dem Entwicklungscomputer.
brew install nginx sudo brew services start nginx
Nginx konfigurieren
An dieser Stelle müssen Sie den Nginx-Server einrichten. Warum müssen Sie die Datei nginx.conf bearbeiten und Ihre Servereinstellungsdatei im Serververzeichnis erstellen.
nano /usr/local/etc/nginx/nginx.conf
Löschen Sie den Inhalt der Datei und fügen Sie die folgenden Informationen hinzu.
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include servers/*; }
Erstellen Sie dann eine Datei myproject
touch /usr/local/etc/nginx/servers/myproject
Und fügen Sie Inhalte hinzu, die so aussehen.
server { listen 80; server_name 111.222.333.44; # здесь прописать или IP-адрес или доменное имя сервера location /static/ { root /Users/<user>/myprojectenv/myproject/myproject/; expires 30d; } location /media/ { root /Users/<user>/myprojectenv/myproject/myproject/; expires 30d; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Starten Sie dann den Nginx-Server neu
sudo brew services restart nginx
Fazit
Und dann vergessen Sie nicht, die Datenbank zu migrieren, statische Dateien durch collectstatic und andere in Ihrem Projekt notwendige Verfahren zu sammeln.
Für Django empfehle ich Timeweb VDS-Server .