دستهبندیهای سایت
مشاهده دستهبندیها
بستن دستهبندیها
-
AbanteCart
-
ActiveMQ
-
Akeneo
-
Alfresco Community
- Apache
-
Apache Airflow
-
Apache Guacamole
-
Apache Solr
-
Canvas LMS
-
Cassandra
- CI/CD
-
CiviCRM
-
CMS Made Simple
-
Code Dx
-
Composr
-
Concrete5
-
Confluent Platform
-
Coppermine
-
CouchDB
- cPanel
-
Diaspora
- Directadmin
-
Discourse
-
Django
-
DokuWiki
-
Dolibarr
-
DreamFactory
-
Drupal
-
Elasticsearch
-
ELK
-
ERPNext
-
EspoCRM
-
Etcd
-
eXo Platform
-
Fat Free CRM
-
Ghost
-
GitLab CE
-
GitLab EE
-
Grafana
-
Hadoop
-
HashiCrop Consul
-
HHVM
-
Horde Groupware Webmail
-
JasperReport
-
Jenkins
-
JetBrain YouTrack
-
JFrog Artifactory Open Source
-
Joomla
-
JRuby
-
Kafka
-
Kong
-
Kubernetes Sandbox
-
Lamp
-
LAMP Production-Ready
-
LAPP
-
Let’s Chat
-
Liferay
-
Limesurvey
-
Live Helper Chat
- LVM
-
Magento
-
Mahara
-
Mantis
-
MariaDB
-
MariaDB Galera
-
Matomo
-
Mattermost
-
Mautic
-
MEAN
-
MediaWiki
-
Memcached
-
MODX
-
MongoDB
-
Moodle
-
MyBB
-
MySQL
-
NATS
-
Neo4j
-
Neos
- Nginx
-
NGINX Open Source
-
Noalyss
-
Node.JS
-
Node.js
-
nopCommerce
-
Odoo
-
Open Atrium
-
Open EdX
-
Opencart
-
Openfire
-
OpenProject
-
Orange HRM
-
OroCRM
-
OsClass
-
Owncloud
-
OXID EShop
-
Parse Server
-
Phabricator
-
PhpBB
-
PhpList
-
Pimcore
-
Plone
-
Pootle
-
PostgreSQL
-
Prestashop
-
ProcessMaker Community
-
ProcessWire
- ProFTPD
-
Publify
-
RabbitMQ
-
Redash
-
Redis
-
Redmine
-
Redmine+Agile
-
ReportServer Community
-
ReportServer Enterprise
-
Resource Space
-
Review Board
-
Review Board + Power Pack
-
Roundcube
-
Ruby
-
SEO Panel
-
SilverStripe
-
Simple Machines Forum
-
SonarQube
-
Spree
-
Subversion
-
SuiteCRM
-
TensorFlow Serving
-
TestLink
-
Tiki Wiki CMS Groupware
-
Tiny Tiny RSS
-
Tomcat
-
Trac
-
TYPO3
- Virtualmin
-
Weblate
-
WebMail Pro PHP
-
WildFly
-
Wordpress
-
WordPress Multisite
-
WordPress Production-Ready
-
WordPress With NGINX And SSL
-
XOOPS
-
ZooKeeper
-
Zurmo
مشاهده همه دستهها
پیادهسازی پروژه Django برای Weblate
در این مقاله:
نکته: ما در حال تغییر ساختار فایل و پیکربندی بسیاری از استکهای بیتنامی هستیم. در نتیجهی این تغییرات، مسیر فایلهایی که در این آموزش به آنها اشاره شده ممکن است تغییر کند که این موضوع هم بستگی دارد که استک بیتنامی شما از پکیجهای سیستمی نیتیو لینوکس استفاده میکند (رویکرد A) یا نسخهای self-contained است (رویکرد B). برای تشخیص نوع استکتان و انتخاب رویکرد متناسب، دستور زیر را اجرا کنید:
test ! -f "/opt/bitnami/common/bin/openssl" && echo "Approach A: Using system packages." || echo "Approach B: Self-contained installation."
خروجی این دستور نشان میدهد که اپلیکیشن شما از کدام رویکرد (A یا B) استفاده میکند و به شما کمک میکند که در این راهنما مسیر، پیکربندی و دستورات متناسب با آن را انتخاب کنید. برای اطلاعات بیشتر راجع به این تغییرات، به بخش سوالات رایج مراجعه کنید.
توسعه
برای توسعه، با اجرای دستور زیر در پوشهی پروژه از سرور مستقل در جنگو استفاده کنید:
python3 manage.py runserver SERVER-IP:PORT
اکنون باید با وارد کردن آدرس http://SERVER-IP:PORT به پروژهتان دسترسی داشته باشید.
SERVER-IP و PORT پارامترهای اختیاری هستند. اگر هیچکدام از این موارد را مشخص نکنید، به صورت پیشفرض از 127.0.0.1:8000 استفاده میشود. اگر میخواهید بعدا از راه دور به سرور دسترسی داشته باشید، باید از آیپی آدرس 0.0.0.0 یا آیپی آدرس واقعی سرورتان استفاده کنید.
مهم: فراموش نکنید که پورت مورداستفادهی سرور جنگو را در دیوارهی آتش سرور باز کنید. برای اطلاعات بیشتر به بخش سوالات رایج مراجعه کنید.
محصول نهایی
رویکرد A: اپلیکشینهایی که از پکیجهای سیستمی استفاده میکنند
برای توزیع اپلیکیشنتان از طریق وبسرور آپاچی با ماژول mod_wsgi مراحل زیر را دنبال کنید.
فعالسازی پیکربندی WSGI برای اپلیکیشن جنگو
اطمینان حاصل کنید که پروژهی جنگو شامل یک فایل wsgi.py با محتوایی شبیه به محتوای زیر باشد:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PROJECT.settings')
application = get_wsgi_application()
فعالسازی هاستهای مجازی از پیش تعریفشده برای یک پروژهی جنگو
استک بیتنامی همراه هاستهای مجازی HTTP و HTTPS از پیش تعریفشدهای برای اجرای پروژههای جنگو با ماژول mod_wsgi عرضه میشود. برای فعالسازی آنها، مراحل زیر را دنبال کنید:
· فایلها را برای حذف پسوند .disabled کپی کنید:
sudo cp /opt/bitnami/apache2/conf/vhosts/sample-vhost.conf.disabled /opt/bitnami/apache2/conf/vhosts/sample-vhost.conf
sudo cp /opt/bitnami/apache2/conf/vhosts/sample-https-vhost.conf.disabled /opt/bitnami/apache2/conf/vhosts/sample-https-vhost.conf
نکته: در این مثال فرض شده که نام پروژهی جنگوی شما sample و محل قرارگیری آن /opt/bitnami/projects/sample باشد. اگر پروژهی جنگوی شما نام دیگری دارد یا در محل دیگری است، آدرسهای فوق را متناسب با پروژهی خودتان ویرایش کنید.
· آپاچی را دوباره راهاندازی کنید تا تغییرات اعمال شوند:
sudo /opt/bitnami/ctlscript.sh restart apache
پیکربندی پروژهی جنگو به منظور دسترسی عمومی
برای آمادهسازی پروژهی جنگو بهگونهای که بهخوبی در مرورگرتان کار کند، به چند تغییر اضافی نیاز دارید. فایل settings.py پروژهی جنگو را باز و مراحل زیر را دنبال کنید:
- خط زیر را به ابتدای فایل اضافه کنید:
import os
- حالت DEBUG را غیرفعال کنید:
DEBUG = False
- گزینهی ALLOWED_HOSTS را بهگونهای تنظیم کنید که پروژهی جنگو از راه دور نیز در دسترس باشد:
- دسترسی عمومی به پروژهی جنگو:
ALLOWED_HOSTS = ['*']
-
- دسترسی محدود. برای مثال پاسخگویی فقط به درخواستهای ارسالی از آیپی آدرس 11.22.33.44:
ALLOWED_HOSTS = ['11.22.33.44']
- STATIC_URL و STATIC_ROOT را بهگونهای تنظیم کنید که فایلهای استاتیک را توزیع کنند:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
- فایلهای استاتیک را بیلد کنید. دستور زیر را اجرا کنید:
python manage.py collectstatic --noinput
- اگر اَبَرکاربر جنگو ندارید، یکی بسازید.
ایجاد یک هاست مجازی دلخواه
اگر هاستهای مجازی از پیش تعریفشده در دسترس شما نیست یا ترجیح میدهید از پیکربندی دلخواهتان استفاده کنید، مراحل زیر را برای ایجاد یک هاست مجازی دلخواه دنبال کنید:
نکته: در مراحل زیر فرض شده که پروژهی جنگوی شما در دایرکتوری /opt/bitnami/projects قرار داشته باشد.
- فایل /opt/bitnami/apache2/conf/vhosts/myapp-http-vhost.conf را ایجاد و ویرایش کنید و خطوط زیر را به آن اضافه کنید:
<IfDefine !IS_APPNAME_LOADED>
Define IS_APPNAME_LOADED
WSGIDaemonProcess APPNAME python-home=/opt/bitnami/python python-path=/opt/bitnami/projects/APPNAME
</IfDefine>
<VirtualHost 127.0.0.1:80 _default_:80>
ServerAlias *
WSGIProcessGroup APPNAME
Alias /robots.txt /opt/bitnami/projects/APPNAME/static/robots.txt
Alias /favicon.ico /opt/bitnami/projects/APPNAME/static/favicon.ico
Alias /static/ /opt/bitnami/projects/APPNAME/static/
<Directory /opt/bitnami/projects/APPNAME/static>
Require all granted
</Directory>
WSGIScriptAlias / /opt/bitnami/projects/APPNAME/APPNAME/wsgi.py
<Directory /opt/bitnami/projects/APPNAME/APPNAME>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
نکته: APPNAME را با نام واقعی پروژهتان جایگزین کنید.
- فایل /opt/bitnami/apache2/conf/vhosts/myapp-https-vhost.conf را ایجاد و ویرایش کنید و خطوط زیر را به آن اضافه کنید:
<IfDefine !IS_APPNAME_LOADED>
Define IS_APPNAME_LOADED
WSGIDaemonProcess APPNAME python-home=/opt/bitnami/python python-path=/opt/bitnami/projects/APPNAME
</IfDefine>
<VirtualHost 127.0.0.1:443 _default_:443>
ServerAlias *
SSLEngine on
SSLCertificateFile "/opt/bitnami/apache2/conf/bitnami/certs/server.crt"
SSLCertificateKeyFile "/opt/bitnami/apache2/conf/bitnami/certs/server.key"
WSGIProcessGroup APPNAME
Alias /robots.txt /opt/bitnami/projects/APPNAME/static/robots.txt
Alias /favicon.ico /opt/bitnami/projects/APPNAME/static/favicon.ico
Alias /static/ /opt/bitnami/projects/APPNAME/static/
<Directory /opt/bitnami/projects/APPNAME/static>
Require all granted
</Directory>
WSGIScriptAlias / /opt/bitnami/projects/APPNAME/APPNAME/wsgi.py
<Directory /opt/bitnami/projects/APPNAME/APPNAME>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
نکته: APPNAME را با نام واقعی پروژهتان جایگزین کنید.
- سرور آپاچی را دوباره راهاندازی کنید:
sudo /opt/bitnami/ctlscript.sh restart apache
رویکرد B: اپلیکیشنهای Self-contained بیتنامی
برای محصول نهایی توصیهی ما این است که پیش از شروع به توزیع اپلیکیشنتان، آپاچی را با ماژول mod_wsgi پیکربندی کنید (که از پیش نصب و بهصورت پیشفرض فعال است).
- ابتدا فایل اسکریپت اپلیکیشن WSGI را که در مسیر PROJECT/PROJECT/wsgi.py داخل دایرکتوری پروژهی جنگو قرار دارد ویرایش و اصلاح کنید. فراموش نکنید که به جای PROJECT مسیر صحیح و نام پروژهی جنگویتان را بنویسید.
نکته: اگر هنگام ویرایش فایل فوق با مشکل مواجه شدید، بررسی کنید که مجوزها به خوبی تنظیم شدهاند یا خیر.
کلیت محتوای فایل باید شبیه قطعه کد زیر باشد، هرچند ممکن است جزئیات آن با توجه به پروژهی شما تفاوتهایی داشته باشد. پروژهتان را با دستور sys.path.append به path هم اضافه کنید.
import os
import sys
sys.path.append('/opt/bitnami/apps/django/django_projects/PROJECT')
os.environ.setdefault("PYTHON_EGG_CACHE", "/opt/bitnami/apps/django/django_projects/myproject/egg_cache")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
- در دایرکتوری /opt/bitnami/apps/django/django_projects/PROJECT یک پوشهی conf/ ایجاد کنید:
mkdir /opt/bitnami/apps/django/django_projects/PROJECT/conf
- فایلهای زیر را ایجاد کنید:
touch /opt/bitnami/apps/django/django_projects/PROJECT/conf/httpd-prefix.conf
touch /opt/bitnami/apps/django/django_projects/PROJECT/conf/httpd-app.conf
- در لینوکس میتوانید در حالت daemon، اپلیکیشن را با mod_wsgi اجرا کنید. کد زیر را به فایل /opt/bitnami/apps/django/django_projects/PROJECT/conf/httpd-app.conf اضافه کنید.
<IfDefine !IS_DJANGOSTACK_LOADED>
Define IS_DJANGOSTACK_LOADED
WSGIDaemonProcess wsgi-djangostack processes=2 threads=15 display-name=%{GROUP}
</IfDefine>
<Directory "/opt/bitnami/apps/django/django_projects/PROJECT/PROJECT">
Options +MultiViews
AllowOverride All
<IfVersion >= 2.3>
Require all granted
</IfVersion>
WSGIProcessGroup wsgi-djangostack
WSGIApplicationGroup %{GLOBAL}
</Directory>
Alias /PROJECT/static "/opt/bitnami/apps/django/lib/pythonA.B/site-packages/Django-X.Y.Z-pyA.B.egg/django/contrib/admin/static"
WSGIScriptAlias /PROJECT '/opt/bitnami/apps/django/django_projects/PROJECT/PROJECT/wsgi.py'
نکته: A.B نسخهی پایتون (مثلن 3.6) و X.Y.Z نسخهی جنگو است (مثلن 2.0.2).
- به فایل /opt/bitnami/apps/django/django_projects/PROJECT/conf/httpd-prefix.conf کد زیر را اضافه کنید:
Include "/opt/bitnami/apps/django/django_projects/PROJECT/conf/httpd-app.conf"
- خط زیر را به فایل /opt/bitnami/apache22/conf/bitnami/bitnami-apps-prefix.conf اضافه کنید:
Include "/opt/bitnami/apps/django/django_projects/PROJECT/conf/httpd-prefix.conf"
- فایل /opt/bitnami/apps/django/django_projects/PROJECT/PROJECT/settings.py را ویرایش و مقدار متغیر ALLOWED_HOSTS را با آیپی آدرس سرورتان به روز کنید. مشابه مثال زیر:
ALLOWED_HOSTS = ['SERVER-IP', 'localhost', '127.0.0.1']
- سرور آپاچی را دوباره راهاندازی کنید:
sudo /opt/bitnami/ctlscript.sh restart apache
اکنون باید با وارد کردن آدرس http://SERVER-IP/PROJECT/APP به پروژهتان دسترسی داشته باشید.