2022年12月頃にTwitterで大いに話題となったChatGTP。
https://chat.openai.com/chat
これは文書作成のみならずコードも書けると知ったので早速試してみました。
作成してほしいコード
- apacheでwordpressを動かすためのコンフィグ。
- httpアクセスをhttpsにリダイレクトする。
- アクセスログとwordpressのプログラムの格納場所は指定。
質問した内容
以下の文章をChatGPTに入力しました。
apacheでwordpressを公開するためのバーチャルサイトのコンフィグを作成してください。
サーバはUbuntu22.04です。apacheとmod_sslは導入済みです。
ドメインはweblog.example.comです。
wordpressは/home/www-virtual/wordpressに格納されています。
アクセスログは/var/log/apache2/weblog.example.comを指定します。
httpアクセスを強制的にhttpsにリダイレクトし、TLS1.2のみを有効化します。
wp-adminディレクティブは192.168.1.0/24以外アクセスできないようにします。
返ってきた内容
結論から言って驚きの結果でした。
まず、/etc/apache2/sites-available/weblog.example.com.confという名前のファイルを作成します。 次に、以下の内容を記述します:
<VirtualHost *:80>
ServerName weblog.example.com
DocumentRoot /home/www-virtual/wordpress
ErrorLog /var/log/apache2/weblog.example.com/error.log
CustomLog /var/log/apache2/weblog.example.com/access.log combined
<Directory /home/www-virtual/wordpress>
Require all granted
</Directory>
</VirtualHost>
次に、SSL用のバーチャルサイトの設定を追加します。
<VirtualHost *:443>
ServerName weblog.example.com
DocumentRoot /home/www-virtual/wordpress
ErrorLog /var/log/apache2/weblog.example.com/ssl-error.log
CustomLog /var/log/apache2/weblog.example.com/ssl-access.log combined
SSLEngine on
SSLCertificateFile /path/to/your/certificate.crt
SSLCertificateKeyFile /path/to/your/privatekey.key
SSLProtocol TLSv1.2
<Directory /home/www-virtual/wordpress>
Require all granted
</Directory>
<Location "/wp-admin/">
Require ip 192.168.1.0/24
</Location>
</VirtualHost>
最後に、httpアクセスをhttpsにリダイレクトするために、mod_rewriteモジュールを有効化し、以下の設定を追加します。
<VirtualHost *:80>
ServerName weblog.example.com
DocumentRoot /home/www-virtual/wordpress
ErrorLog /var/log/apache2/weblog.example.com/error.log
CustomLog /var/log/apache2/weblog.example.com/access.log combined
<Directory /home/www-virtual/wordpress>
Require all granted
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</Directory>
</VirtualHost>
これで、バーチャルサイトの設定が完了しました。
注意: 上記の設定は一例であり、適切な設定はサイトの状況や環境によって異なります。また、必要に応じて、この設定をカスタマイズしてください。
注文通りです。想定通りの動きになるのはほぼ間違いないです。(後で検証したいぐらいです)これに付け加えるならば、
sudo a2ensite weblog.example.com.conf
sudo apache2ctl configtest
# Syntax OKを確認します
sudo systemctl restart apache2.service
ぐらいでしょう。
今後の各種サーバ設定に大いに貢献する予感です。