2019-01-24

使用 docker mongo

啟動 mongo ,將 27017 port bind 到 localhost 的 27017 port,可方便使用 robo 3T 工具(儲存區沒有設定):

$ docker run -d -p 27017:27017 --name 容器名稱  mongo

若要使用 mongo console,依據官方文件(不一定要 bind port):

$ docker run -it --link 容器名稱:mongo --rm mongo mongo --host mongo test

使用 robo 3T 是比較方便的。
若要使用 local 磁碟當儲存區:

mkdir ~/data
sudo docker run -d -p 27017:27017 -v ~/data:/data/db mongo



2018-10-18

使用 localhost 測試 Facebook login

2018-10 開始 Facebook login 強制使用 HTTPS 了,若要在 localhost 測試也是得用 HTTPS 才行。以下的參考連結說明 MAMP 的作法:
https://gist.github.com/jfloff/5138826

Facebook login 以前做過幾次,都是針對活動網站的,這次也不例外。一陣子沒做了,想說依照官方範例,應該不會有太大問題,但結果還是卡了一兩個小時。以下列出卡到的點:

1. 在設定 Facebook app 時,在「設定」〉「基本資料」,「應用程式網域」和「網站網址」的域名請一致。(設定介面經常在變,規則也是)

2. 在「Facebook 登入」〉「設定」裡,「對重新導向 URI 使用 Strict 模式」現在預設是設定為開啟,而且不能變更。所以一定要在「有效的 OAuth 重新導向 URI」填寫正確的 redirect uri。

3. 使用 facebook/graph-sdk 時,可以直接 copy sample code 去改,但記得在 login.php 和 fb-callback.php 裡都要先以 session_start() 啟動 session 功能。因為 FacebookRedirectLoginHelper 的 CSRF 是寫在 session 裡的。



在 MAMP localhost 上使用自簽的 https

參考
https://gist.github.com/jfloff/5138826

  1. Backup your /Applications/MAMP/conf/ dir.
  2. Generate a (dummy) SSL Certificate
    $ cd ~
    
    # generate a private key (will request a password twice)
    $ openssl genrsa -des3 -out server.key 1024
     
    # generate certificate signing request (same password as above)
    $ openssl req -new -key server.key -out server.csr
     
    # Answer the questions
    Country Name (2 letter code) [AU]: CA
    State or Province Name (full name) [Some-State]: Quebec
    Locality Name (eg, city) []: Montreal
    Organization Name (eg, company) [Internet Widgits Pty Ltd]: Your Company
    Organizational Unit Name (eg, section) []: Development
    Common Name (eg, YOUR name) []: localhost
    Email Address []: your_email@domain.com
    A challenge password []: # leave this empty
    An optional company name []: # leave this empty
     
    # generate the certificate
    $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
     
    # remove the password from the server key
    $ cp server.key server.tmp
    $ openssl rsa -in server.tmp -out server.key
     
    # Move the certificate into your MAMP apache configuration folder
    $ cp server.crt /Applications/MAMP/conf/apache
    $ cp server.key /Applications/MAMP/conf/apache
    
  3. Open /Applications/MAMP/conf/apache/httpd.conf and uncomment Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf.
  4. Keep your vhost in /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf just the same.
  5. In /Applications/MAMP/conf/apache/extra/httpd-ssl.conf, find the following block and edit the fields Server Name and Document Root with the values you already have in your vhost.
    #   General setup for the virtual host
    DocumentRoot "/Applications/MAMP/Library/htdocs"
    ServerName www.example.com:443
    ServerAdmin you@example.com
    ErrorLog "/Applications/MAMP/Library/logs/error_log"
    TransferLog "/Applications/MAMP/Library/logs/access_log"
    and edit in your DocumentRoot and ServerName settings:

2018-06-04

跨埠存取 cross ports

筆記:
  一台主機同時跑 apache/php (port: 80) 和 node/express/react (port: 3000)
  react 要呼叫 php api 時,同時要傳遞 cookie 的情況
  1. apache/php 的 Access-Control-Allow-Origin 要指定,不可以是 wildcard (*)。
  2. apache/php 的 Access-Control-Allow-Credentials 設定為 true。
  3. react 發 ajax 時,withCredentials要設定為 true。

2017-01-21

使用 N 更新 Node.js

N 是用升級 Node 的 npm 套件,安裝:

sudo npm install -g n


安裝 N 之後即可升級 Node.js 或者更換版本。下行是安裝最新版本:

sudo n latest


下行是安裝 6.9 LTS:

sudo n 6.9


2015-11-24

MAMP 的 Apache httpd-vhosts.conf 設定


#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

<Directory "/Users/shinder/Dropbox/my_proj">
    Options       All
    AllowOverride All
    Order         allow,deny
    Allow         from all
</Directory>

<VirtualHost *:80>
    DocumentRoot "/Users/shinder/Dropbox/my_proj"
    ServerName   my_proj.shinder
    ErrorLog     "logs/my_proj-error.log"
    CustomLog    "logs/my_proj-access.log" common
</VirtualHost>

2015-04-17

在 Mac 上昇級 PHP cli 版本的另一種方式

最近因為 laravel 以 Mac 使用 PHP cli 時,發現 Mac 內附的 PHP cli 沒有 Mcrypt extension。依照 Apple 官方的做法是下載原始碼重新編譯,常常是在 make install 過程得到一堆 warnings 然後就卡住了。

這裡的方式是直接安裝 MAMP 免費版,MAMP 3 本身就包含數個版本的 PHP,包含 PHP 5.5 及 PHP 5.6。

/Applications/MAMP/bin/php/php5.5.18/bin/php -m

在 terminal 執行上式,可以得知 MAMP 所內附的 PHP 5.6 cli 包含了哪些 modules。

我使用的 Shell 是 ZSH,所以編輯 ~/.zshrc ,最後面加入下式

export PATH="/Applications/MAMP/bin/php/php5.5.18/bin:$PATH"

儲存 .zshrc 後,離開 terminal,再進入就可以使用較新版本的 PHP cli 了。

2015-04-09

在 DigitalOcean 上快速建立 LAMP + FTP server

在 DigitalOcean 上快速建立 LAMP + FTP server 筆記

1. 在 DigitalOcean 上建立 Droplet
    輸入 Droplet Hostname
    選 $5/mo (視需求而定)
    選 Singapore (目前離台灣最近的點)
    勾選 Enable Backups (視需求而定)
    選 Applications/ LAMP on 14.04 (現成的)
    Create Droplet

2. 使用 Shell 透過 ssh 登入
    ssh root@000.000.000.000 (主機 IP)
    預設的密碼會透過 email 寄給你

3. MySQL root 密碼所在位置
    /etc/motd.tail

4. 安裝 vsftpd
    sudo apt-get install vsftpd

5. 修改 /etc/vsftpd.conf
    write_enable=YES
    local_umask=002 (視情況而定, 檔案上傳後的 chmod mask)
    chroot_local_user=YES

6. 重新啟動 vsftpd
    service vsftpd restart

7. 建立新的系統用戶
    adduser myftpuser

8. 在 /home/myftpuser 下建立子目錄 www/html
    mkdir www

9. 設定 www 目錄及子目錄屬性
    chmod 777 www/ -R

10. 設定家目錄為不可寫 a-w (vsftp 的規定)
    chmod a-w ./myftpuser/

11. 修改 apache2 設定 /etc/apache2/apache2.conf 加入
    <Directory /home/myhomesftp/www/>
        Options FollowSymLinks
        AllowOverride All #mod_rewrite 需要
        Require all granted
    </Directory>

12. 設定啟用 mod_rewrite
    到 /etc/apache2/mods-enabled 設定 soft link
    ln -s ../mods-available/rewrite.load ./

13. 設定 vhost
    修改 /etc/apache2/sites-enabled/000-default.conf
        ServerName 000.000.000.000  #暫時,應該是 domain name
        DocumentRoot /home/myftpuser/www/html

14. 啟用 mcrypt 模組 (phpmyadmin 需要)
    php5enmod mcrypt

15. 啟用 PHP 的 short open tag
    修改 /etc/php5/apache2/php.ini
        short_open_tag = On
        memory_limit = 256M
        post_max_size = 32M
        upload_max_filesize = 8M

16. 重新啟動 apache2
    service apache2 restart

17. 利用 FTP 上傳檔案 (可以順便放上 phpmyadmin)
    檔案上傳之後,可以用下式修改所有檔案屬性
        chmod 777 html -R
    phpmyadmin 必須使用 755

18. 利用 phpmyadmin 上傳 sql 檔

19. 校正系統時間
    ubuntu 設定時區
        dpkg-reconfigure tzdata # 選 Asia - Taipei
    校正時間
        ntpdate time.stdtime.gov.tw
    vsftpd.conf 的 use_localtime 會影響 FileZilla client 的對時, 可以設定為 No

2015-04-03

Mac OS X 上 PhpStorm 8 中文輸入的問題

用 vi 編輯 /Applications/PhpStorm.app/Contents/Info.plist
sudo vi /Applications/PhpStorm.app/Contents/Info.plist

在 <key>VMOptions</key> 的 <string> 節點內最後加上
 -J-Djava.awt.im.style=on-the-spot
存檔,重新啟動 PhpStorm 就可以了。

2014-10-10

從 iframe 取得 document 和 cookie

Cordova 製作的 App, 取得 iframe 的 cookie 方式

var iframe = $('#iiframe')[0];
var win = iframe.contentWindow || iframe;
var doc = iframe.contentDocument || iframe.contentWindow.document;
alert(doc.cookie);

FB 留言