Tag(網站部署)
參考資料-部屬 AWS EC2 雲端主機 + LAMP Server + phpMyAdmin + CloudFlare
使用的主機
- aws這組密碼在設定filezilla時會需要用到
sudo apt install tasksel
安裝taskselsudo mysql -u root mysql
登入mysql(用輸入者身份)UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
exit;
使用
sudo chown ubuntu /var/www/html
讓ubuntu可以有權限更改檔案
設定filezilla
設定完成後找到正確的檔案放置的位置再新增檔案
是網域名稱系統,將可讀取的網域名稱 (例如,www.amazon.com
) 轉換為機器可讀取的 IP 地址 (例如,192.0.2.44
)。
模擬一個在購物網站搶購的情況。如果有很多人一起去搶購,同時執行怎麼辦?
這種情況就叫做 race condition
,意思就是有兩個或以上同時在存取資個資料的時候會發生的問題-超賣。
這種時候,需要加上一個 lock
,而這個 lock
只有 transaction
可以使用。
* 只需要在指令後面加上 for update 。
就可以鎖定資料,讓資料後續接收資料之後,才可以繼續接收其他資料。
* 這時候只能接收一筆資料。但這樣做會有效能上面的耗損。
* 假如有指定 where id = 1 就會只把那個 row 給鎖定起來。
但如果沒有的話,就會把整個 table 被鎖定。
$conn->autocommit(FALSE);
$conn->begin_transaction();
$conn->query("SELECT amount from products where id = 1 for update");
$conn->commit();
SQL 是一個拿來查詢資料庫的語言,並不是一個資料庫系統,MySQL 才是。
* 任何一種以 SQL 為基礎的資料庫系統,都有差不多的特性
* 例如:
必須事先定義好 Schema,可以想成是資料庫的規格書。
就是資料庫裡面要有哪些欄位、每一個欄位的資料型態是什麼。
NoSQL特性
1. 沒有 Schema,可以想像成存 JSON 資料進 DB
(Schema 就是結構,也就是 table 看起來的模樣,有 id 名稱 型態等資訊)
好處是比較彈性,可是相對的在查詢資料的時候速度也會比較慢一點。
2. 用 key-value 來存
3. 不支援 JOIN
4. 通常用來存一些結構不固定的資料(log 之類的)
如果把資料存在 NoSQL 的資料庫裡面,可能就會長這樣:
{
id: 1,
author: 'huli',
content: '大家好',
create_time: 12345,
comments: [
{
id: 1,
content: 'comment 1',
create_time: ...
}, {
id: 2,
content: 'comment2',
create_time: ...
}
]
}
NoSQL 最適合的一點是 搜集數據。
* 例如說現在很多手機 App 其實會偷偷搜集你的資料傳回去
做一些數據分析之類的。
* 可能會搜集:手機廠牌、型號、作業系統版本、安裝過的 App 等等的。
SQL 跟 NoSQL 並不是互斥的概念,可以在你的系統裡面用 SQL 類的資料庫系統儲存文章、評論,同時也用 NoSQL 類的資料庫來搜集使用者資訊。
* 在資料庫的交易中,為確保交易(Transaction)是正確可靠的,所以必須具備四個特性
1. Atomicity (原子性)
* 資料操作不能只有部分完成。
一次的 transaction 只能有兩種結果:成功或失敗
2. Consistency (一致性)
* transaction 完成前後,資料都必須永遠符合 schema 的規範
保持資料與資料庫的一致性
3. Isolation (隔離性)
* 資料庫允許多個 transactions 同時對其資料進行操作
但也同時確保這些 transaction 的交叉執行
不會導致數據的不一致
4. Durability (持續性)
* transaction 完成後,對資料的操作就是永久的
即便系統故障也不會丟失
又稱檢視表,是一個虛擬的資料表。
* 優點:隱藏/過濾原始資料,並簡化資料查詢。
加強資料庫的安全性,View 可以將實體資料表結構隱藏起來,
同時限制使用者只可以檢視及使用哪些資料表欄位。
建立 View
CREATE VIEW view_name [(column_list)] AS
SELECT column_name(s)
FROM table_name
WHERE condition;
// CREATE VIEW 表格名稱 AS 欲建立表格的SQL指令
就像是 sql 的 function。
語法:
delimiter //
CREATE PRECEDURE 函式名稱(變數 變數型態)
BEGIN
執行內容;
END //
delimiter;
預存程序是專門寫 function 的地方,不需要使用delimiter
使用的時候 - 加 CALL
才可以呼叫:
CALL 函式名稱(引數)
因為是把 function 寫在資料庫上面,所以需要 debug 就必須要打開資料庫才可以看到長什麼樣子,就會造成許多麻煩
儲存一些變動資訊,也就是 log 。
delimiter //
CREATE TRIGGER 名稱
BEFORE UPDATE FROM table名稱
FOR EACH ROW
BEGIN
要做什麼;
END //
delimiter;
預存程序是專門寫 function 的地方,不需要使用delimiter
往後只要變動資料,就會被記錄下來。
設定php.ini,讓PHP顯示出錯誤訊息,加速偵錯(Debug)的效率。
/etc資料夾
後,一層一層接著找到php.inisudo vim php.ini
更新 display_errors
為on
sudo service apache2 restart
重啟Apacheor
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing