クラウドサーバーを所有することを前提に、Flaskをベースとした簡単な個人Webサイトを開発し、Apacheを使用してデプロイし、外部からドメイン名でアクセスできるようにします。
1.サーバー
1. Vultr 公式 Web サイト (https://my.vultr.com/) で要件を満たすサーバーをデプロイします。デモをデモしたいだけなので、私が選択した構成は次のとおりです。
2. サーバーを展開した後、FinalShell などのソフトウェアを使用してサーバーに接続します。FinalShell のダウンロード アドレスは以下のとおりです。
リンク: https://pan.baidu.com/s/1GZ7UsJKJOXOl7QKlTS1O0w
抽出コード: 4iug
3. サーバーの IP、ユーザー名、パスワードを使用してサーバーに接続します。この記事では、デモンストレーションのために IP: 1.2.3.4 を使用します。
4. 外部から個人 Web サイトに直接アクセスするには、ファイアウォール ルールを設定する必要があります。
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
2. ドメイン名
1. 主要なドメイン名 Web サイトでは独自のドメイン名を選択できますが、デモでは Namesilo 公式 Web サイト (https://www.namesilo.com/) でドメイン名を選択し、それを a.com に置き換えました。
2. Namesilo 公式 Web サイトで 2 つの A レコードを構成し、ドメイン名 www.a.com および a.com がサーバー IP: 1.2.3.4 に解決されるようにします。 (注意: ウェブサイトのセキュリティを確保するために、Cloudflare の DNS サービスを選択できますが、Cloudflare が提供する SSL/TLS 暗号化モードは柔軟であってはなりません。柔軟でないと、ドメイン名へのアクセスによってリダイレクトが過剰に発生します)
3. 構成環境
1. ソースリストを編集する
cp /etc/apt/sources.list /etc/apt/sources.list.bak
vim /etc/apt/sources.list
以下を追加します
deb https://deb.debian.org/debian buster main contrib non-free
deb-src https://deb.debian.org/debian buster main contrib non-free
deb https://debian.mirror.constant.com buster main contrib non-free
deb-src https://debian.mirror.constant.com buster main contrib non-free
deb https://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb-src https://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb https://deb.debian.org/debian buster-updates main contrib non-free
deb-src https://deb.debian.org/debian buster-updates main contrib non-free
2. サーバーには Python3.7、Maridb、Git をインストールする必要があります。インストールコマンドは次のとおりです。
# 更新软件包列表
sudo apt update
# 安装Python3.7
sudo apt install python3.7 virtualenv
# 安装MySQL
sudo apt install mariadb-server
# 安装Git
sudo apt install git
3. MySQL の構成
# 启动MySQL服务
sudo systemctl start mysql
# 启动安装向导
sudo mysql_secure_installation
# 使用root身份登录数据库
mysql -u root -p
# 创建数据库新用户
CREATE USER 'user'@'localhost' IDENTIFIED BY 'User.555';
# 创建DB
CREATE DATABASE web_db;
# 授予用户权限
GRANT ALL PRIVILEGES ON web_db.* TO 'user'@'localhost';
# 刷新权限并退出数据库
FLUSH PRIVILEGES;
EXIT
4. ソースコードをダウンロードし、プロジェクトディレクトリに移動します。
git clone https://github.com/qinhj5/WebRepo.git
cd WebRepo
5. 仮想環境を作成し、依存関係をインストールする
virtualenv --python=python3.7 venv
source venv/bin/activate
pip3.7 install -r requirements.txt
6. データベース構成ファイルを編集し、データベース テーブルを初期化して、構成ファイル内の情報が以前の設定と一致していることを確認します。
cp config.json config.json.bak
vim config.json
python3.7 cli.py --func create
python3.7 cli.py --func init_users
(init_users スクリプトは 2 人のユーザー Jack と Alice を初期化します)
4. サービスを開始する
1. Apache サーバーと依存モジュールをインストールする
sudo apt install apache2 libapache2-mod-wsgi-py3
2. a.com の Let’s Encrypt の無料証明書を取得します
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d a.com -d www.a.com
ウィザードに従って構成を完了すると、fullchain.pem (完全な証明書チェーン) と privkey.pem (秘密キー) のパスの入力を求められます。通常は次の場所にあります。< a i=1> /etc/letsencrypt/live/a.com/fullchain.pem /etc/letsencrypt/live/a.com/privkey.pem
3. プロジェクトを展開ディレクトリに移動し、www-data に承認します。
cp -r ../WebRepo /var/www
sudo chown -R www-data:www-data /var/www/WebRepo
4. Apache 仮想ホスト構成ファイルを作成します。
vim /etc/apache2/sites-available/WebRepo.conf
次の内容を入力します。秘密キー、完全な証明書チェーン、およびドメイン名を変更する必要があります。
<VirtualHost *:80>
ServerName a.com
ServerAlias www.a.com
Redirect permanent / https://a.com/
</VirtualHost>
<VirtualHost *:443>
ServerName a.com
ServerAlias www.a.com
DocumentRoot /var/www/WebRepo
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/letsencrypt/live/a.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/a.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
WSGIDaemonProcess WebRepo python-home=/var/www/WebRepo/venv processes=2 threads=4 user=www-data group=www-data home=/var/www/WebRepo
WSGIProcessGroup WebRepo
WSGIScriptAlias / /var/www/WebRepo/app.wsgi
<Directory /var/www/WebRepo>
WSGIProcessGroup WebRepo
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
ErrorLog /var/log/apache2/WebRepo_error.log
CustomLog /var/log/apache2/WebRepo_access.log combined
</VirtualHost>
5. Apache のデフォルトの仮想ホスト構成ファイルを閉じます
sudo a2dissite 000-default.conf
sudo a2dissite 000-default-le-ssl.conf
6. Apache の SSL モジュールを有効にする
sudo a2enmod ssl
7. カスタマイズされた仮想ホスト構成ファイルを有効にし、Apache サービスを再起動します。
sudo a2ensite WebRepo.conf
sudo systemctl reload apache2
8. この時点で、ドメイン名 https://www.a.com または https://a.com を通じて個人 Web サイトにアクセスできます。