記事ディレクトリ
序文
このブログはTencentCloud Serverのセットアッププロセスです(Alibaba Cloud Serverも利用可能です)。必要なソフトウェアはCentOS 7.5、Python 3.7.8、Django 3.1、Nginx、uWSGIです。Djangoを使用してWebサイトを開発する場合、これは良いものです。このチュートリアルを通じて、Djangoによって開発されたWebサイトをサーバーにデプロイできることを選択します。
1.開発ツールとさまざまな依存関係パッケージをインストールして更新します
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel gcc automake autoconf libtool make wget
2.Python3をインストールします
- Pyhton3を/usr/localディレクトリにダウンロードします[遅いので、ローカルにダウンロードしてWinSCP経由でアップロードしました]
cd /usr/local
wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz
- Pythonソースコードパッケージを解凍します
tar -zxvf Python-3.7.8.tgz
- Python-3.7.8ディレクトリに入り、コンパイルしてインストールします
cd Python-3.7.8
./configure --prefix=/usr/local/python3
make && make install
- 端末での直接使用を容易にするためのソフトリンクを確立します(システム環境変数に追加されます)
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
- バージョンを確認する
python3 -V
pip3 -V
- pip3のバージョンをアップグレードします(オプション)
pip3 install --upgrade pip
3.仮想環境を構成します
- virtualenvをインストールして、さまざまなバージョンのプロジェクト管理を容易にします
pip3 install virtualenv
- ソフトリンクを確立する
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
- インストールが成功すると、ルートディレクトリに2つのフォルダが作成され、主にenvファイルとwebsiteファイルを保存するために使用されます
mkdir -p /data/env
mkdir -p /data/wwwroot
- /data/env/次へ切り替えて、指定したバージョンの仮想環境を作成します
cd /data/env/
virtualenv --python=/usr/bin/python3 pyweb
- 仮想環境を開始します
cd /data/env/pyweb/bin
source activate
- 仮想環境を終了します
deactivate
4.MySQLをインストールします
- MySQLの公式Yumリポジトリをダウンロードしてインストールします
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
- 上記のコマンドを使用して、インストール用にYumリポジトリを直接ダウンロードし、yumを使用して直接インストールします。
yum -y install mysql57-community-release-el7-10.noarch.rpm
- MySQLサーバーをインストールします
yum -y install mysql-community-server
- 最初にMySQLを起動します
systemctl start mysqld.service
- MySQLの実行ステータスを確認します。表示active (runing)されている場合は、MySQLが開始されていることを意味します。
systemctl status mysqld.service
- ログファイルでルートパスワードを確認します
grep "password" /var/log/mysqld.log
- データベースに入る
mysql -u root –p
- パスワードを変更する
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
5.DjangoとuWSGIをインストールします
- DjangoとuWSGIをインストールします(インストールする前に仮想環境に入ります)
pip3 install django
pip3 install uwsgi
- また、互換性とデバッグの利便性のために、ローカルMySQLはバージョン8.0であるため、pymysqlをインストールします。
pip3 install pymysql
- ソフトリンクを確立する
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
- ファイアウォールをオンにします
# 查看防火墙是否开启
systemctl status firewalld
# 开启防火墙
systemctl start firewalld
- ポートを開きます(8001ポートを追加し、ポリシー構成を再ロードします)
需要在服务器管理界面配置一下安全组,加入8001端口
firewall-cmd --zone=public --add-port=8001/tcp --permanent
- ポリシー構成を再ロードして、新しい構成を有効にします
firewall-cmd --reload
- 開いているポートとプロセスを表示する
netstat -tunlp
netstat -lnp| grep 8001
- Webサイトプロジェクトのルートディレクトリに/data/wwwroot/ChatRobot名前を付けたtest_uwsgi.pyファイルを作成します
cd /data/wwwroot
mkdir ChatRobot
cd ChatRobot
vim test_uwsgi.py
# 文件内容如下:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
# 内容写入之后 ESC 退出输入模式,切换到命令模式
# :w 保存 :q 退出
- 次のコマンドを入力してuWSGIを起動します。このとき、コンピューターのブラウザーにip:8001入力し、Enterキーを押してブラウザーの表示Hello Worldワードを表示します。これは、サーバーがブラウザーからの要求を受信できることを意味します。
uwsgi --http :8001 --wsgi-file /data/wwwroot/ChatRobot/test_uwsgi.py
- UWSGIとポートは、次のコマンドで開始できます
uwsgi --chdir /data/wwwroot/ChatRobot --home /data/env/pyweb --http :8001 --module=ChatRobot.wsgi:application
このとき、ブラウザにipを入力します。問題がなければ、Webサイトはロードされていますが、静的ファイルがありません。
6.Nginxをインストールして構成します
インストールする前に、Webサイトのディレクトリについて説明しましょう。以下に数行のコードを追加します。
# 在urls.py文件中添加如下代码
from django.urls import path
from tencent import views
urlpatterns = [
path('wx', views.TencentView, name='TencentView')
]
# 在views.py文件中添加如下代码
from django.http import HttpResponse
def TencentView(request):
return HttpResponse(content="haha this is a tencent")
- epelライブラリをインストールする
yum install epel-release –y
- Nginxライブラリをインストールします
yum -y install nginx
- Nginxサービスを開始します(ポート80が開いていて、占有されていないことを確認します。開いていない場合は、上記の構成を参照して、ファイアウォールを介してポートを開きます)
systemctl start nginx.service
或
service nginx start
- Nginxを構成し、次のコマンドを使用してインストールパスを見つけます
find / -name nginx.conf
- 変更nginx.confファイルは次のとおりです。
#user nobody;
worker_processes 2;
error_log /data/wwwroot/ChatRobot/error.log;
error_log /data/wwwroot/ChatRobot/error.log notice;
error_log /data/wwwroot/ChatRobot/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
access_log /data/wwwroot/ChatRobot/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#gzip on;
server {
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location /static {
alias /data/wwwroot/ChatRobot/static;
proxy_connect_timeout 18000;
proxy_send_timeout 18000;
proxy_read_timeout 18000;
}
location /media {
alias /data/wwwroot/ChatRobot/media;
}
location / {
uwsgi_pass 127.0.0.1:8001;
include /etc/nginx/uwsgi_params;
}
}
- 構成が完了したら、それが合法かどうかを確認します
nginx -t
- robot_uwsgi.ini次の内容で、Webサイトプロジェクトのルートディレクトリに名前が付けられた構成ファイルを作成します。
[uwsgi]
chdir = /data/wwwroot/ChatRobot
home = /data/env/pyweb
module = ChatRobot.wsgi:application
master = true
processes = 4
harakiri = 600
max-requests = 5000
socket = 127.0.0.1:8001
uid = 1000
gid = 2000
pidfile = uwsgi.pid
daemonize = uwsgi.log
vacuum = true
- uWSGIとNginxを起動します
uwsgi --ini /data/wwwroot/ChatRobot/chatrobot_uwsgi.ini
service nginx start
- uWSGIとnginxが正常に起動するかどうかを確認します
ps -aux | grep uwsgi
ps -aux | grep nginx
- このとき、ブラウザにIPアドレスを入力してWebサイトにアクセスしてください。
OK!それでおしまい!
- 操作を終了したい場合は、次のコマンドを使用できます
pkill -9 uwsgi
pkill -9 nginx
7.Djangoパーツサプリメント
- プロジェクトを構築する
django-admin startproject ChatRobot(工程名)
- MySQLデータベースを起動し、という名前のデータベースを作成
tencent
します
net start MySQL80(我的本地MySQL是8.0版本的)
mysql -uroot -p
create database tencent;
__init__.py
互換性のあるバージョンであることにコードを追加MySQL8.0
import pymysql
pymysql.install_as_MySQLdb()
- DjangoはデフォルトでSQLiteデータベースを使用し、
settings.py
MySQLはファイルで構成されます
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'tencent',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': '数据库服务器IP,本地是localhost',
'PORT': '端口名,默认是3306',
}
}
- アプリケーションを作成する
python manage.py startapp tencent(应用名)
- で
settings.py
、ファイル、う'tencent'
に追加することがINSTALLED_APPS
- 起動
# ip可以不写,即默认本机ip
# 端口号可以不写,默认为8000,可以修改
python manage.py runserver ip:port