2011-11-16 31 views
8

Tôi đang cố gắng thiết lập môi trường địa phương Django dev sử dụng các máy ảo được bật với Vagrant nhưng tôi không chắc chắn cách tốt nhất để thực hiện điều đó.Bạn đã thiết lập môi trường Django dev như thế nào?

Tôi đã thực hiện git clone cho các tệp Django từ máy chủ sản xuất và cài đặt tất cả các mô-đun mà máy chủ sản xuất có trên máy ảo cục bộ của tôi. Tôi muốn tránh cài đặt một cơ sở dữ liệu trên máy ảo cục bộ của mình nhưng gặp phải một số vấn đề với các phiên. Máy địa phương đang sử dụng SESSION_COOKIE_DOMAIN='localhost' và quá trình sản xuất đang sử dụng SESSION_COOKIE_DOMAIN='.mydomain.com' để tạo ra một số nhầm lẫn. Chưa kể rằng trên setting.py trên môi trường dev của tôi, tôi đã phải thay đổi IP để trỏ đến địa chỉ IP công cộng của cơ sở dữ liệu (do đó đặt một lỗ hổng về bảo mật) trong khi settings.py sản xuất của tôi đang sử dụng địa phương IP vì vậy tôi đã kết thúc bằng cách sử dụng các tập tin settings.py khác nhau.

Tôi có thể tiếp tục thử nghiệm với các phương pháp mới nhưng tôi thực sự phải bắt đầu với dự án và tôi khá chắc chắn một số người đã tìm ra điều này.

Vậy bạn đã thiết lập môi trường devango dev của mình như thế nào?

+0

Câu hỏi về StackOverflow phải rõ ràng là có thể trả lời. Có hàng chục cách để thiết lập một môi trường Django và hầu hết trong số đó đều thích hợp với sở thích cá nhân của các nhu cầu cá nhân của ứng dụng đã cho. Nếu bạn muốn có một số ý tưởng, Google là nơi dành cho điều đó. –

+0

@Chris Pratt Tôi đánh giá cao ý kiến ​​của bạn. – avatar

+0

Câu hỏi này đã được hỏi nhiều lần rồi. Xem http://stackoverflow.com/questions/1626326/how-to-manage-local-vs-production-settings-in-django và http://stackoverflow.com/questions/88259/how-do-you-configure -django-for-simple-development-và-deploy –

Trả lời

1

có một vài Apps django mà tôi đã nhìn thấy để quản lý này nhưng tôi luôn thích sau trong settings.py của tôi như số lượng configs khác nhau thường tối thiểu

SITE_TYPE = environ.get('SITE_TYPE', 'DEV') 

if SITE_TYPE == 'LIVE': 
    DEBUG = False 
    DEFAULT_HOST = '' 
else: 
    DEBUG = True 
    DEFAULT_HOST = '50.56.82.194' 
    EMAIL_HOST = DEFAULT_HOST 
+0

Bạn có một cơ sở dữ liệu dev riêng biệt tương tự như DB sản xuất hay bạn chỉ trỏ mã Django dev của bạn đến DB sản xuất? Cảm ơn bạn đã đặt một số ánh sáng về chủ đề này. – avatar

2

Tôi có một repo công cộng trên GitHub sẵn ở đây:

https://github.com/FlipperPA/djangovagrant

dẫn từ README.md:

Django/Python/M ySQL

Đây là dự án Vagrant dành cho phát triển Django.

Điều này chưa hỗ trợ berkshelf hoặc thủ thư; tất cả các repos cần thiết được bao gồm trong 'sách dạy nấu ăn'.

Điều kiện tiên quyết, tất cả các nền tảng:

VirtualBox https://www.virtualbox.org/wiki/Downloads Vagrant http://downloads.vagrantup.com/

Điều kiện tiên quyết, chỉ dành cho Windows:

git-bash ruby ​​RVM

Khá dễ dàng để làm cho nó chạy:

vagrant up 
vagrant ssh djangovm 

** (Lưu ý: Bây giờ bạn đang ở trong Virtualbox VM như superuser lang thang)

sudo apt-get install python-pip 

** (Lưu ý: PIP là một người quản lý gói Python)

sudo apt-get install python-mysqldb 
sudo pip install django 

Bắt đầu từ một dự án Django:

django-admin.py startproject django_project 
cd django_project 
python manage.py runserver [::]:8000 

VM được định cấu hình để sử dụng cổng chuyển tiếp.Nếu mọi thứ diễn ra đúng, bạn sẽ có thể truy cập vào máy chủ đang chạy thông qua trình duyệt trên máy tính chạy máy ảo tại url này:

http://localhost:8001/ 

Mới cho Django? Bước tiếp theo? Tôi khuyên bạn nên: http://www.tangowithdjango.com/ Để biết thêm các chủ đề nâng cao, hãy xem Hai Muỗi của Django: http://twoscoopspress.org/

+0

Xem xét cảnh báo trên trang đầu của djangobook, tại sao bạn đề xuất nó? – pydanny

+0

Hi pydanny, tôi đã cập nhật các repo trong GitHub của tôi để trỏ đến Tango Với Django, và tuyệt vời của bạn Hai Scoops of Django cuốn sách cho các chủ đề nâng cao hơn. Cảm ơn cho những người đứng đầu lên. – FlipperPA

+0

@FlipperPA: Nó có phát hiện các thay đổi và tải lại 'máy chủ django' nếu tôi thay đổi bất kỳ tệp' .py' nào trên máy khách của tôi không? Tôi đang cố gắng này và nó không tải lại máy chủ django. –

0

Tôi có thể đề xuất this repository.

Bạn có thể sửa đổi nó để hỗ trợ các dự án Django.

Vagrantfile cập nhật:

config.vm.define "web1", primary: true do |web1_config| 
    web1_config.ssh.forward_agent = true 

    # Create a private network, which allows host-only access to the machine 
    web1_config.vm.network "private_network", ip: "192.168.11.10" 
    web1_config.vm.hostname = "web1.#{domain}" 

    web1_config.vm.provision "shell", path: "provisioners/shell/python.setup.sh" 
    web1_config.vm.provision "shell", path: "provisioners/shell/application.setup.sh" 
    end 

Sau đó, thêm một tập tin provisioners/shell/application.setup.sh với nội dung sau:

#!/bin/bash 

local_user=vagrant 

if [ ! -n "$(grep "^bitbucket.org " /home/$local_user/.ssh/known_hosts)" ]; then 
    ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts 2>/dev/null; 
fi 

if [[ ! -d "/home/$local_user/app" ]]; then 
    git clone [email protected]:czerasz/sample-django-app.git /home/$local_user/app 

    chown -R $local_user:$local_user /home/$local_user/app 

    su - $local_user -c "source /usr/local/bin/virtualenvwrapper.sh && mkvirtualenv sample-django-app-env && workon sample-django-app-env && pip install -r /home/$local_user/app/requirements.txt" 
fi 

Thay đổi địa chỉ kho ([email protected]:czerasz/sample-django-app.git) và thực hiện cũng chắc chắn rằng bạn có một requirements.txt trong thư mục gốc kho lưu trữ git của bạn. Chạy vagrant up.

Vagrant sẽ bắt đầu hai máy:

  • web1 với dự án django bạn
  • db1 với một cơ sở dữ liệu PoestgreSQL

Nếu bạn vẫn còn có vấn đề thêm dòng sau vào Vagrantfile của bạn:

web1_config.ssh.private_key_path = [ '~/.vagrant.d/insecure_private_key', '~/.ssh/bitbucket' ] 

Và thực hiện lệnh này trên máy chủ của bạn (máy tính nơi bạn chạy vagrant):

ssh-add ~/.ssh/bitbucket 

Các ~/.ssh/bitbucket là ssh private key mà bạn sử dụng cho bitbucket. Nó có thể là ~/.ssh/id_rsa hoặc một cái gì đó khác nhau tùy thuộc vào cách bạn cấu hình nó.

Các vấn đề liên quan