vagrant 執行 vagrant box update 失敗

執行以下指令若失敗:

$ vagrant box update
==> default: Checking for updates to ‘laravel/homestead’
    default: Latest installed version: 0.5.0
    default: Version constraints:
    default: Provider: virtualbox
There was an error while downloading the metadata for this box.
The error message is shown below:

The requested URL returned error: 429 Too Many Requests

 

執行以下指令,就可以再重新執行 vagrant box update

$ rm -rf ~/.vagrant.d/tmp/

系統校時

CentOS 7 中的校時方式:

安裝 ntp 套件:

$ sudo yum -y install ntp

與某個時間伺服器作校正:

$ ntpdate pool.ntp.org

剛才做的 ntpdate 只是一次性的對時,要開啟 ntpd 這個 daemon 才能持續的對時,執行以下:

$ systemctl start ntpd

執行以下指令,看 ntpd 這個 daemon 的狀態是否有在執行:

$ systemctl status ntpd

設定讓系統在開機時自動啟用 ntpd daemon

$ systemctl enable ntpd
$ systemctl is-enabled ntpd

 

安裝 Let’s Encrypt 所發行的 SSL 憑證,將網址加密變成 https

Let’s Encrypt 官網的兩個較重要連結:

Getting Started

How Let’s Encrypt Works

 

進入到 Certbot 網站 按照指引安裝憑證並設定(以選擇 Apache、CentOS/RHEL 7 為例):

 

一、安裝 epel-release、python-certbot-apache:

$ sudo yum install epel-release
$ sudo yum install python-certbot-apache

 

二、作業系統還要安裝mod_ssl (若是安裝 Apache 的話),因為 Apache 若要支援 https ,就要需 mod_ssl 模組,同時也安裝openssl

$ yum install mod_ssl openssl

然後可再自己的本機端輸入以下指令,看 443 port 是否有通:(出現以下表示有通)

$ telnet 111.111.111.111(server的ip) 443

Trying 128.199.216.14...
Connected to 128.199.216.14.
Escape character is '^]'.

 

三、建立 virtualhost-443.conf

$ touch /etc/httpd/conf.d/virtualhost-443.conf

該檔的內容為(假設網址為 xxx.com):

<VirtualHost *:443>
  ServerName xxx.com
  DocumentRoot /var/www/html/xxx
  SSLEngine on
  SSLCertificateFile    /etc/letsencrypt/live/xxx.com/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/xxx.com/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/xxx.com/fullchain.pem
  <Directory "/var/www/html/xxx">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

其中 SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile 這三個所指定的檔案會在 以下指令之後產生:

$ certbot –apache

 

四、將原來的 80 port 轉到 443 port

產生好憑證之後,因為目前一般會設定 80 和 443 兩個 port ,所以要將80轉到443,
也就是若一般使用者輸入 http://xxx.com 會轉址到 https://xxx.com

$ vi /etc/httpd/conf.d/virtualhost.conf

<VirtualHost *:80>
  ServerName xxx.carlos-studio.com
  DocumentRoot /var/www/html/xxx
  Redirect permanent / https://xxx.com/
  <Directory "/var/www/html/xxx">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

以上重啟 apache 後即完成。

 

五、憑證的 Automating renewal

因為 Let’s Encrypt 憑證預設只有 3 個月,所以需要設定自動 renew,輸入以下指令測試是否可以正確執行(此指令並不會真的renew,只是測試):

$ certbot renew –dry-run     (註記:dry 前面是兩個橫線)

以下這個指令才會真的renew,若確定執行成功,就可以設定在 cronjob 裡了,每天跑以下指令(官方建議每天跑兩次):

$ certbot renew –quiet         (註記:quiet 前面是兩個橫線)

 

六、如果要刪除某個憑證,不需要再用 https 了

先找到某個domain的相關設定檔及資料夾,例如 “sabinahuang.carlos-studio.com"

$ find /etc/letsencrypt/ -name “*sabinahuang.carlos-studio*"

就會找出以下:

/etc/letsencrypt/renewal/sabinahuang.carlos-studio.com.conf
/etc/letsencrypt/live/sabinahuang.carlos-studio.com
/etc/letsencrypt/archive/sabinahuang.carlos-studio.com

全數刪除即可。

定義

行為報表:

行為 → 網站內容 → 所有網頁:這部份列出了訪客瀏覽過的所有網頁網址。

數據總量:行為 → 總覽,預設上會列出過去30天的瀏覽量(a);行為 → 事件 → 總覽:會列出事件總數(b)。(a) + (b) 即為數據總量,這個數字必須少於1000萬,才不會超過 GA 服務條款的限制(免費版每月上限1000萬,專業版則是每個月10億筆)。

 

品質健檢計分卡

品質健檢計分卡:GA的檢查項目,以及可算出數據的品質分數。

品質分數 = 加權後總得分 / 加權比重總和 X 綠燈狀態分數

狀態:綠色10分、黃色5分、紅色0分。
綠色表示照預定計劃進行中,不須採取行動;
黃色表示部分進行中,或者進行得不順利,需要採取行動;
紅色表示尚未進行或者根本尚未導入,需要採取行動。

加權比重:分數可分為:0.0、0.25、0.5、0.75、1.0、2.0(此主要用為交易追蹤)。

laravel filesystem 使用 public 的 storage

在 config/filesystems.php 檔案中,將:

‘default’ => ‘local’,
改成
‘default’ => ‘public‘,

代表將會把上傳的圖片,存到 storage/app/public 資料夾中。

然後要再執行以下指令來建立symbolic link:

# cd ~/path/project_folder
# ln -s ../storage/app/public ./public/storage

就可以在網頁中使用以下語法,來取得路徑:

<img src="{{ asset(‘storage/file.jpg’) }}">

[JS] 取得 unix timestamp 的方法

const timestamp1 = Date.now();
const timestamp2 = new Date().getTime();
const timestamp3 = +new Date();
// 以上三種寫法會取得目前的 unix timestamp
console.log(timestamp1 + " " + timestamp2 + " " + timestamp3);
      
const timestamp4 = new Date('2012-06-08').getTime();
const timestamp5 = +new Date('2012-06-08');
// 以上二種寫法會取得特定日期的 unix timestamp
console.log(timestamp4 + " " + timestamp5);