Askbotは、Python Django Frameworkに基づくQ&Aフォーラムを作成するためのオープンソースソフトウェアです。 StackOverflowやYahooAnswersなどの他のQ&Aシステムと似ています。このツールは、FedoraやLibreOfficeなどの大規模なオープンソースソフトウェアプロジェクトで使用されています。 Askbotは2009年にMikeChanとSailingCaiによって作成され、UbuntuやCentOSなどのLinuxシステムに簡単にインストールして構成できます。
このチュートリアルでは、uWSGIとNginxWebサーバーを使用してAskbotDjango Appを段階的にインストールする方法を示し、メインのオペレーティングシステムとしてUbuntu 16.04XenialXerusを使用します。
私たちが行うこと:
- 依存関係をインストールする
- PostgreSQLデータベースのインストールと構成
- Askbotのインストールと構成
- uWSGIをインストールして構成する
- Nginxをインストールして構成する
- テスト
- Ubuntu 16.04
- root権限
私たちがしなければならない最初のステップは、Askbotのインストールに必要なパッケージをインストールすることです。それでは始めましょう。 SSHを使用してUbuntuサーバーに接続します。
ssh [email protected]
次に、次のaptコマンドを使用してpython-dev、pipなどのパッケージをインストールします。
apt install -y build-essential python-pip python-dev python-flup libpng12-dev zlib1g-dev libpng-dev libjpeg-dev python-setuptools
必要なパッケージがすべてインストールされています。
Askbotは、MySQL、SQLite、PostreSQLなどの多くのデータベースシステムをサポートしています。このチュートリアルでは、データベースシステムとしてPostgreSQLを使用します。
PostgreSQLをインストールし、ローカルユーザーの認証を構成してから、Askbotをインストールするための新しいデータベースとユーザーを作成します。
次のaptコマンドを使用してPostgreSQLデータベースをインストールします。
apt install -y postgresql postgresql-contrib
次に、 pg_hba.confを編集します ローカルユーザー認証を構成するためにvimでファイルします。
vim /etc/postgresql/9.5/main/pg_hba.conf
以下のように、md5を使用してすべてのローカルユーザー認証を変更します。
local all all md5
保存して終了。ここで、PostgreSQLサービスを再起動し、システムの起動時に自動的に開始できるようにします。
systemctl restart postgresql
systemctl enable postgresql
次に、Askbotをインストールするための新しいデータベースとユーザーを作成する必要があります。この場合、新しいデータベース' askbotdbを作成します。 'ユーザー名'hakaselabs 'とパスワード'hakase123 '。
postgresとしてログインします ユーザーを使用して、PostgreSQLシェル「psql」にアクセスします。
su - postgres
psql
postgresを変更します ユーザーパスワードと自分のパスワード。
\password postgres
そして、新しいデータベースを作成します' askbotdb 'および新規ユーザー'hakaselabs 'パスワード付き'hakase123 '次のクエリを使用します。
create database askbotdb;
create user hakaselabs with password 'hakase123';
grant all privileges on database askbotdb to hakaselabs;
\q
Askbotをインストールするための新しいPostgreSQLデータベースが作成されました。
Askbotのインストールに必要なすべてのパッケージがインストールされ、PostgreSQLデータベースが作成されました。次のステップは、Askbotをインストールして構成することです。
rootユーザーを使用しないため、Askbotのインストール用に新しいユーザーを作成する必要があります。 ' askbotという名前の新しいユーザーを作成します 'そしてそのユーザーに新しいパスワードを与えます。
useradd -m -s /bin/bash askbot
passwd askbot
次に、 askbotを追加します 次のusermodコマンドを使用してsudoグループにユーザーを追加します。
usermod -a -G sudo askbot
新しいユーザーが作成されました。次に、python-pipを更新し、virtualenvパッケージをインストールする必要があります。次のpipコマンドを使用してこれらのパッケージをインストールします。
pip install --upgrade pip
pip install virtualenv
ここで、suコマンドを使用して「askbot」ユーザーとしてログインし、Askbotをインストールします。
su - askbot
そして、askbotをインストールするための新しい仮想環境を作成したいと思います。 virtualenvコマンドを使用して新しい仮想環境を作成します。
virtualenv hakase-labs
hakase-labsに移動します ディレクトリを作成し、virtualenvをアクティブにします。
cd hakase-labs/
source bin/activate
PostgreSQLデータベース接続用のpsycopg2を含むpipを使用してAskbotDjangoアプリをインストールします。
pip install askbot psycopg2
インストールが完了すると、次のような結果が表示されます。
次に、AskbotDjangoアプリの新しいディレクトリを作成します。「myapp」という名前を使用します。ディレクトリを作成し、そこにAskbotをインストールします。
mkdir myapp/
cd myapp
以下のコマンドでAskbotをインストールします。
askbot-setup
Askbotのインストールディレクトリについて尋ねられたら、「」を1つだけ入力します。 'そして'Enter'を押します。同様に、データベース構成の場合は、番号' 1を選択してPostgreSQLを選択します。 '。データベース名を入力します'askbotdb '、ユーザー名' hakaselabs 'パスワード付き'hakase123 '。
次に、次のコマンドを使用して静的ファイルディレクトリを生成します。
python manage.py collectstatic
「yes」と入力し、Enterキーを押して続行します。
syncdbオプションを使用してPostgreSQLデータベースを生成します。
python manage.py syncdb
次に、管理者ユーザーの作成について尋ねられます。「yes」と入力してから、管理者ユーザー、電子メール、およびパスワードを入力します。
これで、Askbotが「askbot」ユーザー仮想環境の下のシステムにインストールされました。以下のrunserverコマンドを実行して、Askbotのインストールをテストできます。
python manage.py runserver 0.0.0.0:8080
Webブラウザーを開き、ポート8080でサーバーIPを入力すると、以下に示すように「Askbot」ページが表示されます。
uWSGIは、Python、Perl、およびRubyベースのアプリケーションをサポートします。このチュートリアルでは、AskbotのインストールにNginxWebサーバーでuWSGIを使用します。次のpipコマンドを使用してuWSGIをインストールします。
sudo pip install uwsgi
次に、uWSGIサイト構成用の新しいディレクトリ「/ etc / uwsgi/sites」を作成します。
mkdir -p /etc/uwsgi/sites
/etc/uwsgi/sites
新しいuWSGI構成ファイル「askbot.ini」を「sites」ディレクトリに追加し、vimで編集します。
vim askbot.ini
そこに、次のuWSGI構成を貼り付けます。
[uwsgi]
# Project directory, Python directory
chdir = /home/askbot/hakase-labs/myapp
home = /home/askbot/hakase-labs/
static-map = /m=/home/askbot/hakase-labs/myapp/static
wsgi-file = /home/askbot/hakase-labs/myapp/django.wsgi
master = true
processes = 5
# Askbot will running under the sock file
socket = /home/askbot/hakase-labs/myapp/askbot.sock
chmod-socket = 664
uid = askbot
gid = www-data
vacuum = true
# uWSGI Log file
logto = /var/log/uwsgi.log
それでおしまい。保存して終了します。
次に、uWSGI用の新しいサービスファイルを作成する必要があります。 '/ etc / systemd / system /'ディレクトリに移動し、vimを使用して新しいuwsgi.serviceファイルを作成します。
cd /etc/systemd/system/
vim uwsgi.service
次のuWSGIサービス構成をそこに貼り付けます。
[Unit]
Description=uWSGI Emperor service
[Service]
ExecStartPre=/bin/bash -c 'mkdir -p /run/uwsgi; chown askbot:www-data /run/uwsgi'
ExecStart=/usr/local/bin/uwsgi --emperor /etc/uwsgi/sites
Restart=always
KillSignal=SIGQUIT
Type=notify
NotifyAccess=all
[Install]
WantedBy=multi-user.target
保存して終了。次に、systemdサービスをリロードします。
systemctl daemon-reload
次に、uWSGIサービスを開始し、システムの起動時に自動的に起動できるようにします。
systemctl start uwsgi
systemctl enable uwsgi
uWSGIはAskbotアプリ用にインストールおよび構成されており、システムサービスとして実行されています。
これでAskbotがインストールされ、uWSGIソックスファイル「askbot.sock」で実行されます。このステップでは、NginxWebサーバーをuWSGIアプリケーションAskbotのリバースプロキシとして使用します。
次のaptコマンドを使用してリポジトリからNginxをインストールします。
apt install nginx
インストールが完了したら、nginx構成ディレクトリ'/ etc / nginx /'に移動し、新しいnginx仮想ホストファイル'askbot'を追加してください。
cd /etc/nginx
vim sites-available/askbot
次のaskbotnginx仮想ホスト構成を貼り付けます。
server {
listen 80;
server_name askbot.me www.askbot.me;
location / {
include uwsgi_params;
uwsgi_pass unix:/home/askbot/hakase-labs/myapp/askbot.sock;
}
}
保存して終了します。
次に、「askbot」ファイルの「sites-enabled」ディレクトリへのシンボリックリンクを作成してAskbot仮想ホストファイルを有効にし、nginx構成をテストします。
ln -s /etc/nginx/sites-available/askbot /etc/nginx/sites-enabled/
nginx -t
Askbot仮想ホストが有効になります。次に、nginxサービスを再起動し、システムの起動時に自動的に開始できるようにします。
systemctl restart nginx
systemctl enable nginx
Nginxの構成が完了し、ポート80で実行されています。以下に示すように、netstatコマンドで確認してください。
netstat -plntu
次に、次のnetstatコマンドを使用してuWSGI sockファイルを確認し、askbotを確認します。
netstat -pl | grep askbot
Nginx Webサーバーがインストールされ、AskbotPythonDjangoアプリ用に構成されています。
Webブラウザーを開き、Askbotドメイン名:askbot.meにアクセスすると、以下に示すようなホームページが表示されます。
Askbotユーザーのログイン。
Askbotユーザーダッシュボード。
Askbotの設定。
AskbotDjango管理者ログイン。
AskbotDjango管理ダッシュボード。
Q&Aシステムアプリ「Askbot」は、Ubuntu16.04サーバー上のuWSGIおよびNginxWebサーバーとともにインストールされています。