phprsync
Ⅰ 為什麼我用rsync從linux同步到windows的時候一直有問題
location / { root /home/www/web; index index.html portal.php index.htm index.php;rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;rewrite ^([^\.]*)/article-([0-9.
Ⅱ php-rsync 什麼用處
rsync 是同步文件的linux命令,用於備份數據什麼的,你可以找下
Ⅲ 怎樣在配置文件rsyncd.conf中添加ip
rsyncd.conf是rsync daemon的配置文件。如何為rsyncd.conf增加一份mole呢
一份簡單的配置
[browser]
uid = odin
gid = odin
path = /search/nginx/html/index_protector/resources/data/conf
hosts allow = 10.0.0.0/8 192.168.0.0/16
1
2
3
4
5
1
2
3
4
5
參數說明:
1. browser:mole名稱,對方使用rsync時需要指定
2. uid, gid: 決定了收到文件的用戶和組
3. path: 當前mole對應的目錄
4. hosts allow:允許的ip列表。上例中,我們允許了10開頭的ip段和192.168開頭的ip段通過rsync訪問我們的機器。
操作一下
假設開啟rsync daemon的機器為10.136.31.210(機器A)。我們在client機器(機器B)執行:
rsync -avzP 10.136.31.210::browser/white ./
1
1
即可將機器A上/search/nginx/html/index_protector/resources/data/conf目錄下的white文件download至機器B。
執行:
rsync -avzP q.php 10.136.31.210::browser
1
1
即可將B機器上的q.PHP upload至機器A的/search/nginx/html/index_protector/resources/data/conf目錄,其許可權為用戶和組分別為odin, odin。
-rw-r--r-- 1 odin odin 60 7月 27 15:02 q.php
1
1
只讀/只寫
如果只想給client開放單一的download(讀)/upload(寫)許可權,可以為mole加如下配置
#只讀
read only = true
1
2
1
2
#只寫
write only = true
1
2
1
2
驗證用戶名密碼
默認情況下,client端不需要使用用戶名密碼。如果希望client使用特定的用戶名,密碼,可以增加類似下面的配置:
auth users = odin
secrets file = /etc/rsyncd.passwd
1
2
1
2
參數說明:
1. auth users:用戶名列表,多用戶名由空格或逗號分隔。只有這些用戶才允許連接該mole。這里的用戶和系統用戶沒有任何關系。用戶的名和密碼以明文方式存放在」secrets file」選項指定的文件中。
2. secrets file:密碼文件,文件每行包含一個username:passwd對,passwd不要超過8個字元。文件的許可權一定要是600,否則客戶端將不能連接伺服器。一份文件示例:
odin:123
search:456
1
2
1
2
加入上述配置後,client必須指定odin用戶並輸入密碼才可以進行讀寫操作。
rsync -avzP [email protected]::browser/white ./
1
1
client端使用odin用戶下載文件,系統會要求輸入密碼,正確後才可下載white文件
Ⅳ rsync 修改文件沒有同步
在原文件上修改,快盤文件是不可能同步的,只有快盤虛擬盤里修改,快盤文件才可以同步,
Ⅳ PHPStorm同步多個伺服器
PHPStorm沒這個能力, 但你畢竟是個程序員
兩個方案:
PHPStorm同步到單台伺服器, 然後該伺服器用inotify + rsync 同步到其他伺服器.
phpstorm -> 中間伺服器 -> (目標伺服器1, 2, ,3, 4, 5)
PHPstorm設置FileWatch 然後觸發本地腳本自行上傳到多個伺服器. 比如用PHP寫個ftp上傳腳本, 參數是文件路徑.
Ⅵ 大家php mysql多的話是用什麼備份工具的
下面提供兩種方法,僅供研究使用。
第1種方法:
復制代碼 代碼如下:
<?php
$host="localhost";
$user="root";
$password="";
$dbname="dbname";
mysql_connect($host,$user,$password);
mysql_select_db($dbname);
$mysql= "set names utf8;";
mysql_query($mysql);
$q1=mysql_query("show tables");
while($t=mysql_fetch_array($q1)){
$table=$t[0];
$q2=mysql_query("show create table `$table`");$sql=mysql_fetch_array($q2);
$mysql.=$sql['Create Table'].";\n";
$q3=mysql_query("select * from `$table`");while($data=mysql_fetch_assoc($q3)){
$keys=array_keys($data);
$keys=array_map('addslashes',$keys);
$keys=join('`,`',$keys);
$keys="`".$keys."`";
$vals=array_values($data);
$vals=array_map('addslashes',$vals);
$vals=join("','",$vals);
$vals="'".$vals."'";
$mysql.="insert into `$table`($keys) values($vals);\n";}
$mysql.="\n";
}
$filename=$dbname.date('Ymj').".sql";
$fp = fopen($filename,'w');
fputs($fp,$mysql);
fclose($fp);
echo "數據備份成功,生成備份文件".$filename;?>
第2種方法:
復制代碼 代碼如下:
<?php
$host="localhost";
$user="root";
$password="";
$dbname="dbname";
backup_tables($host,$user,$password,$dbname);/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*'){
$link = mysql_connect($host,$user,$pass);mysql_select_db($name,$link);
//get all of the tables
if($tables == '*')
{
$tables = array();
$result = mysql_query('SHOW TABLES');
while($row = mysql_fetch_row($result))
{
$tables[] = $row[0];
}
}
else
{
$tables = is_array($tables) ? $tables : explode(',',$tables);}
$return = '';
//cycle through
foreach($tables as $table)
{
$result = mysql_query('SELECT * FROM '.$table);$num_fields = mysql_num_fields($result);
$return.= 'DROP TABLE '.$table.';';
$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));$return.= "\n\n".$row2[1].";\n\n";
for ($i = 0; $i < $num_fields; $i++)
{
while($row = mysql_fetch_row($result))
{
$return.= 'INSERT INTO '.$table.' VALUES(';for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}
//save file
$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');fwrite($handle,$return);
fclose($handle);
}
?>
Ⅶ php內網向外網發送圖片,要求在內網的伺服器上完成
映射埠後,寫一個策略,只允許XX.XX.XX.XX地址訪問。
還有一個辦法, 內網PHP頁面可以完成 (內網使用FTP方式傳輸到外網伺服器上,FTP和操作資料庫都可以在內網完成,但必須要配置好許可權),PHP操作資料庫要注意漏洞和優化。
Ⅷ php網站運維主要做什麼
運維工程師幹些什麼
總結兩句話
1、 保障業務長期穩定運行(如網站伺服器、游戲伺服器等等)。
2、 保障數據安全可靠(如用戶名密碼、游戲數據、博客文章、交易數據等等)。
由這兩句話推演運維工程師要學些什麼
一、保障業務長期穩定運行
出一點點差錯,用戶就要投訴了。
1、業務跑在什麼上面?
網站伺服器一般是apache,nginx,tomcat等。但是真正跑通流程還需要Mysql資料庫來存儲用戶密碼及其它。很多程序都要php的解析,所以LNMP、LAMP(即nginx、apache、mysql、php)環境部署是必須掌握的技能。
2、業務出了問題怎麼及時知道?
這就需要監控軟體來郵件或簡訊來通知你,常用的有zabbix,nagios等。報警發郵件,也得一個郵件程序呀,sendmail或postfix。
3、在家裡收到報警,但伺服器是內網IP,怎麼也得解決問題吧?
在公司搭建openvpn或pptp或openswan,在家裡通過VPN撥入內網,24小時解決問題…唉,半夜爬起來解決問題也沒工資。
二、保障數據安全可靠
出一點點差錯,領導要找你喝茶了。
1、有時需要手動改資料庫內容?
所以要會基本的Mysql資料庫增刪查改命令。
2、萬一資料庫伺服器硬體壞了怎麼辦?
需要有個備庫以備不時之需,所以需要Mysql主從復制。
3、 資料庫要還原怎麼辦?
所以需要在crond中定期全備Mysql數據,以便還原使用。如果要還原到指定時間點,還要學會Mysql增量備份與恢復。
4、 如果是用戶上傳的圖片或文件伺服器壞了怎麼辦?
定時備份可能還不夠,需要使用rsync加inotify來實時備份。以便任一時刻主伺服器壞掉,也能保障所有圖片有備份可以用來恢復。
5、小心黑客,要增加伺服器安全性?
ssh輕易不能讓外人訪問,那麼就設置只允許公司的IP或跳板機IP訪問,這些都通過iptables來控制。
三、大性能
小公司總有一天會牛逼起來的,實在牛不起來咱也可以跳到大公司。
1、越來越多的用戶來訪問我們的網站,一台web伺服器抗不住了怎麼辦?
那就需要多台web伺服器來負擔,但多台伺服器之間怎麼進行負載均衡呢,這就需要用到nginx反向代理或LVS+keepalived或haproxy+heartbeat了。
2、用戶注冊發表的文章與評論太多,一台資料庫抗不住了怎麼辦?
資料庫壓力分為讀和寫,如果寫抗不住,需要進行分表分庫到多個伺服器上。如果是讀壓力不夠了,可以使用mysql-proxy讀寫分離,來分擔讀的壓力。更簡單方便的方法,把資料庫里的內容放到內存上,這就用上memcache或redis了。
3、N多用戶上傳下載文件,磁碟抗不住了怎麼辦?
把多塊磁碟做成raid,或者使用分布式存儲文件系統如MFS,GlusterFS來提高磁碟的讀寫能力。
4、網站上好多圖片,總有用戶反應網站載入太慢,怎麼辦?
這時可以把網站上的圖片通過squid或varnish緩存到網站前端,盡可能的增加訪問速度,當然,最好是購買商業的CDN加速。
5、運營商是個大難題,他們之間的帶寬好像很小,聯通IP訪問我電信網站怎麼就這么慢呢?
這時可以使用bind自建一個DNS伺服器,把網站的DNS記錄指向自建DNS伺服器上,配置好解析規則,以後聯通IP解析到聯通網站上,電信IP解析到電信網站上,體驗就會好很多啦。
四、自動化
終極目標:跑死機器,閑死人。
1、 公司新買100台伺服器,公司竟然就1個移動光碟機,這裝系統得到什麼時候?
使用kickstart或cobbler來網路遠程自動安裝系統吧。
2、 每次裝完機要優化很多內容,什麼文件描述符、埠、軟體安裝啊,手動操作不累死去?
趕緊學會shell,將解放非常多的工作量。
3、系統裝完後登陸要輸入密碼,這么多台啊?
使用expect吧,自動讀取提示來輸入密碼,並執行命令。
4、要批量把新代碼發布到線上伺服器,怎麼辦?
使用saltstack或puppet或ansible吧,絕對爽歪歪。
五、其他
1、搭整套測試環境需要5台伺服器,但公司窮的只有一台空閑伺服器?
學會xen或kvm或docker吧,虛擬出多台伺服器,就能解決資源問題了。特別是docker,強烈推薦,以後某個研發人員讓你部署一套新環境,分分鍾幫他解決。
2、研發人員的代碼控制,許可權控制,總要運維人員管呀?
svn或git,這個是肯定要有的。
結尾:
現在我們在回過頭來思考,運維工程師平時幹些啥呢?
1、 隨時解決報警故障。
2、 業務程序更新。
3、 編寫一些腳本,監控或完成其他可自動完成功能。
4、 運維架構完善,部署一些用起來更方便更可靠或性能更好的開源工具以及制定運維流程規范。
5、 打雜,如調交換機,裝系統,部署新環境等。
Ⅸ php圖片可以等比例的縮放嗎
可以。
等比例縮放的方法是:
1、載入選區--自由變換。如下圖:
2、按住shift+alt鍵,使用滑鼠調整大小,這種情況下,選區會按照等比例的方法進行縮放的。
Ⅹ php 如何將上傳的圖片按比例縮放並存在伺服器里
//接收上傳的文件
foreach($_FILESas$file)
{
$tempFileName=$file['tmp_name'];//上傳文件的臨時路徑
}
/把圖片移動到伺服器制定路徑
$img='/var/www/html/picture/test.jpg';
move_uploaded_file($tempFileName,$img);
//縮放比例
$ratio=0.5;
//修改尺寸至於各個函數是幹嘛的,google一下吧
$imagedata=getimagesize($img);
$olgWidth=$imagedata[0];
$oldHeight=$imagedata[1];
$newWidth=$olgWidth*$ratio;
$newHeight=$oldHeight*$ratio;
$image=imagecreatefromjpeg($img);
$thumb=imagecreatetruecolor($newWidth,$newHeight);
imageresized($thumb,$image,0,0,0,0,$newWidth,$newHeight,$olgWidth,$oldHeight);
imagejpeg($thumb,$img);
imagedestroy($thumb);
imagedestroy($image);