Tips
nginxとMySQLを利用したサンプルです。
MySQLを設定した後に、PHP用nginxを設定します。そのあとにPHPアプリでMySQLに接続します。
MySQL
MYSQL8の設定です。
MySQLのインストール
# apt update # apt upgrade # apt install mysql-server
初期設定
# mysql_secure_installation
rootのパスワード設定 {PASSWORD}は任意
# echo "default_authentication_plugin=mysql_native_password" >> /etc/mysql/mysql.conf.d/mysqld.cnf # sed -i -e "s/^bind-address\t\t= 127.0.0.1/bind-address\t\t= 0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf # systemctl restart mysql # mysql -uroot
パスワード設定のポリシーを変更(上記で設定しても反映されない)
mysql> set global validate_password.policy=0;
{PASSWORD}は任意、リモートでの接続許可
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{PASSWORD}';
mysql> RENAME USER 'root'@'localhost' TO 'root'@'%';
サンプルデータの入力
mysql> create database sample;
mysql> CREATE TABLE sample.list (
id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(id)
);
mysql> INSERT INTO sample.list (content) VALUES ("サンプルデータ1");
PHP用nginx
PHPが動くnginxを設定します。
# apt update # apt upgrade # apt install nginx php-fpm php-mysql # vi /etc/nginx/sites-available/default
赤部分を追加
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
nginxの再起動
# systemctl restart nginx
サンプルプログラムを追加
# vi /var/www/html/sample.php
サンプル
<!--?php
$hostname = "172.17.0.5";
$user = "root";
$password = "{PASSWORD}";
$database = "sample";
$table = "list";
try {
$db = new PDO("mysql:host=$hostname;dbname=$database", $user, $password);
echo "</p>
<h2>サンプルデータ</h2>
<ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "</p>
<li>" . $row['content'] . "</li>
<p>";
}
echo "</ol>
<p>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br?-->";
die();
}
アクセスして対象のデータは表意されればOK

参考
