Linux

[Tips] nginxとMySQLのPHPアプリのサンプル

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

 

参考

Linux、Nginx、MySQL、PHP(LEMP)スタックをUbuntu 20.04にインストールする方法 | DigitalOcean
Linux、Nginx、MySQL、PHP(LEMP)スタックをUbuntu 20.04にインストールする方法 | DigitalOcean

LEMPソフトウェアスタックは、PHPで記述された動的WebページとWebアプリケーションの提供に使用できるソフトウェアのグループです。これは、Nginx(「 Engine-X」と発音)Webサーバー ...

www.digitalocean.com

-Linux
-