2020年4月30日 星期四

vagrant 還有homestead創造laravel app的基礎指令

Vagrant 指令

  • vagrant up >開機
  • vagrant up --provision >homestead.yaml有更改時,就要用這個指令重讀。
  • vagrant provision && vagrant reload
  • vagrant provision >重新啟動
  • vagrant halt >關機
  • vagrant suspend >暫停
  • vagrant box list >看本機有多少個image
  • vagrant ssh >用ssh到主機
  • vagrant box remove laravel/homestead  >移除homestead
  • vagrant box add laravel/homestead >加入homestead

https://vagrantpi.github.io/2018/02/11/vagrant/

下載Homestead設定檔案

  • git clone https://github.com/laravel/homestead.git ~/Homestead
  • sh init.sh >會看到Homestead.yaml新增了
  • mkdir ~/code >因應folder的map: 要創造code 的資料夾。

Homestead.yaml設定laravel開發環境

前面都很簡單,但是光這邊我搞了大概三個小時。這裡是巨坑,會有很多的錯誤。一條一條講解。

重點
 11 folders:
 12     - map: ~/Code
 13       to: /home/vagrant/Code/
 14 
 15 
 16 sites:
 17     - map: homestead.test  >>這邊要去vim /etc/hosts設定 127.0.0.1 
 18       to: /home/vagrant/Code/Hello/public  >>後面一定要有public。

Homestead.yaml解釋

這邊有兩個重點folders跟sites。
folders負責同步資料夾,讓主機可以看到虛擬機內的資料,一邊也像是docker的volume負責資料持久化的功能。
sites負責開放資料夾可供外部取用。
folder跟sites也會被myphpadmin參考使用到。要特別小心。myphpadmin用下載的就可以了,不要想說自己多厲害都要用cmd來做...很痛苦的。
11 folders:
11-13是要設定同步的folder。
  • map是指定在本機同步的資料夾。要用本機的角度來看
  • to 是要在vagrant的虛擬機上的同步資料夾。要用虛擬機的角度來看,
16sites:
16-18是要設定虛擬機app內public的folder要對應到的url。
我們的laravel app最後會有一個public網址,提供給外部的人取用,只有這邊設定了,外面的人才可以取用。跟dns設定有點象。只不過這邊設定的是public folder。
  • map: 這邊是要設定url>後續要去本機的vim /etc/hosts設定
  • to: 後面要有/home/vagrant/[同步資料夾名]/[app_name]/public

提示重點,名字很重要。
18行若是沒有加[appname]/public 的public就會出現403 Forbidden的問題。因為沒有指定目錄給nginx讀取。

我們的Hello是
我們要新創laravel app的時候,要選擇在Code資料夾下面,輸入創建app指令laravel new [appname]

然後
  • cd ~/Code/[app_name]
  • php artisan serve > 就可以看到laravel的歡迎畫面了
  • localhost:8000

設定Homestead.yaml觀念思路流程

  • 設定要同步的folder
錯誤
A VirtualBox machine with the name 'homestead' already exists.
Please use another name or delete the machine with the existing
name, and try again.

  • 設定要開放的site 的public folder

設定~/etc/hosts的dns檔案

$ vim ~/etc/hosts
192.168.10.10 blog.test
或是
127.0.0.1 localhost


2020年4月28日 星期二

laravel artisan新增controller


  • php artisan make:controller TodoController
  • php artisan make:controller AboutController
  • php artisan make:controller Admin/IndexController
  • php artisan make:controller 名稱 --resource  (帶CRUD方法)
laravel製作controller的時候不會跑出任何訊息。假如想要知道新增了什麼,就用git status來檢查

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class AboutController extends Controller
{
    public function index(){
        return view('about');
    };
}

laravel Homestead安裝mysql使用phpmyadmin連線

https://www.youtube.com/watch?v=9-vHcy5esAo
安裝並連線 mysql的影片(youtube)

https://getcomposer.org/download/ 安裝 composer
https://laravel.tw/docs/5.3/installation


使用homestead安裝的詳細方法
https://campus-xoops.tn.edu.tw/modules/tad_book3/page.php?tbdsn=1219

https://stackoverflow.com/questions/23788096/how-do-i-set-up-phpmyadmin-on-a-laravel-homestead-box

https://www.youtube.com/watch?v=lv6cK4oETjs 影片
這邊很要命。我搞了很久
folders:
    - map: ~/code/
      to: /home/vagrant/code

    - map: ~/code/phpMyAdmin
      to: /home/vagrant/code/phpmyadmin


sites:
    - map: 專案目錄名稱.test
      to: /home/vagrant/public_html/專案目錄名稱/public

    - map: homestead.test
      to: /home/vagrant/code/homestead/public

    - map: homestead2.test
      to: /home/vagrant/code/homestead2/public

    - map: homestead3.test
      to: /home/vagrant/code/homestead3/public

    - map: phpmyadmin.test
      to: /home/vagrant/public_html/phpmyadmin


八. 連入資料庫方法
http://zxcvbnm2749.blogspot.com/2018/02/laravel-homestead.html
因為vagrant預設連入DB是使用內建的mysql:homestead資料庫
DB:localhost
port:33060
帳號:homestead
密碼:secret
設定在laravel的 app\config\local\database.php
如果要更改成自己本機的mysql需要調整此設定檔

'mysql' => array(
 'driver'    => 'mysql',
 'host'      => '59.127.xxx.xxx',
 'database'  => 'white',
 'username'  => 'xxxx',
 'password'  => 'xxxx',
 'charset'   => 'utf8',
 'collation' => 'utf8_unicode_ci',
 'prefix'    => '',
),

laravel要連資料庫mysql的設定

不要這麼麻煩,請用lambo就可以了

phpmyadmin方法
https://www.youtube.com/watch?v=lv6cK4oETjs

2020年4月26日 星期日

rails .gitignore檔案

config/database.yml #database常常變更,不需要追蹤
public/uploads #客戶上傳的資料,不須追蹤

2020年4月25日 星期六

dockerlize 軟體環境

step 0 : 新增 Dockerfile
step 1 : 找到適合的 base image
step 2 : copy 原始碼
step 3 : 安裝 dependencies
step 4 : 設定 initial command
step 5 : build

2020年4月24日 星期五

docker 容器數據持久化數據卷

https://youtu.be/27WmFTlpcnE
跟redis很像
有兩種方法>一直接commandline添加二dockerfile.yml添加
  • docker run -it -v /宿主機絕對路徑目錄:/容器內目錄 鏡像名
可以用docker inspect <container-id> 來檢查



  • docker run -it -v /宿主機絕對路徑目錄:/容器內目錄:ro 鏡像名  (readonly)
  • 2020年4月18日 星期六

    docker 基礎 hello-world

    $ docker run hello-world

    docker images 

    • 列出本機有多少多少鏡像模板
    • -a: 列出本機有多少模板
    • -q:只顯示鏡像ID
    • --digest:顯示鏡像的摘要信息
    • --no-turnc:不要顯示摘要信息,顯示詳細信息
    其他功能
    • docker search: 去網站上面搜尋
    • docker rmi <image name1> <image name2> <image name3>:刪除鏡像檔案
    • docker rmi -f $(docker images -q)
    • docker ps:列出本機現在正在運行的docker容器
    • docker -n 2:列出過去啟動過的兩個容器
    • 退出容器1.exit 容器停止退出 2.ctrl+P+Q容器不停止退出
    • docker start <容器名或容器id>:啟動docker容器
    • docker restart <容器名或容器id>:重新啟動docker容器,成功了會返回對應的容器編號
    • docker stop <容器名或容器id>:溫柔停止容器
    • docker kill <容器名或容器id>:強制停止容器
    • docker rm <容器名或容器id>:刪除容器
    • docker rm -f $(docker ps -a -q):一次性刪除多個容器
    • docker  ps -a -q | xargs docker rm:一次性刪除多個容器
    xargs >>linux系統下,將上一個算式的返回值當作xargs。很好用的方法。

    拷貝

    • 将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
    • docker cp /www/runoob 96f7f14e99ab:/www/
    • 将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
    • docker cp /www/runoob 96f7f14e99ab:/www

    docker inspect 命令

    • docker inspect [OPTIONS] NAME|ID [NAME|ID...] 檢查用的,可以看到很多東西

    運行容器docker run

    -p主機端口:docker容器端口
    -P:運行隨機分配端口
    • docker run -it <image-tag>:運行容器並且進入命令行終端
    • docker run -it -P tomcat
    • docker run -d <image-tag>:後臺運行容器。沒有交互窗口,注意dokcer ps 找不到歐。所以開啟之後,沒發現運行程式,而主動關閉容器
    • docker run -it -p 8080:8080 tomcat
    • docker log -f -t  --tail <container-tag>:
      • -t是加入時間戳
      • -f是跟隨最新的日誌打印
      • --tail數字是顯示最後多少條
    • docker run -d centos /bin/sh -c "while true ; do echo hello zzyy ;sleep 2 ;done"
    • docker inspect <container-tag>:查看容器內部細節
    • docker attach -t <container-tag> <指令>:進入容器之後執行命令。(會進入容器,也常用)
    • docker exec -t <container-tag> <指令>:在外面執行容器內部的命令並返回結果。感覺好用歐~
    /bin/sh >>

    共享文件夾

    • docker run -it -v </宿主機絕對路徑目錄>:</容器內目錄> 鏡像名
    • docker run -it -v </宿主機絕對路徑目錄>:</容器內目錄>:ro 鏡像名  (只能讀取read only)
    commit 提交容器副本使他成為一個新image
    • docker commit -a="作者名" -m="描述" <container-tag> atduofilm/mytomcat1.2  

    2020年4月16日 星期四

    docker 安裝 wordpress的方法...抄快速

    https://qiita.com/vc7/items/e88026c75f2280f95ed4

    手順

    1. 建立資料夾
    2. 寫 docker-compose.yml
    3. 執行
    4. 停止執行
    5. 更新 WordPress
    6. 清除 Volume
    安裝 docker

    • sudo apt install docker docker-compose
    常用docker指令
    • docker ls #docker image
    • docker exec -ti [id] bash
    • docker-compose up #創建並開啓容器
    • docker-compose up -d # 後臺起
    • docker-compose down #停止並移除 容器 網絡 鏡像和volumes數據卷
    • docker-compose start #啓動服務
    • docker-compose stop # 停止服務

    2020年4月15日 星期三

    2020年4月9日 星期四

    安裝 最新的vim版本並與github同步


    思路:系統內建的vim常常落後很多版本,所以自己增加軟體庫。可以從最新的軟體庫中下載。
    1. sudo add-apt-repository ppa:jonathonf/vim
    2. sudo apt update
    3. sudo apt install vim
    4. vim --version >檢查vim的版本

    跟github同步vimrc

    http://hahagood.com/blog/2013/02/19/%E4%BD%93%E9%AA%8Cgithub%E5%90%8C%E6%AD%A5vimrc/
    思路:將github上面的vimrc檔案,用git clone下載到.vim資料夾,然後將vimrc檔案用軟連接到桌面的.vimrc。然後使用PlugInstall安裝套件。
      1. git clone https://github.com/duofilm18/myvim ~/.vim
    1. ln -s .vim/vimrc ~/.vimrc  >軟鏈結
    2. curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    3. $ vim +PlugInstall +qall 
    4. PlugInstall/PlugUpdate/PlugList/PlugClean

    我的外掛

    1. vim-plug   >好像比vundle好
    2. flazz/vim.colorschemes
    3. nerdtree
    4. ctrlp
    5. mattn/emmet-vim
    colorscheme PaperColor

    外掛參考網頁
    https://ruby-china.org/topics/25295

    CtrlP搜尋非常慢

    vim搜尋外掛crtlP的搜索速度超級慢,看來是因為git檔案的關係,使用:輸入以下文字,排除掉git追蹤檔案就可以讓搜尋瞬間完成。YEAH

    解法:

    let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . --cached --exclude-standard']

    來源

    https://www.reddit.com/r/vim/comments/2yg5ss/has_your_ctrlp_gotten_slow_change_the_indexer_and/

    vim-plug

    • PlugInstall
    • PlugUpdate
    • PlugClean[!]

    2020年4月8日 星期三

    ruby版本管理系統rbenv用法



    • rbenv install 2.5.0
    • rbenv global 2.5.0
    • ruby -v

    更新版本

    cd ~/.rbenv/plugins/ruby-build/ && git pull

    列出版本

    rbenv install --list   #列出可以安裝的版本
    rbenv versions               
    rbenv version    # 列出安装的版本

    设置版本

    rbenv global 1.9.3-p392      # 默认使用 1.9.3-p392
    rbenv shell 1.9.3-p392


    cloud9上面開發rails

     使用IAM身分登入,以免有資安問題。(用admin帳號登入,創建iam使用者,然後在上面的連結登入) 選擇 ubuntu18.04 減少查詢成本。 已經是超級使用者了,sudo 什麼都不需要輸入密碼了。 $ ruby -v  檢查 ruby使用的版本>>2.6.3,...