2018年8月29日 星期三

laravel voyager 教學

說明:https://github.com/the-control-group/voyager

中文化這邊有:https://laravel-china.org/topics/4720/i-also-translated-laravels-background-extension-voyager


1.首先安裝laravel 5.5

composer create-project laravel/laravel 5.5

composer update

2.安裝voyager

composer require tcg/voyager

3.設定env
APP_URL=http://localhost:8000
DB_DATABASE=xxxx
DB_USERNAME=xxxx
DB_PASSWORD=xxxx

4.執行voyager install migrate

php artisan voyager:install

PS:如果出現錯誤可以到config/databases 調整mysql

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
],


3.創建admin

php artisan voyager:admin your@email.com --create


5.網址打入 localhost:8000/admin 使用剛剛輸入的密碼登入


6.設定可以使用google analytics功能

說明:https://www.youtube.com/watch?v=Qw5HQiZIehg

在setting頁面->admin->

Google Analytics Client ID (used for admin dashboard) setting('admin.google_analytics_client_id')

填入https://console.developers.google.com/apis/dashboard
設定的 oauth 憑證的client_id。

設定完畢即可以在disable登入gmail帳號,並看到相關數據資料。




2018年8月19日 星期日

Vmware player架設centos & ftp


root/root 帳密

每次重啟都需要開啟網路服務:

service  network restart

or

systemctl status network

1.網路配置 https://blog.csdn.net/qq_33182045/article/details/55669031
2.cd /etc/sysconfig/network-scripts/ 看ifcfg-enpXXX 檔案
3.vi 此檔案
4.確定ONBOOT=yes
5.vi存檔方法ese按出後,打入wq存檔。
6.shutdown -r
7.切換su 輸入帳密
8.輸入指令安裝圖形介面
$sudo  yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

9.startx 進入圖型介面


10.ctrl + alt +F1 進入圖形介面
11.ctrl+alt+F5

在VMware Player中,并不像VMware Station中提供网络编辑功能,因此如果想使用port forward功能,则需要进行手动配置。
例如在Windows操作系统中,找到vmware nat的配置文件:
C:\Documents and Settings\All Users\Application Data\VMware\vmnetnat.conf


---------------------------------------
12.安裝EPEL
yum -y install epel-release

13.安裝 VIM
yum -y install vim


14.安裝 LAMP (Linux + Apache + MySQL / MariaDB + PHP / Python / Perl)
sudo yum -y install httpd php-mysql mysql-server php70w php70w-mysql

yum -y install mysql

yum -y install mariadb-server

ls -a /usr/lib/systemd/system/mariadb.*



enable 會在作業系統啟動時,自動啟動服務
systemctl enable  mariadb

start, stop, restart 等參數操作服務,不會有訊息
systemctl start  mariadb

用 status 檢查服務狀態
systemctl status  mariadb

----------------------------------------------------------


15.開啟防火牆,讓 web (port:80, 443) 流量可以穿過 firewall
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

16.開啟防火牆,讓外部可以連接 MySQL (port:3306) 流量可以穿過 firewall
查看目前支援的 service
firewall-cmd --get-services
開啟 Mysql 3306
sudo firewall-cmd --permanent --zone=public --add-service=mysql


17.啟動 httpd 與 mysql
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mysqld
sudo systemctl enable mysqld

重啟
service httpd restart
systemctl start httpd.service

18.mysql指令
剛安裝好 MariaDB 時,建議執行一次 mysql_secure_installation 這個安全性設定工具:

sudo mysql_secure_installation

mysql -V 看版本

mysql -u root -p    第一次進來root 沒有密碼 不需要打


------------------------------------------
21.安裝PHP


安装第三方仓库
sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
搜索新版 PHP

yum search php70u
安装新版 PHP
sudo yum install php70u-common php70u-fpm php70u-cli php70u-gd php70u-mysqlnd php70u-pdo php70u-mcrypt php70u-mbstring php70u-json php70u-opcache php70u-xml -y



如果apache打開不了php編譯,可以直接使用yum命令来安装apache的mod_php模块:

yum install mod_php70w

如果没有这个安装包,可以尝试着添加一下源:

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm


提醒一下安裝完畢應該會有檔案在
/etc/httpd/conf.modules.d/10-php.conf


安裝php7 mbstring
yum install php70w-mbstring



-----------------------------------------------------------------------

19.安裝phpmyadmin  記得phpmyadmin原生不支持7  需要用composer安裝

https://jsnwork.kiiuo.com/archives/2118/centos-7-%E5%AE%89%E8%A3%9D-apachephp-7mysqlphpmyadminftpssh/



不得已才用yum
yum install phpmyadmin


19-1.看設定檔案
sudo vi /etc/httpd/conf.d/phpMyAdmin.conf

19-2.  錯誤 Apache Error: No matching DirectoryIndex (index.html) found [SOLVED]
vim /etc/httpd/conf/httpd.conf
Change:

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

to:

<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

Be sure to restart Apache:

systemctl restart httpd


如果安裝phpmyadmin出現錯誤
Error: php70u-json conflicts with php-common-5.4.16-45.el7.x8664
Error: php70u-common conflicts with php-common-5.4.16-45.el7.x86_64
使用指令
yum install --skip-broken php-soap

yum install phpMyAdmin php70u-{json,tidy,process,cli,bcmath}


錯誤LOG位置
/var/log/httpd/
-----------------------------------------------------------------------

20.Linux指令

20-1.圖型介面檔案download等資料夾在 root底下
cd /root

20-2.看ip
ip addr show


21.防火牆
21-1.看狀態
service firewalld status

21-2.關閉
service firewalld stop

★★ httpd 403 forbidden 錯誤
這個問題是因為有使用 selinux 而你新增了一些檔案或目錄到「網頁目錄 /var/www/html」,明明檔案就存在,卻無法正常從瀏覽器觀看,這不是 file permission chmod 的問題,是 selinux 檔案 http 存取權限的問題,你只需要用

sudo restorecon -R -v /var/www/html/new_folder

就OK了!


檢查 SELinux 的狀態

# getenforce

暫時關閉 SELinux
# setenforce 0

--------------------------------------------------------------------------------
FTP連入設定 
https://www.jianshu.com/p/72015bc37c74
http://www.netqna.com/2014/04/centos-64-vsftpd-ftp-server.html

步驟 1:安裝 FTP 服務器
1、 安裝 vsftpd 服務器很直接,只要在終端運行下面的命令。

yum install vsftpd
2、 安裝完成後,服務先是被禁用的,因此我們需要手動啟動,並設置在下次啟動時自動啟用:

systemctl start vsftpd
systemctl enable vsftpd
3、 接下來,為了允許從外部系統訪問 FTP 服務,我們需要打開 FTP 守護進程監聽的 21 端口:

firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload


4.啟動vsftp服務
service vsftpd start
用FileZilla即可以正常連入


-停止 Firewalld

systemctl stop firewalld

-Check the Status of Firewalld

systemctl status firewalld

-重啟
systemctl start firewalld


使用root登入:

移除ftpusers 裡面的帳號
vim /etc/vsftpd/ftpusers
找到root 前面加上#號註解


移除user_list裡面的帳號
vim /etc/vsftpd/user_list
找到root 前面加上#號註解

-重啟VSFTPd
systemctl restart vsftpd.service
--------------------------------------------------------------------------------



vmware player 14 架設centos NAT網路設定

參考這篇:http://blog.xuite.net/sphjlc062218/thinking/32175554-VMware%E6%9E%B6%E8%A8%AD%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%85%81%E8%A8%B1%E5%A4%96%E9%83%A8%E9%80%A3%E5%85%A5%E8%A7%A3%E6%B1%BA%E6%96%B9%E6%A1%88%28NAT+mode%29


在vmware player 14以上版本是沒有Virtual Network Editor
需要先安裝 vmware workstation,再從資料夾打開
C:\Program Files (x86)\VMware\VMware Workstation\vmnetcfg.exe
才能進行設定。

*勾選自動獲取dhcp






設定完畢情況下,應該可以直接在本機打入localhost:8888 進入虛擬機網頁。

以下是需要注意的事項

1.建議設定vm連接方式為nat,使用dhcp自動抓取。


2.每次重啟都需要開啟網路服務:service  network restart

3.cd /etc/sysconfig/network-scripts/
看ifcfg-enpXXX 檔案

4.啟動 httpd 與 mysql
sudo systemctl start httpd
sudo systemctl enable httpd
sudo systemctl start mysqld
sudo systemctl enable mysqld


5.如果本機可以連入,但是外網卻不行,請注意本機的防火牆設定是不是有允許port連入,win系列可以先關閉防火牆確定。


2018年8月15日 星期三

Laravel hide whoops error

在設定Laravel錯誤時候,
會設定DEBUG方便偵錯,

APP_ENV=local
APP_DEBUG=true

但是DEBUG時候再Woops錯誤時候會顯示ENV DB帳密等資訊,

可以藉由調整Laravel底下的 config/app.php來避免顯示過多的
調整以下限制會在Whoops輸出錯誤資訊時候,將對應的帳密等ENV設定顯示****

1.全部阻擋
'debug_blacklist' => [
        // '_COOKIE' => array_keys($_COOKIE),
        '_SERVER' => array_keys($_SERVER),
        '_ENV' => array_keys($_ENV),        
    ],
2.阻擋顯示指定的參數
'debug_blacklist' => [
        '_ENV' => [
            'APP_KEY',
            'DB_PASSWORD',
            'REDIS_PASSWORD',
            'MAIL_PASSWORD',
            'PUSHER_APP_KEY',
            'PUSHER_APP_SECRET',
        ],
        '_SERVER' => [
            'APP_KEY',
            'DB_PASSWORD',
            'REDIS_PASSWORD',
            'MAIL_PASSWORD',
            'PUSHER_APP_KEY',
            'PUSHER_APP_SECRET',
        ],
        '_POST' => [
            'password',
        ],
    ], 

2018年8月13日 星期一

ckeditor + ckfinder 應用在Laravel




一.ckeditor提供編輯器功能

在view的頁面加載editor  full js

<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">

<!-- 可选的Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">

<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>

<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

<script src="//cdn.ckeditor.com/4.10.0/full/ckeditor.js"></script>
<textarea id="editor1" name="editor1" cols="100" rows="30" name="update_context">

</textarea>
<script >

var editor = CKEDITOR.replace( 'editor1' );
CKFinder.setupCKEditor( editor );
</script>

二.ckfinder 
1.Laravel  下安裝 ,版本需要大於5.5 且需要extension gd等
 
composer require ckfinder/ckfinder-laravel-package
2.Run the command to download the CKFinder code.
 
php artisan ckfinder:download

3.Publish the CKFinder connector configuration and assets.
 
php artisan vendor:publish --tag=ckfinder

4.Create a directory for CKFinder files and allow for write access to it. By default CKFinder expects the files to be placed in public/userfiles (this can be altered in the configuration).
 
mkdir -m 777 public/userfiles
5.laravel config 會多出一個設定檔案
 
config/ckfinder.php
6.在view頁面引入
 
@include('ckfinder::setup')
7.上傳的圖片位置會出現在 userfiles 資料夾底下。

8.程式碼範例
 

<!-- 新 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css">

<!-- Bootstrap主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap-theme.min.css">

<!-- jQuery文件。在bootstrap.min.js 之前引入 -->
<script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>

<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

<script src="//cdn.ckeditor.com/4.10.0/full/ckeditor.js"></script>
@include('ckfinder::setup')
<textarea id="editor1" name="editor1" cols="100" rows="30" name="update_context">

</textarea>
<script >

var editor = CKEDITOR.replace( 'editor1' );
CKFinder.setupCKEditor( editor );
</script>


9.資料夾權限等級劃分
 (不是用laravel session  因為laravel session無法在config設定檔用)

在登入的controller控制器使用php session

//登入
Session::put('userDatas',$account);
$_SESSION['ckfinder_file'] = Session::get('userDatas');

//登出
session_destroy();

在  config/ckfinder.php 加入以下片段

//最前面
session_start();

if(isset($_SESSION['ckfinder_file'])) {

    $ckfinder_file = $_SESSION['ckfinder_file'];
} else {
    $ckfinder_file = "temp";
}

// Backend 調整

$config['backends']['default'] = array(

    'name'         => 'default',
    'adapter'      => 'local',
    'baseUrl'      => env('APP_URL').'userfiles/'.$ckfinder_file."/",
    'root'         => public_path('userfiles/').$ckfinder_file."/",
    'chmodFiles'   => 0777,
    'chmodFolders' => 0755,
    'filesystemEncoding' => 'UTF-8'

);

2018年8月12日 星期日

Laravel apache alias mod Rewrite 設定

有一個固定IP,但在資料夾底下有多個專案,需要重新改向路徑。

1.httpd.conf設定

 
LoadModule rewrite_module modules/mod_rewrite.so

需要拿掉註解#啟用
2.在httpd.conf 增加對應資料夾別名
 

Alias /shop55 "C:/website/www/laravel55/shop55/public"
<Directory "C:/website/www/laravel55/shop55/public">
</Directory>

Alias /white55 "C:/website/www/laravel55/white55/public"
<Directory "C:/website/www/laravel55/white55/public">
</Directory>


3.在對應的專案資料夾public下需要新增 .htaccess檔案 並寫入RewriteBase /Alias name

舉例:white55下的 C:/website/www/laravel55/white55/public

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /white55
</IfModule>

4.重啟apache

 
c:\Apache24\bin\httpd -k restart

5.額外問題,用main當路徑會有導向失敗的問題?,用mainIndex就沒問題?

2018年8月11日 星期六

jQuery File Upload 檔案上傳套件 應用在laravel 紀錄

說明: https://blueimp.github.io/jQuery-File-Upload/

在Laravel框架下,因為MVC分開原因,需要做以下設定。

1.View: 引入Js,跟html語法。
  	

jQuery File Upload Demo

Basic Plus UI version


File Upload widget with multiple file selection, drag&drop support, progress bars, validation and preview images, audio and video for jQuery.
Supports cross-domain, chunked and resumable file uploads and client-side image resizing.
Works with any server-side platform (PHP, Python, Ruby on Rails, Java, Node.js, Go etc.) that supports standard HTML form file uploads.


Add files...
 

Demo Notes

  • The maximum file size for uploads in this demo is 999 KB (default file size is unlimited).
  • Only image files (JPG, GIF, PNG) are allowed in this demo (by default there is no file type restriction).
  • Uploaded files will be deleted automatically after 5 minutes or less (demo files are stored in memory).
  • You can drag & drop files from your desktop on this webpage (see Browser support).
  • Please refer to the project website and documentation for more information.
  • Built with the Bootstrap CSS framework and Icons from Glyphicons.


2.在route需要設定any方式  (讓post,get,delete.都可以通過)

Route::any('/file','HomeController@file');



3.需要加載PHP UploadHandler class,在Laravel裡面可以用composer加載
EX:放在white/tool工具資料夾,將UploadHandler檔案加入namespace,用composer dump-autoload 更新加載。
UploadHandler檔案需要做以下調整:


namespace white\tool;

class UploadHandler

{

  //public function __construct 裡面的script_url調整位置

  'script_url' => 'https://myurl/laravel55/shop55/public/file',

}
4.在加載的js裡面有一個檔案,main.js需要調整 Url設定,用來指向route設定的方法
    $('#fileupload').fileupload({
        // Uncomment the following to send cross-domain cookies:
        //xhrFields: {withCredentials: true},
        url:'https://myurl/laravel55/shop55/public/file'
    });



5.調整php.ini設定
extension=php_gd2.dll
6.錯誤說明:
-如果跳出$等jquery錯誤,可能是沒有先加入jquery的function
-刪除檔案跳出405 not method allow,可能是route沒有設定正確 (any方法,確定route對),或參考3.4路徑確定正確
-上傳跳出Filed to resize image,需要調整5 php.ini設定
-記得檔案資料夾權限要設定允許寫入跟讀取