さくらネットのVPSサーバーに ubuntu 20.04 の環境整備の記録です。
ubuntuに定番の PHP, MYSQLをインストールしてみました。
【関連記事】
- ubuntu nginx SSL Webサーバー構築
- ubuntu 20.04 nginx php mysql Webサーバー環境整備 (この記事)
- ubuntu 20.04 nginx php postgreSQL 12.5 Webサーバー環境整備
目 次
メニューに戻るubuntu 環境確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// 環境確認 ubuntu@sakura3:~$ sudo hostnamectl [sudo] password for ubuntu: Static hostname: sakura3.契約中のドメイン名 Icon name: computer-vm Chassis: vm Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Virtualization: kvm Operating System: Ubuntu 20.04.1 LTS Kernel: Linux 5.4.0-64-generic Architecture: x86-64 // nginx バージョン確認 ubuntu@sakura3:~$ nginx -v nginx version: nginx/1.18.0 (Ubuntu) // セキュリティ ubuntu@sakura3:~$ sudo ufw status [sudo] password for ubuntu: Status: active To Action From -- ------ ---- Nginx HTTP ALLOW Anywhere Nginx HTTPS ALLOW Anywhere 22 ALLOW Anywhere |
php7.4-fpm インストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 念のためにubuntu 最新化 $ sudo apt update $ sudo apt upgrade // php7.4-fpm インストール ubuntu@sakura3:~$sudo apt install php-fpm php-mysql // インストールされたphpのバージョン確認 khagiwara@sakura3:~$ php -v PHP 7.4.3 (cli) (built: Oct 6 2020 15:47:56) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies |
nginx php の有効化
phpでWebページを公開するには「ApacheやNginx他」のwebサーバーが必要となります。ここでは Nginxでの公開等いうことです。
Nginxのインストール及びバーチャルバーチャルホストの設定、ファイヤーウォール等は以下のサイトを参考にしてください。
設定は nginxの設定ファイルにphp有効化するための記述をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// 設定用ファイルの設置場所 khagiwara@sakura3:~$ ls -al //etc/nginx/sites-available/ total 20 drwxr-xr-x 2 root root 4096 Feb 1 10:55 . drwxr-xr-x 8 root root 4096 Jan 25 18:10 .. -rw-r--r-- 1 root root 3365 Jan 25 18:39 default -rw-r--r-- 1 root root 777 Feb 1 10:25 docs.codingsock.jp.conf // 公開用ファイルの設置場所 sites-availableフォルダ内の設定ファイルのシンボリックリンクとして配置してある khagiwara@sakura3:~$ ls -al //etc/nginx/sites-enabled total 8 drwxr-xr-x 2 root root 4096 Feb 1 09:56 . drwxr-xr-x 8 root root 4096 Jan 25 18:10 .. lrwxrwxrwx 1 root root 34 Jan 23 17:26 default -> /etc/nginx/sites-available/default lrwxrwxrwx 1 root root 50 Jan 25 13:21 docs.codingsock.jp.conf -> /etc/nginx/sites-available/docs.codingsock.jp.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// /etc/nginx/sites-available/docs.codingsock.jp.conf server { server_name docs.codingsock.jp; root /var/www/[公開するサイトのコンテンツ保存場所フォルダー名]; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } # Basic認証の設定 location /basic_authentication_folder auth_basic "Basic Auth"; auth_basic_user_file "/etc/nginx/.htpasswd"; } # phpを有効にする # Nginxを設定ファイルfastcgi-php.confとソケットファイルphp7.4-fpm.sockに接続します location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } # .htaccess等のファイルをアクセスできないようにする。 location ~ /\.ht { deny all; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/docs.codingstock.jp/fullchain.pem; # managed by Certbot ・ ・ ・ } |
1 2 3 4 5 |
khagiwara@sakura3:~$ sudo php-fpm7.4 -t khagiwara@sakura3:~$ sudo service php7.4-fpm restart khagiwara@sakura3:~$ sudo systemctl restart nginx |
Mysql 5.7インストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
// Mysql 5.7インストール khagiwara@sakura3:~$ sudo apt install mysql-server // インストールされた mysql のバージョン確認 khagiwara@sakura3:~$ sudo mysql -V [sudo] password for khagiwara: mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) // mysql の初期設定 // 何回か選択を促されまさうが、それぞれの指示に従い続けます。 khagiwara@sakura3:~$ sudo mysql_secure_installation ・ ・ ・ LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary ・ ・ ・ // パスワードのレベルを設定 // LOW:8文字以上 // MEDIUM:8文字以上 + 数字・アルファベットの大文字と小文字・特殊文字を含む // STRONG:8文字以上 + 数字・アルファベットの大文字と小文字・特殊文字を含む + 辞書ファイルでのチェック Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: [0,1,2から洗濯して入力] ・ ・ ・ Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done! // 動作確認 khagiwara@sakura3:~$ sudo mysql -p -u root Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.22-0ubuntu0.20.04.3 (Ubuntu) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) // データベース作成 mysql> create database postal; Query OK, 1 row affected (0.01 sec) // ユーザー作成 mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED WITH mysql_native_password BY '[new password for newuser]'; Query OK, 1 row affected (0.01 sec) mysql> SELECT user,host,plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | debian-sys-maint | localhost | caching_sha2_password | | newuser | localhost | mysql_native_password | <-- 今回作成したユーザー | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | auth_socket | +------------------+-----------+-----------------------+ // 作成したデータベースの権限付与 mysql> GRANT ALL PRIVILEGES ON postal.* TO 'hagiwarakenji'@'localhost'; Query OK, 0 rows affected (0.00 sec) mysql> \q Bye // 作成したユーザーでmysqlにて再ログインする khagiwara@sakura3:~$ mysql -p -u newuser Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 26 Server version: 8.0.23-0ubuntu0.20.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. // サクセス権のあるデータベースの確認 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | postal | +--------------------+ 2 rows in set (0.00 sec) |
サンプル PDOでmysqlにアクセス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <?php define('DB_HOST', 'localhost'); define('DB_USER', 'newuser'); define('DB_PASSWORD', 'xxxxxxxxxxxxxxxxxx'); define('DB_NAME', 'postal'); // エラー表示設定:通知系以外全て表示 error_reporting(E_ALL & ~E_NOTICE); try { $pdo = new PDO('mysql:'.DB_NAME.';'.DB_HOST, DB_USER, DB_PASSWORD); $stmt = $pdo->query("show databases;"); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); echo "<pre>"; var_dump( $users ); print('接続しました。'); echo "</pre>"; } catch(PDOException $e){ print('ERROR:'.$e->getMessage()); exit; } |