Linux Apache MySQL PHP
Centos7 LAMP環境建置(Linux,Apache,MySQL, PHP) - TWIDC LAB
更新centos套件
$ sudo yum update
安裝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] 心得筆記(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 root和Remove 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 語法教學: 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
輸入後你將會看到此頁面

出現此頁面後,表示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>
課本第15章,主要是講/etc/httpd/conf/httpd.conf
現在伺服器也會使用 nginx (LNMP),因為傳輸效能比Apache好
這學期先不講 https,下學期才會提到,會使用腳本讓https的憑證三個月自動更新
Listen 80 # Web port 位置
改完httpd.conf之後,需要使用下面指令重啟
systemctl restart httpd
查詢已經安裝的套件: rpm -qa | grep httpd
查詢port是否有被占用: netstat -tunlp | gerp 8888
查看目前httpd使用的process: ps -aux | grep http
刪除整個httpd的全部process
# PPID (parent ID)、PID(process ID)、PGID(process group ID)、SID(session ID)
ps -ajx | grep httpd # 會顯示PPID、PID、PGID、SID
pkill -9 -s [session ID]