# 設定主機

### **切換成root角色**  


```bash
sudo su
```

<p class="callout info">有些vps預設會直接用root，就不用切換。我是習慣全用root去執行操作，主機只有自己會管理，有時遇到權限的問題真的蠻雷的 XD</p>

### **修改時區** 

```
dpkg-reconfigure tzdata
```

### **修改語系**

```
vi /etc/locale.gen
把 zh_TW.UTF-8 mark打開
locale-gen
```

### **更新程式並且重啟主機**

```
apt update
apt dist-upgrade
reboot
```

### **重啟用，登入後再切到 root 角色**

```
sudo su
```

### **安裝伺服器**  


```bash
apt install nginx php-fpm php-zip php-gd php-mbstring php-gd php-xml php-mysql mysql-server mysql-client certbot python3-certbot-nginx
```

<p class="callout info">Drupal或WordPress裝完後可以再檢查看看有沒有漏掉哪個php程式，再補齊安裝即可</p>

<p class="callout warning">不要用apt-install php，這樣會安裝apache2</p>

### **設定MySQL**

#### 設定mysql密碼  


以root進入mysql

```
mysql -u root
```

#### 更改密碼

```
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpassword'; exit;
```

<p class="callout info">yourpassword 記得改成你自己的密碼</p>

<p class="callout warning">如果你的資料庫有設定外連，那可能就要避免直接用root，不然就是務必把防火牆的限定做好</p>

#### 調整conf檔  


```
[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
max_connections = 600
innodb_read_io_threads = 24
innodb_write_io_threads = 24
expire_logs_days = 7
max_binlog_size = 1G
```

<p class="callout info">加入後後重啟 server，binlog\_size務必要設定，log檔可能會被你的空間佔滿</p>

#### 在 ~/.my.cnf 加入密碼

```
[client]
password = yourpassword
```

### MySQL基本的管理指令

#### 建立資料庫

```bash
mysqladmin -u root create site
```

#### 刪除資料庫

```bash
mysqladmin -u root drop site
```

#### 匯出資料庫

```
mysqldump -u root site > site.sql
```

#### 匯入資料庫

```
mysql -u root site < site.sql
```

<p class="callout info">學會這幾招基本上就差不多可以不用裝phpMyAdmin XD</p>

### **啟用及設定伺服器防火牆**  


```bash
ufw enable
ufw allow from xxx.xxx.xxx.xxx (填上自己連入的IP)
ufw allow 80/tcp
ufw allow 'Nginx HTTP'
ufw allow 'Nginx HTTPS'
```

### **加入不同版本的php來源**  


```
add-apt-repository ppa:ondrej/php
aptitude update
```