helloworld

目前分類:系統管理 (180)

瀏覽方式: 標題列表 簡短摘要

curl -G --data-urlencode "a=1 1 1" --data-urlencode "b=2 2 2"  https://servername/test.php

man curl

       -G, --get
              When  used,  this  option  will make all data specified with -d,
              --data, --data-binary or --data-urlencode to be used in an  HTTP
              GET  request instead of the POST request that otherwise would be
              used. The data will be appended to the URL with a '?' separator.

              If  used  in  combination with -I, the POST data will instead be
              appended to the URL with a HEAD request.

              If this option is used several times,  only  the  first  one  is
              used.  This is because undoing a GET doesn't make sense, but you
              should then instead enforce the alternative method you prefer.

       --data-urlencode <data>
              (HTTP) This posts data, similar to the other --data options with
              the exception that this performs URL-encoding. (Added in 7.18.0)

              To  be  CGI-compliant,  the <data> part should begin with a name
              followed by a separator and a content specification. The  <data>
              part can be passed to curl using one of the following syntaxes:

              content
                     This  will make curl URL-encode the content and pass that
                     on. Just be careful so that the content  doesn't  contain
                     any  =  or  @  symbols, as that will then make the syntax
                     match one of the other cases below!

              =content
                     This will make curl URL-encode the content and pass  that
                     on. The preceding = symbol is not included in the data.

              name=content
                     This  will make curl URL-encode the content part and pass
                     that on. Note that the name part is expected to  be  URL-
                     encoded already.

              @filename
                     This  will  make  curl  load  data  from  the  given file
                     (including any newlines), URL-encode that data  and  pass
                     it on in the POST.

              name@filename
                     This  will  make  curl  load  data  from  the  given file
                     (including any newlines), URL-encode that data  and  pass
                     it  on  in  the  POST.  The  name part gets an equal sign
                     appended, resulting in name=urlencoded-file-content. Note
                     that the name is expected to be URL-encoded already.
 

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

從varnish 4.x 以後設定檔有大幅度的改變
如果不想一行一行debug 的話,可以使用這個方便的工具
https://github.com/fgsch/varnish3to4

節錄文章的內容

Script to assist migrating a VCL file from Varnish 3 to 4.x. [1]

Suggested usage

 $ varnish3to4 -o <filename>.v4 <filename>
 $ diff -u <filename> <filename>.v4

To limit changes for Varnish 4.0:

 $ varnish3to4 -v 4.0 -o <filename>.v4 <filename>
 $ diff -u <filename> <filename>.v4

Currently understands

V3 V4
{bereq,req}.backend.healthy std.healthy({bereq.backend,req.backend_hint})
{bereq,req}.request {bereq,req}.method
bereq.* in vcl_pass and vcl_miss req.*
{beresp,obj,resp}.response {beresp,obj,resp}.reason
beresp.storage beresp.storage_hint
{client,server}.port std.port({client,server}.ip)
error code response return (synth(code, response))
obj.hits - writing to -
obj.* in vcl_synth resp.*
obj.lastuse -
remove unset
req.backend req.backend_hint
req.grace -
req.* in vcl_backend_response bereq.*
return (hash) in vcl_hash return (lookup)
return (hit_for_pass) set beresp.uncacheable = true;
return (deliver);
return (lookup) in vcl_recv return (hash)
return (pass) in vcl_pass return (fetch)
return (restart) in vcl_fetch return (retry)
std.real2integer(..) [2] std.real2integer(.., n)
std.time2integer(..) [2] std.time2integer(.., n)
std.time2real(..) [2] std.time2real(.., n.n)
synthetic .. synthetic(..)
vcl_error vcl_backend_error and vcl_synth
vcl_fetch vcl_backend_response

Limited coverage

V3 V4
purge -

Won't be implemented

V3 V4
 - vcl 4.0
 - import directors
new xx = directors.yy();
xx.add_backend(ss);
set req.backend_hint = xx.backend();

Add imports resulting from changes in V4, complete purge handling and any other changes missing from this document.

N/A for 3.0 (for documentation only)

V4.0 V4.1
return (fetch) in vcl_hit [3] return (miss)

Notes

  1. Comments in VCL are treated as code and as such references within will be rewritten.
  2. Required in 4.1 and above.
  3. Optional in 4.1. Required in 5.0 and above.
文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

sudo yum install pygpgme yum-utils

vi /etc/yum.repos.d/varnishcache_varnish5.repo

[varnishcache_varnish5]
name=varnishcache_varnish5
baseurl=https://packagecloud.io/varnishcache/varnish5/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish5-source]
name=varnishcache_varnish5-source
baseurl=https://packagecloud.io/varnishcache/varnish5/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish5/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

存檔離開

sudo yum install varnish

參考網址: https://packagecloud.io/varnishcache/varnish5/install#manual-rpm

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

以往如果要修改FreeBSD 除了修改 /etc/rc.conf 之外
還有一個好用的命令 sysinstall

但新版FreeBSD 已經用 bsdconfig 及 bsdinstall 取代了

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

cd /etc/nginx/ssl
cat STAR_pass_tw.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > pass.tw.bundle.crt


cd /etc/nginx/conf.d
vi pass.tw.conf
  server {
    listen 443 ssl;
    server_name pass.tw
    ssl on;
    ssl_certificate /etc/nginx/ssl/pass.tw.bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/pass.tw.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers   HIGH:!aNULL:!MD5;

    # side note: only use TLS since SSLv2 and SSLv3 have had recent vulnerabilities
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    location / {
      proxy_pass http://127.0.0.1:80;
    }
  }


/etc/init.d/nginx restart
 

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

執行以下指令立即生效
export http_proxy="http://your-proxy-server:3128"

如果希望未來登入後都可以套用proxy
可以新增進 .bash_profile
 

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

$ echo 123 | mail -s test 'test@myip.pass.tw'
-bash: mail: command not found

$ which mail
/usr/bin/which: no mail in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbinin:/sbin)

解決方式
# yum -y install mailx

 

Dependencies Resolved

================================================================================
 Package         Arch             Version                  Repository      Size
================================================================================
Installing:
 mailx           x86_64           12.4-8.el6_6             base           235 k

Transaction Summary
================================================================================
Install       1 Package(s)
 

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

新版的CentOS 網路代號不像之前的 eth0 , eth1 ....
一開始可能會不習慣,但時勢所趨,還是早點習慣的好

早期的centos / redhat 版本可以透過setup 指令來修改網路的設定
但centos 已經沒有這個指令了
除了一樣可以透過手動編輯  /etc/sysconfig/network-scripts/ifcfg-xxx 
也可以改用 nmtui 設定,透過互動的設定達成



undefined
CentOS 7 伺服器架設與管理實務

作者: 酆士昌  
出版社:旗標  
出版日期:2017/06/23
語言:繁體中文
定價:490元

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

apache http/https 使用同一個 VirtualHost

理論上apache 2.2 無法直接達到這個需求
但是可以利用 include 的功能
例如
<VirtualHost *:80>
   ServerAlias test.pass.tw
   include /usr/local/etc/apache22/extra/http.pass.tw.conf
</VirtualHost>

<VirtualHost *:443>
   SSLEngine on
   ServerAlias test.pass.tw
   include /usr/local/etc/apache22/extra/http.pass.tw.conf
   include /usr/local/etc/apache22/extra/https.pass.tw.conf

</VirtualHost>

但還是要注意
1. ServerAlias 要寫在<VirtualHost> 裡面,不可以寫在include file中
1. SSLEngine on 要寫在<VirtualHost> 裡面,不可以寫在include file中

undefined
WordPress站長練功秘笈:網站客製化、佈景主題與外掛開發的16堂課

出版社:博碩  
出版日期:2017/04/28
語言:繁體中文
定價:580元

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

#!/bin/sh

#自動產生亂數並除以10取餘數,所以就可以得出 0~9 的亂數
echo $(($RANDOM % 10))

#也可以加一個整數,取某個區間的亂數
echo $((5+$RANDOM % 10))

undefined
Linux Shell程式設計實力養成:225個實務關鍵技巧徹底詳解(附DVD)(第二版)

作者: 酆士昌  
出版社:博碩  
出版日期:2016/07/01
語言:繁體中文
定價:490元

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

AH00526: Syntax error on line 539 of /usr/local/etc/apache24/httpd.conf:
Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration

解決方式
vi /usr/local/etc/apache24/httpd.conf

以下兩行取消註解
LoadModule proxy_module libexec/apache24/mod_proxy.so
LoadModule proxy_http_module libexec/apache24/mod_proxy_http.so

重啟apache
apachectl restart

undefined
Learning HTTP/2: A Practical Guide for Beginners

作者: Ludin, Stephen/ Garza, Javier
原文出版社:Oreilly & Associates Inc
出版日期:2017/06/02
語言:英文
 

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

如果經常在修改git內容
每次的pull,  push 都輸入帳號密碼是非常煩人的
可以利用以下指令來記憶帳號密碼
git config --global credential.helper 'cache --timeout 86400' 
以上例子為 86400 秒,也就是一天

如果要永久儲存
可以輸入
git config --global credential.helper 'cache --timeout 86400' 

但會把帳號密碼明碼寫在 ~/.git-credentials
就看個人習慣

undefined
Git 團隊使用手冊 ( Git for Teams )

作者: Emma Jane Hogbin Westby  
譯者: 莊弘祥
出版社:歐萊禮  
出版日期:2016/12/30
語言:繁體中文
定價:580元

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

redis 跟 memcached 一樣,是一套存儲在記憶體中的key-value nosql 資料庫
預設的port 是 tcp : 6379
常用在網站的cache, 目的在不用過於頻繁的直接讀寫資料庫

在 FreeBSD 上面安裝很簡單
# cd /usr/ports/databases/redis
# make install clean

===>  CONFIGURATION NOTE:

      To setup "redis" you need to edit the configuration file:
      /usr/local/etc/redis.conf

      To run redis from startup, add redis_enable="YES"
      in your /etc/rc.conf.

===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/bin/redis-sentinel
/usr/local/bin/redis-cli
/usr/local/bin/redis-server
/usr/local/bin/redis-check-rdb
/usr/local/bin/redis-benchmark

      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/sentinel
/usr/local/etc/rc.d/redis

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage:
http://redis.io/

啟動 redis 
# /usr/local/etc/rc.d/redis onestart

開機時自動啟用
# vi /etc/rc.conf
redis_enable="YES"

檢查是否正常啟動
# ps uax | grep redis
redis    18947   0.2  0.1   24244   4040  -  Ss    3:51PM    0:00.01 redis-server: /usr/local/bin/redis-server 127.0.0.1:6379 (redis
root     18949   0.0  0.0   18832   2052  1  R+    3:51PM    0:00.00 grep redis

# telnet 0 6379
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
info
$2120
# Server
redis_version:3.2.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:66485aa7a7c124f8
redis_mode:standalone
os:FreeBSD 10.3-RELEASE amd64
arch_bits:64
multiplexing_api:kqueue
gcc_version:4.2.1
process_id:18947
run_id:018b4976dccd8701fac6727da769ebc8df8b2c68
tcp_port:6379
uptime_in_seconds:17
uptime_in_days:0
hz:10
lru_clock:15227282
executable:/usr/local/bin/redis-server
config_file:/usr/local/etc/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1084112
used_memory_human:1.03M
used_memory_rss:1050368
used_memory_rss_human:1.00M
used_memory_peak:1084112
used_memory_peak_human:1.03M
total_system_memory:34389189192
total_system_memory_human:32.03G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:0.97
mem_allocator:libc

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1508399489
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:1
total_commands_processed:0
instantaneous_ops_per_sec:0
total_net_input_bytes:6
total_net_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:0.01
used_cpu_user:0.00
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace

undefined
奠定大數據的基石:NoSQL資料庫技術(第2版)

作者: 皮雄軍  
出版社:佳魁資訊  
出版日期:2016/07/29
語言:繁體中文
定價:560元

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

假設一個跨國企業網站
讓來自台灣的訪客可以造訪台灣機房
來自日本的訪客可以造訪日本機房
其餘的訪客造訪另一個機房

cd /etc
wget http://geoip.site/download/MaxMind/GeoIP.acl

vi named.conf

include "/etc/GeoIP.acl";
view "TW" {
  match-clients { TW; };
  zone "TW-myip.pass.tw" {
    type master;
    file "JP.myip.pass.tw.zone";
  };
};

view "JP" {
  match-clients { JP; };
  zone "JP-myip.pass.tw" {
    type master;
    file "JP.myip.pass.tw.zone";
  };
};

view "ANY" {
  match-clients { any; };
  zone "ANY-myip.pass.tw" {
    type master;
    file "JP.myip.pass.tw.zone";
  };
};

最後重啟named 即可
 

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

可以先測試一下自己有沒有把網站資訊不小心洩漏出來
http://your-web-site/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

如何關閉
vi php.ini
expose_php = On
修改成
expose_php = Off

重啟apache 或是 php-fpm 即可

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

email 的傳遞有點像現實生活種的郵差先生在寄信
分為信封寄件者和信紙寄件者
envelope-from 顧名思義,就是寫在信封或是包裹上面的寄件者
所以是給郵差和MTA 看的

信紙寄件者,通常就是我們常看到信件的最下面寫著 XXX 敬上 .. 之類的稱呼
是給收件者看的,通常outlook 及其他MUA顯示的是這個欄位

php mail() 
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
通常我們都會把From: 寫在第四個變數
但是這只是修改信紙寄件者
郵差先生看到的寄件者還是系統自動幫你帶的,不一定會跟From 會一樣
往往這樣可能會造成一些退信的狀況

建議From: 和 envelope from 都可以改成一致
避免不必要的困擾

example:
<?php
mail('ethan@a.com','Hello World!','Good morning!','From: service@b.com','-f service@b.com');
?>

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

下載  Rufus
https://rufus.akeo.ie/?locale=zh_TW

因為 Rufus 不支援 FreeBSD iso檔
所以我們選img檔案
以FreeBSD 11.1 為例
檔名為 FreeBSD-11.1-RELEASE-amd64-memstick.img

選擇剛剛下載的img檔,並下拉選擇DD映像


最後執行即可

undefined
【Ainmax】64GB 高速隨身碟(USB3.0)

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

如果拿到一顆硬碟開心的要把它重新分割
但是始終保留一個 EFI 系統磁碟分割區 怎麼砍也砍不掉
這時候可以
用系統管理員身分執行cmd
輸入diskpart
 

C:\Windows\system32>diskpart

Microsoft DiskPart 版本 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
在電腦: PC-helloworld

 

 

列出接在電腦的硬碟

 

DISKPART> list disk

  磁碟 ###  狀態           大小     可用     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  磁碟 0    連線              489 GB    23 GB
  磁碟 1    連線              476 GB   476 GB        *


選擇要清理的硬碟
 

DISKPART> select disk 1

磁碟 1 是所選擇的磁碟。

DISKPART> list disk

  磁碟 ###  狀態           大小     可用     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  磁碟 0    連線              489 GB    23 GB
* 磁碟 1    連線              476 GB   476 GB        *


 確定真的不留戀的話,輸入clean
 

DISKPART> clean

DiskPart 成功地清理了磁碟。

DISKPART>

回頭看windows 的磁碟管理,可以看到磁碟機已經乾乾淨淨啦



undefined
【TOSHIBA】4TB 3.5吋 7200轉硬碟 三年保固(MD04ACA400)

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

安裝完drupal 8 之後,系統會需要你做一些簡單的設定
如果在需求檢查步驟出現以下的警告訊息
Your server is capable of using clean URLs, but it is not enabled. Using clean URLs gives an improved user experience and is recommended


表示你的 drupal 目錄無法使用rewrite 功能
如果是apache請確認以下設定
LoadModule rewrite_module libexec/apache24/mod_rewrite.so

Alias /drupal "/usr/local/www/drupal8"
<Directory "/usr/local/www/drupal8">
    Options  FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

修改完後重新啟動apache
apachectl reload


undefined
Drupal的使用 中文版 第二版
作者: (美)拜倫
出版社:中國電力出版社
出版日期:2014/03/01

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()

預設的狀況下,varnish 下面的backend , 諸如 apache 或是 nginx ... 等
接到 http 的 請求時,client ip 都是varnish 的ip
如此一下,程式無法針對來源做出判斷,geoip 也無法知道來源是屬於哪個國家
解決這個問題步驟如下

編輯 varnish/default.vcl
sub vcl_recv {
###
    if (req.restarts == 0) {
            if (req.http.x-forwarded-for) {
                    set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
            } else {
                    set req.http.X-Forwarded-For = client.ip;
            }
    }
###
}

修改backend log format 設定,以apache為例

#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

即可在access_log 中看到實際使用者來源ip
 

文章標籤

helloworld 發表在 痞客邦 PIXNET 留言(0) 人氣()