LNMP

LNMP

(1) 先安裝好 Ubuntu,同時將 Virtual Box 的網卡設定成橋接介面卡

cd /etc/netplan/
sudo nano /etc/netplan/00-installer-config


network:

  bonds:

    bond0:

      interfaces: []

      parameters:

        mode: balance-rr

  ethernets:

    enp0s3:

      dhcp4: no

      addresses: [192.168.1.244/24]

      routes:

        - to: 0.0.0.0/0

          via: 192.168.1.254

      nameservers:

        addresses: [8.8.8.8]


sudo netplan apply


(2) 安裝 Nginx [連結]

sudo apt update && sudo apt install nginx


(3) 查看和設定防火牆相關設定

sudo ufw app list
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 3306
sudo ufw enable

出現訊息請按”Y”


(4) 啟動 Nginx

systemctl status nginx


(5) 安裝 MySql

sudo apt update && sudo apt install mysql-server

可檢查是否安裝成功

sudo ss -tlnp | grep mysqld

我們可以進行 Mysql 安全性腳本,可參照[連結],基本上yes到就底就好了

sudo mysql_secure_installation

查看版本

sudo mysqladmin -p -u root version

可以測試看看能不能登入 MySql


(6) 讓 MySql 也可以讓外部連線

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf


bind-address            = 0.0.0.0

檢查設定檔是否沒有錯誤

mysqld --validate-config


(7) MySql 上建立一名使用者為 willywen,同時給予 root 的權限

sudo mysql
CREATE USER 'willywen'@'%' IDENTIFIED BY "Kyy_y(YL901OzLBh";
GRANT ALL PRIVILEGES ON *.* TO 'willywen'@'%' WITH GRANT OPTION;
ALTER USER 'willywen'@'%' IDENTIFIED BY 'Kyy_y(YL901OzLBh';
FLUSH PRIVILEGES;

重新啟動 MySql

sudo systemctl restart mysql


(8) 安裝 php和 fpm相關套件

sudo apt install php8.1-fpm php-mysql


(9) 建立一個測試網頁

sudo mkdir -p /var/www/test.local/

設定目錄的所有權

sudo chown -R $USER:$USER /var/www/test.local/
sudo chmod -R 755 /var/www/test.local

來設定一個簡單的網頁

sudo nano /var/www/test.local/index.html


<html>

   <head>

     <title>Welcome to test3.ui-code.com</title>

   </head>

   <body>

      <h1>Welcome to test3.ui-code.com</h2>

   </body>

</html>

(10) 我們試著在 Nginx 預設目錄下建立一個伺服器區塊檔,並且內容給予

sudo nano /etc/nginx/sites-available/test.local


server {

    listen 80;

    server_name test3.ui-code.com www.test3.ui-code.com;

    root /var/www/test3.ui-code.com/html;


    index index.html index.htm index.php;


    location / {

        try_files $uri $uri/ =404;

    }


    location ~ \.php$ {

        include snippets/fastcgi-php.conf;

        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;

     }


    location ~ /\.ht {

        deny all;

    }


}

(11) 要在 sites-available 底下連結過去給 sites-enabled,同時取消預設的

sudo ln -s /etc/nginx/sites-available/test.local /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default


(12) 避免 hash bucket

sudo nano /etc/nginx/nginx.conf

找到該行 server_names_hash_bucket_size,取消#


(13) 檢查 Nginx 語法是否有問題,並且重新啟動

sudo nginx -t
sudo systemctl restart nginx


(14) 測試在 Nginx 中使用 php

sudo nano /var/www/test.local/html/info.php

接著我們編輯

// in info.php

<?php

phpinfo();

可透過 http://test3.ui-code.com/info.php 訪問試試看有沒有回傳伺服器資訊


(15) 創建一名使用者,同時給予權限

sudo mysql
CREATE DATABASE example_database;
CREATE USER 'jimmyyang'@'%' IDENTIFIED WITH mysql_native_password BY '!ExTest123';
GRANT ALL ON example_database.* TO 'jimmyyang'@'%';


(16) 來測試該使用者是否可以登入該資料庫,並且查詢

mysql -u jimmyyang -p
SHOW DATABASES;


(17) 創建一個名為 todo_list 的測試資料

CREATE TABLE example_database.example_data (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);

並且加入值

INSERT INTO example_database.example_data (content) VALUES ("第一筆測試資料");
INSERT INTO example_database.example_data (content) VALUES ("第二筆測試資料");
INSERT INTO example_database.example_data (content) VALUES ("第三筆測試資料");

接著查詢看看是否有內容

SELECT * FROM example_database.example_data;


(18)  建立一個 php 檔,內容如下

sudo nano /var/www/test3.ui-code.com/html/example_data.php


<?php

$user = "jimmyyang";

$password = "!ExTest123";

$database = "example_database";

$table = "example_data";


try {

  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);

  echo "<h2>TODO</h2><ol>"; 

  foreach($db->query("SELECT content FROM $table") as $row) {

    echo "<li>" . $row['content'] . "</li>";

  }

  echo "</ol>";

} catch (PDOException $e) {

    print "Error!: " . $e->getMessage() . "<br/>";

    die();

}


(19) 安裝 phpmyadmin [連結] (有引發密碼過不去的事件,這裡請參照文章指引)

sudo apt update && sudo apt install phpmyadmin


(20) Nginx 網頁伺服器要正確找到並提供 phpMyAdmin 檔案,從安裝檔案到 Nginx 的文件根目錄之間創建一個符號連結

sudo ln -s /usr/share/phpmyadmin /var/www/test.local/phpmyadmin

如果要解除的話,指令如下

sudo unlink /var/www/test3.ui-code.com/html/phpmyadmin


(21) 在主機上增加使用者,同時給予 sudo 權限

adduser poloyeh
usermod -aG sudo poloyeh
uPFwDxYf



留言

這個網誌中的熱門文章

黑暗靈魂3[所有重要物品的取得方式]

黑暗靈魂3[所有姿勢取得方式]

MySQL Replication