最近,有客户説他網站在國外,但國內網站速度打開非常慢,因為國內國外用户訪問都比較頻繁,希望對他們的網站 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
發表回覆