Ich habe mich sehr bemüht, weil ich einen Dienst im Stack Overflow-Stil verwenden wollte, aber er ist fehlgeschlagen. Wenn Sie stattdessen PHPs Question2Answer verwenden, werden Sie ohne großen Aufwand erfolgreich sein.
Das Folgende ist eine Aufzeichnung, die vergebens endete.
Ich wollte einen Stack Overflow-Klon auf Sakuras VPS CentOS ausführen, also habe ich versucht, Shapado einzufügen, das in Rails geschrieben und in der Entwicklung aktiv ist, aber fehlgeschlagen ist. Deshalb habe ich dieses Mal AskBot verwendet, das in Python Framework Django geschrieben wurde. Ich habe mich entschieden, es zu benutzen. Ich hoffe, dass die Installation diesmal erfolgreich sein wird.
Anscheinend benutze ich pip
oder easy_install
für die Installation, aber das weiß ich nicht!
Als ich nachgeschlagen habe, schienen beide Python-Paketverwaltungsbefehle zu sein, aber bitte verwenden Sie easy_install und andere Namen, die möglicherweise anfallen, nicht mehr. Da pip eine Erweiterung von easy_install ist, ist es besser, pip zu verwenden, es sei denn, es gibt einen bestimmten Grund.
Python hat 2.7.3, aber es wird nicht standardmäßig angezeigt, da nichts herauskommt, selbst wenn ich "$ which pip" oder "$ which easy_install" mache. Damit
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py
$ sudo easy_install pip
Setzen Sie easy_install ein und pip in.
Jetzt, da Sie bereit sind, installieren Sie Askbot.
$ sudo pip install askbot
Wenn Sie denken "Oh, das ist einfach. Yahoi (= '▽` =) nein "
Could not find a version that satisfies the requirement pytz (from askbot) (from versions: 2011h, 2010b, 2012f, 2010e, 2005m, 2011e, 2010l, 2011k, 2010e, 2009u, 2008c, 2006j, 2009f, 2005m, 2009j, 2009g, 2005k, 2010g, 2010h, 2007c, 2009i, 2007k, 2008g, 2008g, 2009j, 2007i, 2006g, 2008h, 2008i, 2009i, 2006p, 2009p, 2010k, 2007f, 2008i, 2009l, 2009i, 2008g, 2007d, 2010l, 2007k, 2007g, 2009g, 2007c, 2009n, 2009e, 2008c, 2007i, 2008a, 2010o, 2006g, 2009a, 2009p, 2009a, 2010l, 2007k, 2010h, 2007c, 2009r, 2006j, 2011c, 2011j, 2012h, 2009u, 2006g, 2009g, 2005r, 2010b, 2009n, 2009u, 2010g, 2005k, 2007i, 2006p, 2011b, 2013b, 2005k, 2005m, 2006p, 2005r, 2009r, 2009f, 2006j, 2009p, 2009n, 2009l, 2009j, 2008h, 2009e, 2009d, 2008b, 2010o, 2008b, 2008i, 2011k, 2009d, 2009a, 2009r, 2010k, 2010e, 2007f, 2008a, 2008a, 2009d, 2008h, 2012j, 2008b, 2009e, 2007f, 2010k, 2010g, 2011e, 2012h, 2011g, 2012g, 2011g, 2011c, 2013d, 2011e, 2011h, 2012j, 2011n, 2007d, 2012g, 2011j, 2008c, 2009f, 2013b, 2007g, 2005r, 2012c, 2012j, 2010b, 2009l, 2007g, 2012b, 2011c, 2011g, 2012c, 2011d, 2011d, 2012d, 2011k, 2012b, 2011n, 2012f, 2012f, 2010o, 2007d, 2012b, 2012c, 2011h, 2013d, 2013b, 2010h, 2011d, 2012d, 2011n, 2013d, 2011j, 2012g, 2012d, 2004b) Cleaning up... No distributions matching the version for pytz (from askbot)
Ich war wütend auf die seltsam lange Fehlermeldung und verbeult.
Es scheint, dass pip standardmäßig nur stabile Pakete verwendet.
$ sudo pip install --pre askbot
Dann scheint es OK.
Die Empfehlung scheint PostgreSQL zu sein. Da PostgreSQL bereits enthalten ist, installieren Sie nur Python-bezogene Pakete
$ sudo pip install psycopg2
Dann
UnicodeDecodeError: 'ascii' codec can't decode
Ich habe einen Fehler erhalten. Als ich ihn nachgeschlagen habe, muss ich anscheinend Python-Devel einfügen.
$ sudo yum install python-devel
Danach habe ich psycopg2 erneut installiert und es war erfolgreich.
psql -U username -d postgres
Einloggen mit
postgres=> create database database_no_namae with owner=username;
CREATE DATABASE
postgres=> alter user username with password 'himitsu_no_pass';
postgres=> \q
Erstellen Sie eine Datenbank für Askbot. Wenn Sie sich nicht für ein Kennwort entschieden haben, legen Sie ein Kennwort für den Benutzer fest.
Und fügen Sie die folgende Beschreibung oben in pg_hba.conf
hinzu
local database_no_namae username md5
Es scheint jedoch ziemlich ärgerlich zu sein, herauszufinden, wo sich diese pg_hba.conf befindet.
Es befand sich in meiner Umgebung in / var / lib / pgsql / 9.2 / data / pg_hba.conf
, aber es könnte sich woanders befinden.
Weitere Informationen finden Sie unter dem Referenzlink.
Starten Sie dann postgresql neu
$ sudo /etc/init.d/postgresql-9.2 restart
……müde. Nun, dies ist der Beginn der Einstellung von Askbot selbst.
Erstellen Sie zunächst ein Verzeichnis für Askbot. Achten Sie zu diesem Zeitpunkt darauf, "." Nicht einzuschließen. (Weil es gegen Pythons Modulnamenkonvention verstößt.)
In meinem Fall habe ich es wie "/ home / username / apps / askbotnobasyo" erstellt.
Gehen Sie in das von Ihnen erstellte Verzeichnis und klicken Sie dort auf "$ askbot-setup".
Anschließend wird eine Datei zum Einrichten erstellt. Verwenden Sie daher den Installationsbefehl collectstatic.
$ python manage.py collectstatic
Und Datenbankinitialisierung
$ python manage.py syncdb
Andererseits kam Type Error: Item in`` from list '' not a string
heraus und ich wollte mir gerade das Herz brechen.
Ich habe im Deller Informationen gefunden, die ich auf 1.4.2 aktualisieren sollte, die besagen, dass die Version von Django 1.4 ist, aber ich weiß nicht einmal, wie ich die Version von Django aktualisieren oder sogar überprüfen soll.
$ python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.get_version()
'1.5.2'
Wenn dies mindestens 1.4 wäre, hätte ich das Update ausprobieren können ...
-- Verstrichene Zeit --
Anscheinend ist 1.5 zu neu, um es zu verwenden, also Downgrade auf 1.4. Als ich es recherchierte, schien es jedoch üblich, ein Modul zu verwenden, das eine Python-Umgebung in einem bestimmten Verzeichnis namens virtualenv erstellt, und es werden nur Antworten gegeben, die darauf basieren.
Da es keine Hilfe dafür gibt, werde ich eine Umgebung mit virtualenv erstellen und Askbot dort neu installieren. Installieren Sie zuerst virtualenv
$ sudo pip install virtualenv
Erstellen Sie eine virtuelle Umgebung, aktivieren Sie die virtuelle Umgebung und installieren Sie Django 1.4.5
$ virtualenv askbotnobasyo
$ cd askbotnobasyo
$ . /bin/activate
$ pip install django==1.4.5
Erstellen Sie eine Initialisierungsdatei für askbot
$ askbot-setup
Es endet, wenn Sie antworten, was Sie gefragt werden. Und
$ python manage.py collectstatic
Dann werden alle statischen Dateien wie .css und .js in einem Ordner generiert ...
... Nein! !! Es ist wieder ein Fehler! Fälschung! !!
Hören wir doch auf, virtualenv zu verwenden. Es gibt sowieso nur eine Umgebung. Also entkomme der virtuellen Umgebung mit "$ disable".
Ich habe virtualenv verwendet, weil ich nicht wusste, wie man Django herunterstuft, aber als ich darüber nachdachte, bemerkte ich, dass "Deinstallieren-> Installieren in Ordnung ist".
$ sudo pip uninstall django
$ sudo pip install django==1.4.5
Erstellen Sie also einen Projektordner und verschieben Sie ihn
$ askbot-setup
$ python manage.py collectstatic
$ python manage.py syncdb
Bis jetzt war ich auf einen Fehler gestoßen, aber ich habe ihn endlich verstanden! !! !! Yay! !!
Nehmen Sie zunächst eine Domain und registrieren Sie Sakuras VPS in dieser Domain. Wenn Sie hier nicht verstehen, verweisen Sie bitte auf andere Websites.
Nginx arbeitet also bereits in meiner Umgebung, also ist es vorbei. Stellen Sie die Domäne vorerst so ein, dass sie auf den unter Nginx ausgeführten Server zugreifen kann.
Es scheint, dass pypi verwendet werden kann, um uWGSI zu installieren. Ich denke, der Befehl von Pypi ist Pip.
$ sudo pip install uwgsi
Und natürlich der UnicodeDecodeError, der zurückkommt
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 17: ordinal not in range(128)
Es scheint, dass dies passiert, weil das Paket * -devel fehlt. Wenn ja, schreiben Sie die Fehlermeldung bitte richtig.
Es scheint, dass uwgsi sowohl libevent-devel als auch python-devel benötigt, also setzen Sie es ein.
$ yum install libevent-devel
Also habe ich versucht, $ sudo pip uwgsi zu installieren, aber es funktioniert immer noch. Laut den Informationen auf anderen Websites gibt es auch "libxml2-devel" und "python-pip". Versuchen Sie also, "$ sudo yum install libxml2-devel python-pip" zu verwenden.
Endlich gelungen mit der dritten $ sudo pip install uwsgi
!
Erstellen Sie die Nginx-Einstellungen /etc/nginx/site-available/example.com.conf mit
$ sudo ln -s /etc/nginx/site-available/example.com.conf /etc/nginx/site-enabled/exsample.com.conf
Öffnen Sie dann die Konfigurationsdatei mit $ sudo vi exsample.com.conf
server {
listen 80;
server_name exmaple.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/exmaple.com.error.log info;
location / {
include uwsgi_params;
uwsgi_pass localhost:44863
#uwsgi_param UWSGI_PYHOME /path/to/your/virtualenv;
uwsgi_param UWSGI_SCRIPT wsgi; #this is the name of the script
uwsgi_param UWSGI_CHDIR /home/username/apps/appname;
}
location /m/ {
#use this for askbot <= 0.7.39
#alias /path/to/your/virtualenv/lib/python2.7/site-packages/askbot/skins/;
alias /home/username/apps/appname/static/;
autoindex off;
}
location /upfiles/ {
alias /home/username/apps/appname/askbot/upfiles/;
autoindex off;
}
location /admin/media {
alias /home/username/apps/appname/static/admin; #or path to admin media in <= 0.7.39
autoindex off;
}
}
Starten Sie dann mit $ sudo service nginx restart
neu. Wenn die Einstellungen fehlerhaft sind, tritt hier ein Fehler auf.
Benennen Sie django.wsgi im Projektordner in wsgi.py um und starten Sie uwsgi mit verschiedenen Optionen.
$ sudo uwsgi --chdir=/home/username/apps/appname \
--module='appname.wsgi:application' \
--env DJANGO_SETTINGS_MODULE=appname.settings \
--master --pidfile=/tmp/project-master.pid \
--socket=127.0.0.1:44863 \
--processes=5 \
--harakiri=20 \
--limit-as=128 \
--max-requests=5000 \
--vacuum --daemonize=/var/log/uwsgi/appname.log
python - Why is pip not listed in easy_install on CentOS 6? Where to get it? - Super User http://superuser.com/questions/407926/why-is-pip-not-listed-in-easy-install-on-centos-6-where-to-get-it
python - Could not find a version that satisfies the requirement pytz - Stack Overflow http://stackoverflow.com/questions/18230956/could-not-find-a-version-that-satisfies-the-requirement-pytz
Create database for Askbot — Askbot 0.7.48 documentation http://askbot.org/doc/create-database.html
virtualenv - How to install psycopg2 with "pip" on Python? - Stack Overflow http://stackoverflow.com/questions/5420789/how-to-install-psycopg2-with-pip-on-python
python - can't install psycopg2 on centos - Stack Overflow http://stackoverflow.com/questions/12908807/cant-install-psycopg2-on-centos
postgresql - How do I find the path to pg_hba.conf from the shell? - Ask Ubuntu http://askubuntu.com/questions/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell
Re: I need to know password for postgres http://www.postgresql.org/message-id/1029274812.1353.648.camel@linda
Trying AGAIN to install askbot on a clean server and getting TypeError - Askbot: Open Source Q&A Forum http://askbot.org/en/question/11071/trying-again-to-install-askbot-on-a-clean-server-and-getting-typeerror/
python - How to know what django version i use? is it 1.0, 1.1, or 1.2? - Stack Overflow http://stackoverflow.com/questions/4151788/how-to-know-what-django-version-i-use-is-it-1-0-1-1-or-1-2?answertab=votes#tab-top
On syncdb getting TypeError: Item in ``from list'' not a string - Askbot: Open Source Q&A Forum http://askbot.org/en/question/10153/on-syncdb-getting-typeerror-item-in-from-list-not-a-string/
Generics 3.0: Downgrade the pip installed package http://generics7.blogspot.jp/2013/05/downgrade-pip-installed-package.html
Über Python: VIRTUALENV Heute http://blog1.erp2py.com/2011/07/virtualenv.html
virtualenv 1.10.1 : Python Package Index https://pypi.python.org/pypi/virtualenv
How to leave a python virtualenv? - Stack Overflow http://stackoverflow.com/questions/990754/how-to-leave-a-python-virtualenv
How to Step by Step Deploy Askbot uWSGI Nginx on CentOS 6 64bit? - Askbot: Open Source Q&A Forum http://askbot.org/en/question/7829/how-to-step-by-step-deploy-askbot-uwsgi-nginx-on-centos-6-64bit/
How to deploy on nginx webserver using uwsgi? - Askbot: Open Source Q&A Forum http://askbot.org/en/question/7492/how-to-deploy-on-nginx-webserver-using-uwsgi/
python - 'ascii' codec can't decode error when use pip to install uwsgi - Stack Overflow http://stackoverflow.com/questions/17931726/ascii-codec-cant-decode-error-when-use-pip-to-install-uwsgi
Django + uWSGI + NGINX-Umgebungskonstruktionsnotiz unter Ubuntu 12.04 | Ein bestimmtes Vimmer-Blog http://shu-b10g.blogspot.jp/2012/08/django-uwsgi-nginx-on-ubuntu-1204.html
Recommended Posts