分類
方法

在 Centos 7 上安裝 LNMP

上周更新 php7.3 的時候順手執行了下 yum update 導致無法進入系統,在客服的幫助下複製出了數據,然後自己重裝了系統,記錄下。本文主要參考了G. T. Wang的CentOS 7 安裝 Nginx、MySQL/MariaDB、PHP7,架設 LEMP 網頁伺服器筆記,非常感謝!

安全設置

阻止內核升級

#在 /etc/yum.conf 中加入
exclude=kernel*

上次進不了系統比較懷疑是升級內核後grub沒更新導致的,但是也不確定,為了系統穩定性最好還是禁用內核升級。不過禁止了內核升級也就不能安裝 kernel 相關庫,需要的時候臨時打開就行。

新建 sudo 用戶

# 新增使用者
adduser USERNAME
# 設定密碼
passwd USERNAME
# 將 USERNAME 加入 wheel 群組
usermod -aG wheel USERNAME

設定時區

# 使用 timedatectl 列出可選擇的時區:
timedatectl list-timezones
# 設定時區為亞洲的台北:
sudo timedatectl set-timezone Asia/Shanghai
# 其他常用時區
sudo timedatectl set-timezone Asia/Hong_Kong
sudo timedatectl set-timezone Asia/Taipei
# 查看本機時間
date

防火牆

參考:CentOS Linux 7 以 firewalld 指令設定防火牆規則教學。我這裡只記錄下我的操作。

# 檢查 firewalld 服務狀態
systemctl status firewalld

#啟動 firewalld 服務,默認是有開啟22端口的,
#如果你的 SSH 端口已經更改,啟用防火牆可能會導致 SSH 連不上
systemctl start firewalld

# 停止 firewalld 服務
systemctl stop firewalld

# 重新啟動 firewalld 服務
service firewalld restart

# 設定開機自動啟動 firewalld 服務
systemctl enable firewalld

# 列出預設區域
firewall-cmd --get-default-zone
#一般是public

# 將 http 服務新增至 public 區域中
sudo firewall-cmd --zone=public --add-service=http

# 永久將 http 服務新增至 public 區域中
sudo firewall-cmd --zone=public --permanent --add-service=http

# 開啟 tcp 的 8080 連接埠
sudo firewall-cmd --zone=public --add-port=8080/tcp

# 永久開啟 tcp 的 8080 連接埠
sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp

# 若欲將 ssh 端口改為 20222
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp --dport 20222 -m state --state NEW -m recent --set
# 增加30秒4次的登錄頻率限制
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT_direct 1 -p tcp --dport 20222 -m state --state NEW -m recent --update --seconds 30 --hitcount 4 -j REJECT --reject-with tcp-reset

# 列出 public 區域永久的服務設定值
sudo firewall-cmd --zone=public --permanent --list-services

# 將 http 服務從 public 區域中移除
sudo firewall-cmd --zone=public --remove-service=http

# 永久將 http 服務從 public 區域中移除
sudo firewall-cmd --zone=public --permanent --remove-service=http

SSH加固

#如果本機沒有~/.ssh/id_rsa.pub
#則應該先生成密鑰對
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen
#問題默認即可
#複製本機 id_rsa.pub 到服務器
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
#然後嘗試直接密鑰登錄
ssh [email protected]
#修改 sshd 配置文件 /etc/ssh/sshd_config
#關閉密碼登錄
PasswordAuthentication no
#如果已新建用戶,可以禁止 root 遠程登錄
PermitRootLogin no
#修改端口,注意防火牆應開啟對應端口
Port 42222
#重啟 sshd 服務
sudo systemctl restart sshd

安裝LNMP服務

更新系統套件

#更新下系統套件
sudo yum upgrade
#啟用 EPEL
sudo yum install epel-release
sudo yum update

安裝 Nginx

sudo yum install nginx
#啟動 Nginx 服務
sudo systemctl start nginx
#開機自動啟動 Nginx 服務
sudo systemctl enable nginx

安裝 MariaDB

yum install mariadb-server mariadb
#啟動 MariaDB 服務,並設定開機自動啟動
sudo systemctl start mariadb
sudo systemctl enable mariadb
#強化 MySQL/MariaDB 資料庫設定的安全性
mysql_secure_installation
#修改 /etc/my.cnf 綁定本機 IP
[mysqld]
bind-address = 127.0.0.1

新建數據庫用戶和導入備份的數據可以參考mysql tricks

安裝 PHP 7.3

#開啟 Remi repository
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
#安裝 yum-utils
sudo yum install yum-utils
#開啟 php 7.3的軟件源
sudo yum-config-manager --enable remi-php73
#或者開啟其他版本 php 的軟件源
sudo yum-config-manager --enable remi-php72
sudo yum-config-manager --enable remi-php71

#安裝常用的 php 庫
sudo yum install php php-mcrypt php-cli php-fpm php-gd php-curl php-mysql php-ldap php-zip php-fileinfo php-xml php-mbstring

#修改 /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
user = nginx
group = nginx
#修改 /etc/php.ini
cgi.fix_pathinfo=0
upload_max_filesize = 32M
post_max_size = 32M
max_file_uploads = 50

#啟動 php-fpm 服務,並設定開機自動啟動
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

我的服務器只有1核 CPU 和 512 MB內存,默認的php配置會耗光服務器資源,可以通過修改下面這些值來使服務器穩定。如果有更好的配置方案歡迎留言。

#修改 /etc/php-fpm.d/www.conf
listen.allowed_clients = 127.0.0.1
pm = dynamic
# Total number of processes allowed
pm.max_children = 5
# The number of child processes created on startup 
pm.start_servers = 2
# The minimum number of idle processes
pm.min_spare_servers = 1
# The maximum number of idle processes
pm.max_spare_servers = 2
# The number of seconds an idle process will be alive
pm.process_idle_timeout = 10
# The execution time of each child process and is used to curb memory leaks
pm.max_requests = 200

配置 nginx

#修改 /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 40M;
    gzip on;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;
}
#新增 /etc/nginx/nginx.d/ft.wupo.info.conf
    server {
        listen      443 ssl;
        listen      [::]:443;
        server_name ft.wupo.info ;
        root        /usr/share/nginx/html/ft.wupo.info;
        index       index.php index.html index.htm;

        ssl         on;
        ssl_certificate      /etc/letsencrypt/live/ft.wupo.info/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/ft.wupo.info/privkey.pem;


        location ~ \.php$ {
    	    fastcgi_pass   127.0.0.1:9000;
    	    fastcgi_index  index.php;
    	    fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    	    include        fastcgi_params;
	}
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
    }

	server {
		listen 80;
		server_name ft.wupo.info;
		return 301 https://$server_name$request_uri;
	}
#https://certbot.eff.org/lets-encrypt/centosrhel7-nginx
#啟用 certbot 的源
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
#安裝 certbot 
sudo yum install certbot python2-certbot-nginx
#生成證書
certbot -d ft.wupo.info --nginx certonly

如果是首次獲取生成證書,nginx 應該會報錯,因為證書找不到。可以先只打開 80 端口,待證書獲取成功後再打開 443。

分類
其它

使網站更節能的17種方法

原文由 Tom 在2019年10月23日發布與 Wholegrain Digital 原文鏈接:17 ways to make your website more energy efficient


關於網站的碳足跡,在過去的幾年中我們已經討論了很多。 互聯網的碳影響主要是由用電引起的。 現在的問題是:

作為網絡專家,我們可以讓互聯網更節能一些嗎?

本文旨在回答這個問題,提供一些方便的清單,通過這些方法您可以最大程度地減少能源浪費,並幫您確保您所創建的互聯網產品盡量節能。

而且,這裡列出的幾乎所有內容不僅可以幫助提高網站的能效,還可以改善網站的性能和用戶體驗!

網站能耗的一些背景

如果您不熟悉此主題,那麼簡短的說就是——互聯網,包括數據中心、電信網絡和終端用戶設備(如電話和筆記本電腦)會消耗大量電能。 實際上,如果將它們消耗的電量全部加在一起,互聯網所消耗的電量與英國(世界上最大的經濟體之一)消耗的電量大致相同。

數據中心 <---> 電信網絡 <---> 終端用戶設備

隨著我們在日常生活中不斷消耗越來越多的互聯網數據,互聯網消耗的電量也迅速增長。 它可能不容易被我們看到或想到,但互聯網的這種巨大功耗卻實實在在地產生了巨大的碳足跡,而這是我們需要解決的問題。

對於我們從事網頁設計和開發的人們來說,下面這些是我們可以做到的:

設計與內容

當我們談論網站的能源效率時,很容易就認為這只是一個純技術性話題。不是的,我們甚至可以在建立網站之前就提高能源效率。設計和內容對能效有很大的影響,以下是需要考慮的關鍵領域。

1. SEO(搜索引擎優化)

SEO似乎與網站效率沒有任何關係,但實際上,SEO的目標與降低能耗的目標在本質上是一致的。在針對搜索引擎排名優化網站時,我們正在幫助人們快速,輕鬆地找到他們想要的信息。如果搜索引擎優化的好,人們可以減少在網絡上查找信息和瀏覽不滿足其需求的頁面的時間。這意味著消耗的能量更少,用戶消耗的能量用到了實處。

2. 文案撰寫

與搜索引擎優化類似,文案撰寫會影響網站效率,因為它會影響人們花在瀏覽網站上的時間。 有時,我們希望人們在網站上花費大量時間,使自己沉浸在我們的內容中。我們不希望人們把時間浪費在只有很少價值或根本沒有價值的內容上。因此,清晰有效的文案寫作可以幫助減少用戶在互聯網上的浪費時間,進而減少浪費的能源。

3. 用戶體驗(UX)

良好的用戶體驗的核心要素之一是減少用戶使用過程中的摩擦。我們希望人們能夠找到想要的東西,並以儘可能簡化的方式來操作。良好的用戶體驗使每個人都可以更輕鬆而愉快地使用網絡,這再次減少了浪費精力導航到不正確的頁面上,或是盯著網頁推測下一步該點哪裡。

4. 減少或縮小圖像

在大多數網站上,圖像是頁面文件大小的最大貢獻者。您使用的圖像越多,這些圖像文件越大,則需要傳輸的數據就越多,所消耗的能量也就越多。無論技術上如何優化,設計人員和內容創建者都應仔細考慮其圖像使用方式。

  • 圖像是否真的為用戶增加了價值?
  • 它傳達有用的信息嗎?
  • 如果圖像較小,是否可以達到相同的效果?
  • 我們能否減少用戶看不見的圖像,例如輪播中的圖像?
  • 我們可以使用矢量圖形(甚至 CSS 樣式)代替照片來達到相同的效果嗎?

在不影響用戶體驗的情況下思考這些問題並將圖像保持在最低限度將有助於降低能耗。

5. 減少視頻

儘管視頻的使用頻率低於圖像,但視頻作為網上的一種內容格式正變得越來越流行,並且它是迄今為止數據強度和處理強度最高的內容形式。與圖像一樣,問下自己是否真的需要視頻。如果是這樣,請查看是否可以通過禁用視頻自動播放並保持視頻內容簡短來減少視頻產生的網絡流量量。就頁面大小而言,具有視頻播放功能的網站可能比沒有視頻的網站大一個甚至兩個數量級,並給用戶的CPU帶來更高的負載,從而導致能源消耗大大增加。

6. 仔細選擇字體

網絡字體可以增強網站的視覺吸引力,但也大大增加了使用它們的網站文件大小。單個字體文件可能多達250kb,這還只是標準粗細。如果要加粗,需要再多250kb!

為了幫助減少自定義網絡字體的影響,設計人員應考慮以下選項:

        

  • 盡可能使用系統字體。它們並不總是那麼漂亮,但是可以使用諸如 Arial 和 Times New Roman 這樣的字體,而根本不加載任何字體文件,因為它們已經在用戶設備上了。
  •     

  • 使用較少的字體變化。您可能會覺得確實有必要使用自定義網絡字體,但是在選擇的字體數量和每種字體使用的不同粗細數量方面要節儉。

開發

開發人員對他們創建和維護的網站的能源效率有很大的影響。儘管設計師和內容編輯做出的某些決定不在開發人員手中,但是在某些領域中,開發人員可以完全控制,在這些領域中,他們可以優化所提供的內容和設計。

7. 編寫整潔的代碼

整潔,精簡的代碼本來說是一件好事。保持代碼簡潔明了,避免重複代碼並編寫高效的查詢語句。幕後的代碼看上去應該像是一台保養良好的精緻機器。

請記住,這不僅適用於您編寫的代碼,而且還適用於您借來的代碼。如果您使用的是現有的框架和庫,請確保它們也得到了完善和調試,以有效地提供所需的功能,並且您沒有在用高射炮打蚊子。如果您使用的是 WordPress 之類的內容管理系統,請避免使用不必要的插件。這些插件會增加負擔,請盡量選擇服務器負載較小並且不會在前端增加不必要的文件大小的插件。我們的格蘭諾拉入門主題旨在幫助您做到這一點。

8. 減少使用 JavaScript

JavaScript 通過兩種方式影響網站效率:通過增加文件大小到網頁上以及增加用戶設備所需的處理量。其中的第二點比其他類型的文件更明顯。

由 JavaScript 驅動的功能在用戶的電腦或手機上處理,並增加了CPU使用率,從而增加了設備的能耗。聽到筆記本電腦上的那些呼呼響的散熱風扇聲了嗎?那正是能源被浪費掉的聲音。

尋找使用更有效的技術(例如 CSS )來實現前端交互、功能和動畫,或者至少有效地使用 JavaScript 。此處應特別提及跟踪和廣告腳本,這些腳本很少為用戶提供價值,但卻會增加文件的大小,導致大量的CPU運算,降低網站速度並可能侵犯用戶隱私。 Webtest.app 是一個衡量廣告腳本的性能、數據和能源消耗影響的出色工具。

Safari 中新的網絡檢查器提供了一個有用的工具,可幫助評估網頁對最終用戶設備的能源消耗影響,蘋果 Webkit 開發者的這篇文章 提供了一些詳細的使用建議。

9. 優化圖像

如上所述,圖像是大多數網頁上傳輸數據量最大的貢獻者之一。除了設計者和內容作者能對圖像使用做出決定外,還有一些技術決定會嚴重影響頁面上顯示的圖像文件大小。這些包括:

  • 以正確的比例加載圖像,而不是依靠CSS來調整它們的大小,從而避免加載比其顯示比例大的圖像。
  • 使用 TinyPNGShortPixel 之類的工具壓縮圖像文件而不會造成質量損失。我們在這裡記錄了我們最喜歡的圖像壓縮工具
  • 對每個圖像使用最有效的文件格式,例如 WebP 而不是 JPEG 。

遵循這些步驟後,可以顯著減小圖像文件的大小,從而減少能耗並縮短加載時間,而不會給網站訪問者帶來不利影響。

10. 優化字體

有一些技術方法可用於減少網站上的字體大小,即使使用自定義字體,它也可以使文件大小減少97%之多。嘗試以下方法以減小字體文件的大小:

  • 堅持使用 WOFF 和 WOFF2 之類的現代網絡字體文件格式,與 TTF、OFT 和 SVG 文件格式相比,它們使用更高的壓縮方法。
  • 子集字體僅包含網站上所需的字符。

有關優化網絡字體的性能和大小的更多信息,請參閱 Josh 的這篇文章

11. 使用加速移動頁面(AMP)

加速移動頁面旨在通過去除不必要的代碼和文件大小來簡化移動設備上的內容加載,並提供原始網頁的簡潔版本。從理論上講,如果網站效率高,諸如加速移動頁面之類的技術實際上並不會有多大幫助。但是在原始網頁不夠理想的情況下,加速移動頁面可以成為一種有用的工具。它可以快速地生成出提供面向移動用戶的更輕便,更節能的版本。

還應注意,谷歌尤其優先考慮移動搜索結果中與新聞相關主題的加速移動頁面內容,因此它可以幫助提高網站內容的曝光量。缺點是您的內容可能會在谷歌產品上提供,而加速移動頁面刪除的某些內容可能是您認為重要的內容。這是一個功能強大的工具,但要謹慎使用。

12. 建立靜態網頁

內容管理系統支持的網站對網站數據庫進行查詢並動態生成頁面。簡單來說,這意味著網絡服務器必須進行處理,考慮每次有人嘗試加載頁面時要向用戶發送哪些信息,這將導致服務器消耗更多的能量。一種解決方案(下面列出來)是使用服務器緩存技術,但是在某些情況下,可能完全不用數據庫就可以簡單地對靜態網頁進行服務器處理。

這可以通過將網頁直接編寫為 HTML、CSS 和 JS 等靜態文件,或者使用靜態網站生成器或專業的靜態網站託管服務商將由內容管理系統生成的網站轉換為靜態文件來實現。

13.使用漸進式網絡應用技術(PWA)

漸進式網絡應用技術使網站能夠利用通常只有本地應用程序中才能看到的功能。就像克里斯最近寫道,漸進式網絡應用技術的核心功能之一是能夠在用戶設備上緩存文件,這意味著在重複訪問時無需重新加載內容和資料。這可以顯著減少重複訪問者加載的數據量,尤其是在移動設備上,其數據傳輸比有線連接的能耗更高。想其他那些方法一樣,它也可以幫助縮短加載時間和用戶體驗,而沒有任何實際缺點。

網絡主機託管

數據中心中的網站以及與數據中心之間的數據傳輸都消耗大量能量。因此,精心選擇網絡託管服務可能會對能源效率和網頁速度產生重大影響。以下是要考慮的要點。

14. 使用服務器緩存

對於使用內容管理系統的網站(例如 WordPress 或 Drupal ),每次有人訪問網頁時都會動態生成頁面。這是非常低效的,因為它需要針對每個單個頁面進行服務器處理,從而增加了網絡服務器的能耗。

諸如 Varnish 之類的緩存技術可以預先生成每個頁面的靜態版本,從而為大多數訪問者顯著地減少服務器開銷,不僅降低了服務器的能耗還對大大優化了頁面加載時間。

雖然設置起來可能很複雜,但是許多主機(例如 KinstaWP Engine )現在都提供此選項作為現成的功能,這意味著您只需付出很少的精力就可以提高網站的能效和網絡性能。

15. 選擇具有較高電源使用效率(PUE)等級的主機

PUE 也就是「電源使用效率」是通常被用來對數據中心進行能源效率評估的指標。通過將進入數據中心的能量除以用於運行其中的計算機的能量來確定電源使用效率。然後,這突出顯示了在非計算活動(例如冷卻)上浪費的能量數量。數據中心的典型電源使用效率約為1.67,這意味著進入數據中心的每1.67瓦電中,只有1瓦電用於為計算系統供電。由谷歌運營的高效數據中心的電源使用效率可以高達1.11

16. 使用靠近用戶的數據中心

互聯網使用的大量能量用於通過電信網絡傳輸數據。毋庸置疑,信息傳播的越遠,其旅行所消耗的能量就越多。因此,選擇靠近目標受眾的數據中心將有助於減少能耗。例如,您可能會從美國的託管公司那裡找到便宜的網絡託管套餐,但是如果目標訪問者在英國或德國,則將浪費能源在整個大西洋上傳輸數據。而且,這種額外的距離也可能導致頁面加載時間的延遲,因此將您的網站放置在靠近主要受眾的數據中心內將對用戶體驗和地球都有好處。

17.使用 CDN(內容分發網絡)

將數據中心放置在與主要受眾群體接近的地方非常好,但是如果您的受眾分佈在世界各地,那就沒那麼容易了。內容分發網絡( CDN )為此提供了一個很好的解決方案,可以為來自全球數據中心網絡的資料(例如圖像文件)提供服務。這意味著在大多數情況下,將從用戶自己區域中的 CDN 位置加載最大的文件,從而減少了每次加載頁面時數據傳輸的距離。於是,能源效率得以提高,頁面加載時間得以縮短。

總結

至關重要的是,我們減少了網絡行業內的能源浪費。我們很難甚至不可能準確地測算網站的能源消耗(儘管有諸如 Website Carbon 和 Safari 網絡檢查器之類的工具提供幫助),但是我們可以做很多事情來消除浪費並提高效率。這些操作大多數都不是不可能完成的任務,它們只需要在設計,內容創建,開發和託管的各個方面都注重細節並仔細思考。

而且,我們這些有助於提高網站能效的方法,同時也帶來了多方面的好處,無論是更好的 SEO ,更好的網絡性能還是更好的用戶體驗。一個高效的網站從根本上說是一個更好的網站。

如果您有減少網站能耗的技巧,請聯繫並告知我們

另外,如果您有興趣創建更綠色的網絡空間,請閱讀並簽署《可持續網絡宣言》

彩蛋小撇步!

自從發布此文以來,我們還就如何減少網站的能耗提出了一些其他建議。

18. 阻止爬蟲

BlogVault 的 Akshat Choudhary 建議,阻止網絡爬蟲可以降低能耗。他說:「網絡爬蟲通常會佔用處理和帶寬等資源的50%。」

19. 深色模式

Hazel Ho 建議減少空白空間並採用深色模式。深色的網站是許多年前在網站上普及的節能技術之一,並且隨著液晶屏幕的出現而逐漸消失,液晶屏幕不同於 CRT 屏幕具有永久背光,無論屏幕上實際可見的顏色如何,都使用相同的能量。但是,隨著 OLED 屏幕分別點亮每個像素的出現,使用較暗的顏色再次成為減少終端用戶設備能耗的可行技術。

20. 使用最新的 PHP 版本

這是來自 Kinsta 的 Katalin Juhasz 提出的建議,我們還應該考慮服務器上運行的技術,以確保我們使用最有效的版本。她特別提到,較新版本的 PHP 不僅速度更快,而且使用的服務器資源更少,因此能耗也更少。 Kinsta 撰寫了有關更新 PHP 版本的好處以及對性能的影響的文章。毫無疑問,這也將適用於其他非 PHP 的方案。


如果我們不能保護地球,我們就也不能保護我們自己。環保不是送給瀕危野生動物的禮物,而是在實實在在地保護我們自己。少點一次外賣,不要浪費食物,循環利用塑料袋,使用公交卡而非二維碼搭乘公共交通,減少網上衝浪的時間用來思考,這些都是有用的。

分類
記事

「轉載」苍天啊,现在建个个人网站真是一步一个坎啊

凑着双十一买了阿里云一台云主机,打算放个 wordpress,把上课相关的资料放上去,给学生分享一下。wordpress 挺方便,一会儿就搭建好了,到了域名备案这里,真是横陇地拉车——一步一个坎啊。 先是起了个“老金书房”的名字(学生叫我老金,我就用上了),客服说不能带个人姓名,不能带企业信息,连“书房”这部分都有问题。 好吧,换一个,我写了个“陋室淘金”,又说这个名字也不行,我说出自《浪淘沙》的诗句,有什么问题?客服说主要是“淘”字涉嫌企业信息,莫非是“淘宝”?还说我的备注信息里面提到了视频,这个也不行。我说不是把视频发到你们网站上,而是先发到哔哩哔哩或者优酷上,他们审核没问题,我再加个链接。客服表示人家那是企业认证过的,我的是个人网站,所以不能发视频。我说我不要域名行不行,让我的学生直接用 IP 访问算了,客服说他们只管域名这部分,IP 的事情不管。 这也行? 我就打给阿里云的客服,问问他们:1、到底有哪些字眼是要避开的? 2、域名服务能不能退了算了。阿里云客服效率挺高,至少有一半挺高,就是告诉我,域名服务不能退(因为我已经申请过域名了,问题在备案那里)。至于名字,他们很热心,帮我转了三个客服,虽然没有说明白哪些字眼不能用,但告诉我:个人网站没有禁止发视频!!!

好吧,我再次看了发给我的邮件,发现里面提到了一个地址,是关于起名字时的注意事项,我还想着是我自己没仔细看邮件,错怪人家了。点开一看,我觉得没有错怪他们,因为这个地址显示“你查找的知识点不存在或知识库系统异常”。

我现在只好又起了一个名字,然后在备注中说明这个名字的来源,希望这次古人可以帮我找回点面子。

这是邮件给我的提示信息:

个人网站名称不能涉及到行业、企业等信息,且个人网站名称请勿涉及个人姓名、地名,请不要用纯数字或字母组成,不能包含特殊符号,不能使用成语;网站名称请使用 3 个以上汉字命名,请不能使用 XXX 个人空间、资讯、网站、网络、网址、爱好者、作品展示、工作室、平台、主页、热线、社团、导航这种的格式命名;网站名称中不能带有博客、论坛、在线、社区、交流等字样,若要带有此类信息,需提交前置审批文;

我现在不知道究竟还能用什么样的名字了,文邹邹的、涉及古人诗词作品的、涉及典故的,估计已经被很多企业用过了;直白的,也不行。 现在静待审核吧

原文作者:jzq526 原文鏈接:苍天啊,现在建个个人网站真是一步一个坎啊 – V2EX 轉載未經授權,如果冒犯煩請聯繫。

分類
記事

網站搬家

用了兩年Hostodo,5月底收到郵件說要升級機房,將會提供更好的服務,盡量平滑升級不導致停機。升級後IP將會發生變化,如果想保留老IP可以來發ticket。實際情況是VPS忽然就關閉了,並且通過後台無法啟動。發ticket問IP的事情,得到的答覆是不能在不收費的情況下幫客戶保留舊IP。VPS一關就是2天,沒有任何辦法。第三天網站服務上了,說明VPS啟動了,但是中國並不能訪問,客服回復說不是被ban,是他們網絡還沒調好。然後又收到郵件說新的網頁後台可以看到新IP。打開之後登錄提示密碼錯,嘗試找回密碼提示郵箱不存在。這就這麼折騰着……

好在花落無聲兄弟再次慷慨相助,提供了Vesta空間給我寄存網站。由於原來也是用Vesta面板,搬家過程非常順利。而且新版Vesta面板集成了LetsEncrypt,一鍵即可獲得SSL證書方便的很。新服在香港,速度也有提升。遇到一點小問題是,搬過來後,中文url亂碼,只需要重新設置文字鏈接類型,再選回文章名格式就好了,不需要改動wordpress文件。


Cyber Panel搬回裸lnmp

Cyber Panel的備份功能可以方便的把網站和數據庫打包下載,自己傳到新服務器即可。

#導入數據庫
mysql -u root -p
CREATE DATABASE DB_Name;
GRANT ALL ON DB_Name.* TO 'user42'@'%';
flush privileges;
exit;
mysql -u user42 -p DB_Name < data-dump.sql
#如果遇到utf8mb4_unicode_520_ci未知編碼,只需將其替換成utf8mb4_unicode_ci
nano data-dump.sql
按Ctrl + \
輸入舊詞utf8mb4_unicode_520_ci並回車
輸入新詞utf8mb4_unicode_ci並回車
按a替換全部
按Ctrl + o保存文件
#Cyber Panel的備份文件中沒有打包ssl證書
#將dns指向新服務器後獲取新證書
#測試獲取證書
certbot -d ft.wupo.info --nginx certonly --dry-run
#正式獲取證書
certbot -d ft.wupo.info --nginx certonly
#nginx wordpress 配置
    server {
        listen      443 ssl;
        listen      [::]:443;
        server_name ft.wupo.info ;
        root        /usr/share/nginx/html/ft.wupo.info;
        index       index.php index.html index.htm;

        ssl         on;
        ssl_certificate      /etc/letsencrypt/live/ft.wupo.info/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/ft.wupo.info/privkey.pem;


        location ~ \.php$ {
    	    fastcgi_pass   127.0.0.1:9000;
    	    fastcgi_index  index.php;
    	    fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    	    include        fastcgi_params;
	}
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
    }

	server {
		listen 80;
		server_name ft.wupo.info;
		return 301 https://$server_name$request_uri;
	}
#wordpress更新主題或插件提示ftp賬戶
#一般是權限問題,我的php-fpm是nginx用戶,所以
chmod -R nginx:nginx /usr/share/nginx/html/ft.wupo.info/wp-content
chmod -R nginx:nginx /usr/share/nginx/html/ft.wupo.info/wp-includes
#然後在wp-config.php追加一句
define('FS_METHOD', 'direct');
分類
网站

Line分享

製作Line分享按鈕請先參考官方文檔用LINE傳送。簡單說是Line分享只能傳一條文本消息和一個url鏈接。http://形式會先跳轉到Line服務器的一個網頁,讓用戶選擇打開Line還是安裝Line。line://形式則直接打開Line進行分享,但是如果用戶沒有安裝Line則按鈕會沒有反應。

使用中發現,Line對Emoji的支持還是很好的,可以放到分享信息中,可以參見Emojiえもじ。同時還發現Line對url的支持有問題,即url中如果出現非英文字符,Line即會將url中剩餘部分丟棄,造成url丟失數據。其實這個解決起來很簡單,用php自帶的base64函數把中文編碼一下再傳遞就好了。只用base64是不行的,因為裡面會有空格等字符會被Line裁掉,所以在加一層urlencode就好了。

//js中定義好Line的分享鏈接,name用base64加密,下面一行php被wordpress保護機制注釋了。
var urlShare="http://www.55mun.com/gameh5/match3/indexv.php?name=<?php echo urlencode(base64_encode($name));?>";
//php中接收並解析出name
$n=htmlspecialchars(base64_decode(urldecode($_GET["name"])));


Line分享網址抓取錯誤

有次分享網址,抓取到的縮略圖和標題都是網站主頁的信息,後來發現是head裏有一條meta信息導致的,這條meta中的url必須是分享的url,否則line就肯定會按照這個meta中的url來抓取:

<meta http-equiv="mobile-agent" content="format=html5;url=http://thePage.you.wishToShare/">

關注[email protected]

寫法1:

Follow <a href="line://ti/p/@myLineAtAccount">myLineAtAccount</a>

寫法2:

Follow <a href="intent://ti/p/@myLineAtAccount#Intent;scheme=line;action=android.intent.action.VIEW;category=android.intent.category.BROWSABLE;package=jp.naver.line.android;end">myLineAtAccount</a>
分類
网站

Mobile Detect

Mobile_Detect is a lightweight PHP class for detecting mobile devices (including tablets). It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.

分類
网站

用.htaccess實現二級域名網站

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(test.)?domin.com$
RewriteCond %{REQUEST_URI} !^/testFolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /testFolder/$1
RewriteCond %{HTTP_HOST} ^(test.)?domin.com$
RewriteRule ^(/)?$ testFolder/index.php [L]

萬網的輕雲服務器不推薦大家購買,說是服務器,文件只能通過ftp傳,而且還自動刪.htaccess。雖然.htaccess上傳後就不見了,運氣好的話規則還是起作用的,爲什麼這麼說呢,因爲他們的輕雲服務器有獨特的.htaccess語法,真是坑。上面的代碼經過測試是可用的。爲什麼這麼不好還要用呢,備案啊,穩定性啊當然還有很便宜的價格。