note

LAMP

Linux Apache MySQL PHP

Centos7 LAMP環境建置(Linux,Apache,MySQL, PHP) - TWIDC LAB

更新centos套件

$ sudo yum update 

Apache

安裝Apache

$ sudo yum install httpd
$ sudo systemctl start httpd.service

關閉防火牆

$ setenforce 0
$ systemctl stop firewalld
$ vim /etc/selinux/config

把SELINUX改成disable,然後重新開機

SELINUX = disable

檢查配置檔案,可以改Listen把port改成想要的位置

$ cat /etc/httpd/conf/httpd.conf | grep Listen

安裝完成後,在瀏覽器測試是否運行

http://your_server_IP_address/

MYSQL

[MySQL] 心得筆記(4) Table 的新增、修改、刪除 - Clay-Technology World (clay-atlas.com)

早期MYSQL有版權上的問題,所以我們使用免費的mariadb

之後這個會使用Docker放到雲端裡面,因為這個伺服器比較不穩定

install

$ sudo yum install mariadb-server mariadb

啟動MariaDB

$ sudo systemctl start mariadb

設定root密碼,除了設定root外,其他選項Disallow rootRemove test選n,其他都Enter跳過

$ sudo mysql_secure_installation

設定開機啟動MariaDB

$ sudo systemctl enable mariadb.service

open sql

$ mysql -u root -p

sql command

db(資料庫)===>table(資料表)===>record(資料表裡面的資料)===>field(資料欄位col)

/* 顯示目前有的資料庫 */
show databases;   
/* 創建資料庫 */
create database testdb;   
/*  使用資料庫 */
use testdb;  
/* 創建資料表 */
create table addrbook(name varchar(50) not null, phone char(10));
/* 加入資料 */
insert into addrbook(name, phone) values ("tom", "0912123456");
insert into addrbook(name, phone) values ("mary", "0912123567");
/* 選擇資料 */
select name,phone from addrbook;
/* */
update addrbook set phone="0987465123" 

sql 語法

create

CREATE TABLE 可以加條件 創建資料名(資料欄位1 資料類型, 資料欄位2 資料類型, ...)
資料類型可以寫 -> INTEGER PRIMARY KEY AUTOINCREMENT 表示自動生成遞增的整數(id)

SELECT 可以把東西拿出來,使用裡面的值 EX: post.title , post.id, post.body….

SELECT 資料欄位1, 資料欄位2, ...
FROM   創建資料名
WHERE  符合的資料(資料欄位1 = 10之類的)

INSERT

INSERT INTO 創建資料名 (資料欄位1, 資料欄位2,...)]  
VALUES (可以填值, 也可以不填值, ?,...); /*填值(?)的話後面要補變量(,var1,var2)*/

DELETE

DELETE FROM 創建資料名
WHERE  符合的資料

PHP

PHP 語法教學: https://ithelp.ithome.com.tw/articles/10218595

動態網頁伺服器架設

install

$ sudo yum install php php-mysql php-fpm

重新啟動Apache,讓PHP運作

$ sudo systemctl restart httpd.service

測試PHP是否正常運作,建立 info.php/var/www/html/

$ sudo vim /var/www/html/info.php

info.php

<?php phpinfo(); ?>

測試PHP

http://your_server_IP_address/info.php

輸入後你將會看到此頁面

LAMP

出現此頁面後,表示PHP正常工作,此頁面提供一些有關伺服器的資訊, 為了避免將此資訊內容讓其他用戶看見,輸入以下指令刪除它, 如果之後您需要在檢視此頁面,可以依照上述步驟再建立檢視

$ sudo rm -rf /var/www/html/info.php

重新啟動 Apache

$ sudo systemctl restart apache2

SQL和PHP同一台主機上,所以servername寫127.0.0.1,不用寫其他名字或IP

如果無法連線到SQL,要設定:

$ setsebool httpd_can_network_connect_db=1
<?php
$servername="127.0.0.1";
$username="root";    
$password="centos";
$dbname="testdb";

$conn = new mysqli($servername, $username, $password, $dbname);

if($conn->connect_error){
    die("connection failed: " . $conn->connect_error);
}
else{
    echo "connect OK!" . "<br>";
}

$sql="select name,phone from addrbook";
$result=$conn->query($sql);

if($result->num_rows>0){
    while($row=$result->fetch_assoc()){
        echo "name: " . $row["name"] . "\tphone: " . $row["phone"] . "<br>";
    }
} else {
    echo "0 record";
}
?>
    
使用new mysqli建立連接物件conn
用query來輸入語法
. 是連接符號,可以連接字串
fetch_assoc() 可以取得資料

test.php: https://docs.devart.com/odbc/sqlserver/php.htm

<html>
<head>
<title>Test PHP Connection Script</title>
</head>
<body>

<h3>Welcome to the PHP Connect Test</h3>

<?php
$dbname = 'testdb';
$dbuser = 'root';
$dbpass = 'centos';
$dbhost = '127.0.0.1';
$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to '$dbhost'");
mysql_select_db($dbname) or die("Could not open the database '$dbname'");
$result = mysql_query("SELECT name,phone FROM addrbook");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("ID: %s  Name: %s <br>", $row[0], $row[1]);
}
?>

</body>
</html>

ApacheSetup

課本第15章,主要是講/etc/httpd/conf/httpd.conf

現在伺服器也會使用 nginx (LNMP),因為傳輸效能比Apache好

這學期先不講 https,下學期才會提到,會使用腳本讓https的憑證三個月自動更新

Listen 80  # Web port 位置

改完httpd.conf之後,需要使用下面指令重啟

systemctl restart httpd

Linux指令