[PYTHON] [Échec] Installer le clone de débordement de pile Askbot sur CentOS 6.4

J'ai essayé dur parce que je voulais utiliser un service de style Stack Overflow, mais cela a échoué. Si vous utilisez plutôt Question2Answer de PHP, vous réussirez sans trop d'effort.

Ce qui suit est un disque qui a fini en vain.

Je voulais exécuter un clone Stack Overflow sur le VPS CentOS de Sakura, j'ai donc essayé de mettre Shapado, qui est écrit en Rails et actif en développement, mais j'ai échoué, donc cette fois j'ai utilisé AskBot écrit dans le framework Python Django. J'ai décidé de l'utiliser. J'espère que l'installation réussira cette fois.

Gestion des packages Python

Apparemment, j'utilise pip ou ʻeasy_install` pour l'installation, mais je ne le sais pas!

Quand je l'ai recherché, les deux semblaient être des commandes de gestion de paquets Python, mais arrêtez d'utiliser easy_install et d'autres noms qui pourraient être encourus. Puisque pip est une extension d'easy_install, il est préférable d'utiliser pip à moins qu'il n'y ait une raison spécifique.

Python a 2.7.3, mais il ne semble pas être inclus par défaut car rien ne sort même si je fais $ which pip ou $ which easy_install. Alors

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py
$ sudo easy_install pip

Mettez easy_install et pip.

Installez Askbot

Maintenant que vous êtes prêt, installez Askbot.

$ sudo pip install askbot

Si vous pensez "Oh, c'est facile. Yahoi (= '▽` =) non "

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)

J'étais en colère contre le message d'erreur étrangement long et bosselé.

Il semble que pip n'utilise que des packages stables par défaut.

$ sudo pip install --pre askbot

Ensuite, cela semble OK.

Installer DB

La recommandation semble être PostgreSQL. Puisque PostgreSQL est déjà inclus, installez uniquement les packages liés à Python

$ sudo pip install psycopg2

Puis

UnicodeDecodeError: 'ascii' codec can't decode

J'ai eu une erreur, alors quand je l'ai recherchée, il semble que je doive insérer python-devel.

$ sudo yum install python-devel

Après cela, j'ai réinstallé psycopg2 et cela a réussi.

Créer une base de données

psql -U username -d postgres

Connectez-vous avec

postgres=> create database database_no_namae with owner=username;
CREATE DATABASE
postgres=> alter user username with password 'himitsu_no_pass';
postgres=> \q

Créez une base de données pour Askbot et si vous n'avez pas décidé de mot de passe, définissez un mot de passe pour l'utilisateur.

Et ajoutez la description suivante en haut de pg_hba.conf

local database_no_namae username md5

Cependant, savoir où se trouve ce pg_hba.conf semble assez ennuyeux. C'était dans / var / lib / pgsql / 9.2 / data / pg_hba.conf dans mon environnement, mais il se peut que ce soit ailleurs. Voir le lien de référence pour plus de détails.

Puis redémarrez postgresql

$ sudo /etc/init.d/postgresql-9.2 restart

Paramètres initiaux d'Askbot

……fatigué. Eh bien, c'est le début du réglage d'Askbot lui-même.

Tout d'abord, créez un répertoire pour mettre Askbot. Veillez à ne pas inclure «.» Pour le moment. (Parce qu'il viole la convention de nom de module de Python.)

Dans mon cas, je l'ai créé comme / home / username / apps / askbotnobasyo.

Allez dans le répertoire que vous avez créé et cliquez sur $ askbot-setup là.

Ensuite, un fichier de configuration sera créé, utilisez donc la commande d'installation collectstatic.

$ python manage.py collectstatic

Et initialisation de la base de données

$ python manage.py syncdb

Là encore, Type Error: Item in` from list '' not a string` est sorti et j'étais sur le point de me briser le cœur.

J'ai trouvé des informations que je devrais mettre à jour vers la 1.4.2 dans le Deller qui dit que la version de Django est la 1.4, mais je ne sais même pas comment la mettre à jour ou même vérifier la version de Django.

Comment connaître la version de Django

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

Si c'était au moins 1.4, j'aurais pu essayer la mise à jour ...

-- Temps écoulé --

Apparemment, la version 1.5 est trop récente pour être utilisée, alors passez à la version 1.4. Cependant, lorsque je l'ai recherché, il semble courant d'utiliser un module qui construit un environnement Python dans un répertoire spécifique appelé virtualenv, et seules les réponses basées sur cela sont données.

Réinsérez Askbot dans l'environnement virtualenv

Puisqu'il n'y a aucune aide pour cela, je vais créer un environnement avec virtualenv et réinstaller Askbot là-bas. Installez d'abord virtualenv

$ sudo pip install virtualenv

Créez un environnement virtuel, activez l'environnement virtuel, puis installez Django 1.4.5

$ virtualenv askbotnobasyo
$ cd askbotnobasyo
$ . /bin/activate
$ pip install django==1.4.5

Créer un fichier d'initialisation pour askbot

$ askbot-setup

Il se termine lorsque vous répondez à ce qu'on vous demande. Et

$ python manage.py collectstatic

Ensuite, tous les fichiers statiques tels que .css et .js sont générés dans un dossier ...

... Non! !! C'est encore une erreur! Faux! !!

Recommencez

Après tout, arrêtons d'utiliser virtualenv. Il n'y a de toute façon qu'un seul environnement. Alors échappez à virtualenv avec $ deactivate.

J'ai utilisé virtualenv parce que je ne savais pas comment rétrograder Django, mais quand j'y ai pensé, j'ai remarqué que "désinstaller-> installer est ok."

$ sudo pip uninstall django
$ sudo pip install django==1.4.5

Alors créez un dossier de projet et passez-y

$ askbot-setup
$ python manage.py collectstatic
$ python manage.py syncdb

Jusqu'à présent, j'étais tombé sur une erreur, mais je l'ai finalement eue! !! !! Yay! !!

Publier sur Nginx et uWSGI

Tout d'abord, prenez un domaine et enregistrez le VPS de Sakura dans ce domaine. Si vous ne comprenez pas ici, veuillez vous référer à d'autres sites.

Donc, Nginx fonctionne déjà dans mon environnement, donc c'est fini. Pour le moment, définissez le domaine afin qu'il puisse accéder au serveur fonctionnant sur Nginx.

Il semble que pypi puisse être utilisé pour installer uWGSI. Je pense que la commande de pypi est pip.

$ sudo pip install uwgsi

Et bien sûr le UnicodeDecodeError qui revient

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 17: ordinal not in range(128)

Il semble que cela se produit parce que le package * -devel est manquant, mais si tel est le cas, veuillez écrire correctement le message d'erreur.

Il semble que uwgsi ait besoin de libevent-devel ainsi que de python-devel, alors mettez-le dans.

$ yum install libevent-devel

Donc, j'ai essayé $ sudo pip install uwgsi, mais cela fonctionne toujours. Selon les informations sur d'autres sites, il y a aussi libxml2-devel et python-pip, alors essayez d'utiliser $ sudo yum install libxml2-devel python-pip.

Finalement réussi avec le troisième $ sudo pip install uwsgi!

Créez les paramètres Nginx /etc/nginx/site-available/example.com.conf avec $ sudo ln -s /etc/nginx/site-available/example.com.conf /etc/nginx/site-enabled/exsample.com.conf

Ensuite, ouvrez le fichier de configuration avec $ 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;
  }
}

Puis redémarrez avec $ sudo service nginx restart. S'il y a une erreur dans les paramètres, une erreur se produira ici.

Renommez django.wsgi dans le dossier du projet en wsgi.py, puis démarrez uwsgi avec diverses options.

$ 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

référence

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

À propos de Python: VIRTUALENV aujourd'hui 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

Mémo de construction d'environnement Django + uWSGI + NGINX sur Ubuntu 12.04 | Un certain blog Vimmer http://shu-b10g.blogspot.jp/2012/08/django-uwsgi-nginx-on-ubuntu-1204.html

Recommended Posts

[Échec] Installer le clone de débordement de pile Askbot sur CentOS 6.4
Installez Faiss sur CentOS 7
Installez numba sur CentOS 7.2
Installez Python3.4 sur CentOS 6.6
Installez mecab-python sur CentOS
Installez awscli sur centos7
Installer Chainer sur CentOS 6.7
Installez la série ImageMagick-6.2.x sur CentOS7.7
Installez Python 3.8 sur CentOS 7 (SCL)
Installez Chrome sur la série CentOS 7
Installez Python 3.8 sur CentOS 8 (AppStream)
Étapes pour installer MySQL 8.0 sur CentOS 8.1
raspberry pi 4 centos7 installer sur docker
Étapes pour installer VirtualBox sur CentOS
Comment installer PyPy sur CentOS
Comment installer TensorFlow sur CentOS 7
Installez pip sur CentOS7. Aussi iPython.
Installez VirtualBox sur CentOS 7 sur VirtualBox (mac + vagrant)
Comment installer Maven sur CentOS
Note d'étude 9_Install Jenkins sur CentOS7
Installez Python sur CentOS en utilisant pyenv
Activez la commande sar sur CentOS (installez sysstat)
Comment installer Eclipse GlassFish 5.1.0 sur CentOS7
Comment installer Apache (httpd) sur CentOS8
Installez PostgreSQL à partir du code source sur CentOS
Installez pyenv et rbenv à l'échelle du système sur CentOS
CentOS8 --Installer --Django
CentOS8 --Installer --Python3