最近,有客戶說他網站在國外,但國內網站速度開啟非常慢,因為國內國外使用者訪問都比較頻繁,希望對他們的網站 www.pjcourse.com 國內訪問速度做個提升。他們的程式用的是 wordpress 。總的來說,wordpress 的外掛模板載入資料比較多,就算安裝了 wprocket 這類快取外掛,做了 js,css 壓縮,或者資料庫最佳化。其實對網站的速度也並不會有太大提升。
經過一些簡單的分析之後,我打算把他們的網站搬到 cn2 gia 線路的空間商,這也許是最快速的提升網站速度的辦法。以下就是我的一些實戰分享,以及網站遇到攻擊,如何快速切換資料。
注:這臺機器雖然放在國外,但百度蜘蛛抓取出現 403 等錯誤的機率幾乎就沒有了。
##
一、現網站的情況分析
網站在搬遷之前,空間放置在 digitalocean,cdn 走的是 cloudflare 。雖然 digitalocean 在國外是非常不錯的空間商,但對國內使用者來說,訪問走了 cloudflare,所以速度依然非常慢。
另外,分線路 dns 做解析,雖然也是可以,但操作會比較麻煩。所以本文不討論。
透過無痕瀏覽器 chrome,可以看出速度在 6.35 秒才全部開啟。前期渲染用了 4.46 秒。
另外,透過站長之家測速也可以看出。電信線路稍微快一些。但聯通和移動的速度明顯都超過了 4 秒以上。
##
二、網站搬遷
關於空間商的選擇,其實只要選對穩定的空間,好的線路。基本上都是可以的。我現在選的是搬瓦工的 cn2 gia ecommerce 。 cn2 gia 最大的優勢就是國內三網訪問都非常快。而這個空間商也是速度最穩定的。我現在一季度 49.99 美元,其實相當於一個月 16 美元。
SSD: 20 GB RAID-10
RAM: 1 GB
CPU: 2x Intel Xeon
Transfer: 1000 GB/mo
這個可以根據每個人的情況不同,選擇不同的主機。但推薦大家在一開始流量不是非常大的情況下,不用買特別好的主機,後續可以再擴容。
##
1 、作業系統選擇
我用的是 ubuntu 20.04 。 php 7.4 + nginx + mysql 。為什麼選這個呢。因為 php 7.4 的速度比 php 7.2 的快 30% 。
##
2 、命令列
為什麼不用寶塔?因為前段時間寶塔剛出了一個大漏洞。而且網站這一塊,本人感覺還是儘量少用別的第三方工具。另外,搭建的 VPS 也可以儘量的乾淨整潔。少一些外部程式。
以下命令列,建立在 ubuntu 20.04 的基礎上。只要按著命令。基本都不會錯。
ssh root@… -p 埠號
上面星號是 IP 地址。-p 是指定埠。因為搬瓦工的預設 ssh 埠不是 22,所以這裡要指定。
###
第一步:安裝 nginx
sudo apt update
sudo apt install nginx
###
第二步:開啟防火牆
sudo ufw app list
sudo ufw allow ‘OpenSSH’
sudo ufw allow ‘Nginx HTTPS’
sudo ufw allow ‘Nginx HTTP’
sudo ufw enable — 這條命令打完的時候,會提示可能會中斷 ssh 連線。直接輸入 y 回車。
###
第三步:安裝 mysql
sudo apt install mysql-server
sudo mysql_secure_installation (此步驟可選,這是一個安全指令碼) 。
輸入 y 回車,選擇 2,最強密碼,輸入新密碼,這個密碼是 mysql 的 root 密碼。
接著全部選 y 。一個是移除匿名使用者,一個是禁止資料庫 root 遠端登入,最後是移除測試資料庫。
最後選 y 。指令碼立即生效。
###
第四步:安裝 php 模組
sudo apt install php-imagick php7.4-fpm php7.4-mbstring php7.4-bcmath php7.4-xml php7.4-mysql php7.4-common php7.4-gd php7.4-json php7.4-cli php7.4-curl php7.4-zip
此處就是一條命令,整個程式碼複製就可以。這個基本上包含了 wordpress 能用上的所有模組。
sudo systemctl reload php7.4-fpm nginx(重啟並載入配置)
###
第五步:把網站資料搬過來
因為我的網站是 wordpress,可能你們的網站是別的程式寫的,所以內容不一樣。這裡就不寫了。另外,記得做/etc/nginx/sites-enable/目錄下面的 nginx.conf
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain;
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/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
替換配置檔案中的 your_domain 為你的域名****.com
###
第六步:配置安裝 ssl
ssl 我用的是 let’s encrypt 。
sudo apt install certbot python3-certbot-nginx
sudo certbot –nginx -d example.com -d www.example.com
替換 example.com 為你自己網站的域名。如果是多個子域名。就自己新增。
這裡要注意一下,先要把 dns 指向當前 VPS,否則配置會不成功,如果是用 Cloudflare 。要關閉 CDN 。
看到最後有一句。 Congratulations! Your certificate and chain have been saved at:
就說明安裝成功了。
這個證書有效時間是 90 天,但 certbot 會每天執行兩個 systemd 計時器,來檢查證書有效性,並自動續訂證書。你要檢查計時器是否有效。
sudo systemctl status certbot.timer
輸出結果如下,就說明正常。
● certbot.timer – Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
##
三、測試新網站網速
直接用國內電信訪問,網站開啟時間有了明顯的提升。對比之前的速度大概提升了 2-3 倍。並且這還是晚上的速度。晚上的訪問速度一點沒受影響。
除了標紅的一個地址 dns 解析還沒生效,其餘已經生效的 IP 速度明顯都在 2 秒以內開啟。
##
四、防 DDOS 攻擊及 cloudflare 快速切換攻防
這裡我推薦使用 cloudflare 本配置你的網站。預設情況下,不開啟 CDN 。也就是域名直接指向 IP 。但如果在遇到 ddos 等攻擊的時候,建議立即開啟 cloudflare 的代理,並把 IP 指向你備份的克隆空間。因為 IP 做了隱藏,而攻擊者的大量攻擊資料也會被 Cloudflare 過濾掉,所以只要響應及時,就可以在短短几分鐘內恢復你的網站。
另外,可以透過 access.log 訪問日誌來定位你的攻擊來源 IP 。並在 cloudflare 的防火牆中,直接過濾可疑 IP 。比如用阻止訪問,或者驗證碼的方式來定位攻擊者。而且 cf 的選項還可以遮蔽整個國家。
另外,開啟 under attack 模式。可有效阻止中小型攻擊。
文章出處:www.pjcourse.com
發表回覆