[PYTHON] [Fehler] Installieren Sie den Stapelüberlauf-Klon Askbot unter CentOS 6.4

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.

Python-Paketverwaltung

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.

Installieren Sie Askbot

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.

Installieren Sie DB

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.

Datenbank erstellen

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

Askbot-Grundeinstellungen

……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.

So finden Sie die Version von Django heraus

$ 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.

Fügen Sie Askbot erneut in die virtuelle Umgebung ein

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! !!

Wiederholen

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! !!

Veröffentlichen Sie auf Nginx und uWSGI

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

Referenz

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

[Fehler] Installieren Sie den Stapelüberlauf-Klon Askbot unter CentOS 6.4
Installieren Sie Faiss unter CentOS 7
Installieren Sie numba unter CentOS 7.2
Installieren Sie Python3.4 unter CentOS 6.6
Installieren Sie mecab-python unter CentOS
Installieren Sie awscli auf centos7
Installieren Sie Chainer unter CentOS 6.7
Installieren Sie die ImageMagick-6.2.x-Serie unter CentOS7.7
Installieren Sie Python 3.8 unter CentOS 7 (SCL)
Installieren Sie Chrome unter der CentOS 7-Serie
Installieren Sie Python 3.8 unter CentOS 8 (AppStream)
Schritte zum Installieren von MySQL 8.0 unter CentOS 8.1
Himbeer Pi 4 Centos7 auf Docker installieren
Schritte zum Installieren von VirtualBox unter CentOS
So installieren Sie PyPy unter CentOS
So installieren Sie TensorFlow unter CentOS 7
Installieren Sie pip unter CentOS7. Auch iPython.
Installieren Sie VirtualBox unter CentOS 7 unter VirtualBox (Mac + Vagrant)
So installieren Sie Maven unter CentOS
Studienhinweis 9_Installieren Sie Jenkins unter CentOS7
Installieren Sie Python unter CentOS mit pyenv
Aktivieren Sie den Befehl sar unter CentOS (installieren Sie sysstat).
So installieren Sie Eclipse GlassFish 5.1.0 unter CentOS7
So installieren Sie Apache (httpd) unter CentOS8
Installieren Sie PostgreSQL aus dem Quellcode unter CentOS
Installieren Sie pyenv und rbenv systemweit unter CentOS
CentOS8 --Installieren - Django
CentOS8 --Installieren - Python3