• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            無法遞歸的五點半

            for_each(day.begin(),day.end(),bind2nd(Add(),me))

            導航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統計

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            文章分類

            相冊

            收藏夾

            C++

            Unix/Linux

            個人主頁

            其他

            軟件工程

            網絡管理

            綜合

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            2010年12月25日 #

            OpenLDAP啟動與配置

            啟動slapd

            不論是包安裝還是編譯安裝的OpenLDAP服務,啟動LDAP服務通常使用類似這樣的方式運行:
             /usr/sbin/slapd -h ldap:/// ldapi:/// -g openldap -u openldap -/etc/ldap/slapd.d/



             如果沒有任何的配置是否可以啟動slapd呢?

            $mkdir ldap_slapd.d
            $
            /usr/sbin/slapd -65535 -h ldap://localhost:3890 -F ldap_slapd.d

            系統提示沒有配置目錄中沒有 cn=config.ldif 文件

             最簡單的配置

            現在在配置目錄中寫一個最簡單的配置:
            $cat ldap_slapd.d/cn=config.ldif
            dn
            : cn=config
            objectClass
            : olcGlobal
            cn
            : config
            $
            /usr/sbin/slapd -65535 -h ldap://localhost:3890 -F ldap_slapd.d

             成功啟動!在ldap_slapd.d下生成了cn=config 目錄并且將基本的schema自動的導入了,從運行日志中也可以看到這些。
              通過這個例子可以看到slapd運行的過程,但這樣一個沒有實際Backend數據庫的slapd實例是沒有實際意義的。

             配置

            slapd的配置就是運行的關鍵,在新版OpenLDAP中,LDAP配置不再是slapd.conf,而是一系列的配置文件,放置在一個配置目錄下。LDAP將這個目錄看成一種Backend,也就是config backend。配置目錄中是若干的ldif文件,然后通過子目錄的方式表現樹形結構,以文件名表示配置節點的名稱。

             slapd.d 目錄

            LDAP的配置Backend包含3個內容:Schema、Backend、Database,都以ldif方式直接寫在配置文件中。backend和database配置相對較小可直接編輯,而schema比較復雜,如有外部定義的schema更是麻煩,如果直接編輯很麻煩也容易出錯。好在可以使用slaptest將舊式的.conf文件生成新配置。
            實際上,slaptest的功能還不止這個,它還負責創建基本的數據庫文件。最新版的OpenLDAP在安裝后還是使用slapd.conf作為配置文件,然后在運行前創建配置Backend。

             slapd.conf 

            slapd.conf由2個部分,先include schema文件,然后配置database。要注意后面database內容的語法是依賴core.schema的,所以沒有 include core.schema,后面的內容是不符合語法的。
            include /etc/ldap/schema/core.schema
            include /etc/ldap/schema/cosine.schema
            include /etc/ldap/schema/nis.schema
            include /etc/ldap/schema/inetorgperson.schema
            include /user/defined/special.schema


            database        bdb
            suffix          
            "dc=example,dc=com"
            rootdn          
            "cn=admin,dc=example,dc=com"
            rootpw          secret
            directory       /ldap/data/dir
            index   objectClass     eq

             slaptest

            運行:
            $sudo /usr/bin/slaptest -f schema.conf -/etc/ldap/slapd.d

            slaptest要完成2個工作:將按schema生成schema.ldif配置,然后在指定的目錄下初始化bdb文件。

            posted @ 2010-12-25 17:07 五點半 閱讀(2524) | 評論 (0)編輯 收藏

            2010年2月20日 #

            cron配置

            那天用Cron配置了一個MySQL數據庫自動備份。幾天下來才發現沒有運行。瞎搞了半天,沒有結果。最后在需要執行的命令下加個 > /tmp/b.log 2>&1。一看錯誤日志。哦,原來找cron不知道mysqldump在哪兒?;腥淮笪?。
            cron在運行的時候可能PATH變量沒有那么多,所以好多命令需要在腳本中加入完整的路徑。其實我已經是第2次遇到這個問題了!真是不長記性啊,所以一定要記下?。?/div>
            還有怎么沒有一開始就把日志輸出。UNIX管理員不看日志,看什么呢?這兩天過年肥肉吃多了說。日志!切記?。?/div>

            posted @ 2010-02-20 15:30 五點半 閱讀(398) | 評論 (0)編輯 收藏

            2009年12月2日 #

            OpenSSH下SFTP的配置

            OpenSSH網站上那只SSH刺河豚將FTP埋葬

            有關sftp有人推薦www.ssh.com的實現,不過我更喜歡開源的產品,特別是Open系列的安全產品。

            需求

            首先我們明確我們的目標,我們是希望通過SFTP代替FTP,需求是這樣的:
            1. 這些用戶只能通過SFT訪問服務器
            2. 用戶要鎖定在相應的目錄下
            我想通常的思路是這樣的:
            1. 打開OpenSSH的SFTP
            2. 將這些用戶設置在一個
            3. 讓OpenSSH識別這個組,只允許這些用戶使用SFTP
            4. 最后系統要自動的將用戶chroot在用戶目錄下

            配置

            我開始都覺得是不是要求太高,不過OpenSSH可以解決以上所有問題。話說回來,如果不能解決怎么可以把FTP埋葬呢。

            SSHD_CONFIG

            sshd通常是打開了sftp的,不過我們應該使用internal-sftp在sshd_conf中作如下配置:
             1 # Subsystem sftp /usr/lib/openssh/sftp-server # 注釋掉
             2 Subsystem sftp internal-sftp
             3 
             4 ##
             5 Match group sftponly
             6     ChrootDirectory /sftphome/%u
             7     X11Forwarding no
             8     AllowTcpForwarding no
             9     ForceCommand internal-sftp
            10 
            解釋一下:當sshd匹配到sftponly組中的用戶,就會強制使用sftp(ForceCommand的作用),并將用戶限定在/sftphome/下相應用戶的目錄下(ChrootDirectory的作用)。

            創建用戶

            我們需要創建相應的用戶了:

            #useradd -G sftponly -d /sftphome/sftpuser  -s /usr/sbin/nologin sftpuser
            #tail /etc/password

            sftpuser:x:
            1000:1000::/sftphome/sftpuser:/usr/sbin/nologin
            #passwd sftpuser
            你可以在其他機器上用sftp登錄試試了。你的連接將會被reset!去看看sshd的日志,你會發現pam.d的認證是通過了的,但是chroot失敗了。按網絡上的說法
            #chown root /sftphome/sftpuser
            #chmod 
            755 /sftphome/sftpuser
            再試,可以登錄。新的問題是不能在此目錄下寫入。對的嘛,755對于組用戶是不能寫啊。再試試775,剛才的問題就來又了,chroot失敗。

            以上內容網絡上一google一大把。

            可以登錄不能寫這個問題真讓人困惑!后來我想可能應該這樣理解:既然要chroot,那個目錄不屬于root肯定是不行的(說錯了,猛拍磚)。那我們就不能為用戶提供完整的sftp服務了嗎?我想可以這樣
            #mkdir /sftphome/sftpuser/space
            #chown sftpuser.sftpuser /sftphome/sftpuser/space
            由系統管理員為sftp用戶提供一個目錄,并設置其用戶屬性,用戶在這個目錄下用戶是可寫的。當然可以創建很多個。

            這樣算不算解決這個問題呢?暫且如此吧。如果您有好方法,一定告知哦。


            posted @ 2009-12-02 21:04 五點半 閱讀(5382) | 評論 (3)編輯 收藏

            2009年8月14日 #

            應用中的MySQL服務器部署Replication

            本文記錄如何給一臺應用中的MySQL服務器部署Replication。

            安裝環境

            現有MySQL
            現有MySQL服務器的特點:
            1. 沒有專門為Replication環境配置
            2. MySQL為編譯安裝
            3. MySQL處于運行狀態,不可長時間停機
            目的

            將現有服務器作為Master服務器,配置并運行一臺新的MySQL服務器作為Slave服務器

            準備
            1. 服務器硬件
            2. 現有主服務器的安裝代碼包(mysql-5.x.xxx.tar.gz)

            主服務器的配置和數據準備

            Master服務器的必須配置
            要使用Replication必須將Master的binlog打開,并設置服務器ID。最簡單的配置如下:
            log-bin     =  mysql-bin
            server-id = 1
            當然關于MySQL Bin Log的配置還有很多設置,可以參考相關手冊
            數據備份
            現在需要將Master的數據備份出來要注意的是要記住 備份點的binlog日志和postion 。Master數據備份的方式可以是停機冷備份,如果安裝了LVM可以使用LVM的Snapshot。下面使用mysqldump 導出數據。在導出數據之前我們應該Flush表,并鎖住表,比允許數據寫入。
            mysql> FLUASH TABLES WITH READ LOCK;
            mysql> SHOW MASTER STATUS;
            +------------------+----------+--------------+------------------+
            | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
            +------------------+----------+--------------+------------------+
            | mysql-bin.000157 | 18757860 | | |
            +------------------+----------+--------------+------------------+
            1 row in set (0.00 sec)
            使用mysqldump導出數據
            mysql:~# mysqldump -uroot -p --all-databases > dump.sql
            解鎖
            mysql> UNLOCK TABLES;
            安裝參數的提取
            需要在Slave主機編譯安裝MySQL要了解Master安裝時的編譯參數,可以通過如下方式獲得:
            mysql:~# cat /usr/local/mysql/bin/mysqlbug | grep CONFIGURE
            repl用戶創建
            在Master服務器中創建repl用戶,用于在Slave 數據庫中訪問Master數據
            mysql> GREANT REPLICATION SLAVE ON *.* to 'repl'@'IP.SLAVE.SERVER' identified by 'repl_passwd';

            Slave服務器的安裝

            MySQL的安裝
            • 按前面提取的configure參數對源代碼進行編譯(./configure; make; make install;)
            • 安裝初始化數據庫:
            #mysql_install_db --datadir=/data --user=mysql
            • 參照@{mysql-src}/support-files/目錄中my.cnf文件在/etc/下創建@my.cnf
            • 參照@{mysql-src}/support-files/mysql.server@文件在@/etc/init.d/下配置@mysqldb
            • 可嘗試啟動mysql。 /etc/init.d/mysqldb start
            數據的導入
            mysql# mysql -uroot -p < dump.sql

            如果導入出現超出最大數據包錯誤可以嘗試修改my.cnf中的max_allow_packet

            在my.cnf中配置slave
            在my.cnf中配置:
            server-id       =  2
            master-host = master_ip
            master-user = repl
            master-password = repl_passwd
            在Slave服務器上啟動Slave
            mysql> STOP SLAVE;
            mysql> CHANGE MASTER TO
            MASTER_HOST='masterip',
             MASTER_USER='repl',
             MASTER_PASSWORD='repl_passwd',
             MASTER_LOG_FILE='mysql-bin.000157',
            MASTER_LOG_POS=18757860 ;
            mysql> START SLAVE;

            posted @ 2009-08-14 22:39 五點半 閱讀(337) | 評論 (0)編輯 收藏

            2009年3月20日 #

            Hatta Wiki試用

            大輝推薦了一個網站www.wikimatrix.org。去看了看雖然一直用Wiki進行一些文檔的協作,但那么多Wiki還是第一次哈。于是想找一個用Python開發的wiki(wikimatrix上面有一個Wizard可以幫助您找到想要的)。除了老牌的plone,著名的MoinMoin,還發現了一個叫hatta的。安裝了一下,真還不錯。
            hatta的實現就一個python文件,功能簡單,沒有權限管理,沒有用戶管理,作者認為Wiki就是要歡迎天南地北的兄弟都可以修改。hatta的使用簡單,按照語法編輯,然后提交了事。中文化也非常簡單,Wiki內容本身就可以輸入中文,如果覺得頁面也應該是中文的也很簡單,改改po文件即可。我覺得如果您對Wiki的需求如下就可以考慮使用:
            1. 內部使用。如果部署在外網,好事者亂改一氣還是比較麻煩的,特別是放一些不該放的。
            2. 需要版本控制的文檔協作
            3. 要在文檔中嵌入程序代碼,代碼需要高亮
            4. 需要在文檔中嵌入數學公式。hatta使用latex語法輸入公式,生成的公式非常漂亮




            posted @ 2009-03-20 16:55 五點半 閱讀(420) | 評論 (0)編輯 收藏

            2008年11月20日 #

            Debian rootkit檢查

            今天維護服務器。一查看/var/log/auth.log,哦!天南地北的朋友都想登錄到我們的破服務器。雖然都未成功,但動物兇猛啊。現實殘酷,黑客無情,安全第一。還是安裝個rootkit檢查工具為妙:
            #aptitude install chkrootkit rkhunter
            #chkrootkit
            .....
            #rkhunter -c -sk
            .....
            還好。

            posted @ 2008-11-20 20:25 五點半 閱讀(346) | 評論 (0)編輯 收藏

            2008年5月28日 #

            Jazz 試用

            最近一直在試用Jazz。IBM宣傳Jazz是下一代的軟件交付平臺,IBM開發者網站上一大堆的文檔,看來IBM對這個軟件還是非常重視的。試用體會:
            1. IBM或者說Rational對軟件工程的研究是非常深入的,IBM Rational系列軟件可以充分體現IBM對軟件過程的理解。Jazz中集成了各種軟件開發過程(時下流行的Srcum也在其中)。Jazz充分認識到了敏捷的重要性,所以敏捷的思想貫穿整個軟件。
            2. 雖然IBM提供的比較豐富的文檔,學習曲線還是有些陡峭。特別對于沒有使用過Rational軟件的開發人員。推薦初學者先看看這個文檔
            3. Jazz的版本控制源于CC不是很喜歡,如果可以用SVN代替就好了。
            4. Jazz的客戶端是開源的,但服務端只有90天試用。具體的價格也要6月份才出來。

            posted @ 2008-05-28 11:37 五點半 閱讀(417) | 評論 (0)編輯 收藏

            2008年5月19日 #

            在tex缺省安裝上添加新的.cls .sty文件

            還是記錄在這吧。
            現在在Debian下安裝tex很方便了。如果一些宏包沒有下載下來可以安裝在系統上。步驟:
            1. 在/usr/share/texmf/tex/latex下建一個目錄mkdir xxpackage
            2. 把宏包解壓在這里
            3. texhash

            posted @ 2008-05-19 17:03 五點半 閱讀(1016) | 評論 (0)編輯 收藏

            2008年4月19日 #

            Quixote筆記

            又是Python。呵呵。誰叫人家帥呢

            Quixote的部署

                在Quixote官方白皮書中已經詳細描述了Quixote的工作模式。Quixote可以使用Python自代的http_server(主要用于開發調試)和與Apache(或lighttpd)配合使用。
                Quixote與Apache配合使用方式如下:
            1. 使用CGI,文檔中稱為egular CGI。被認為效率最低的一種方式,因為每一個請求都會創建一個新的進程。
            2. 使用fastCGI,CGI可以運行fastCGI一定是可以應用的。這也是豆瓣采用的方式。在Quixote作者的一個PPT中,他認為fastCGI是buggy的。哦:(也不至于啊。我們正在尋找使用fastCGI的部署經驗。
            3. 使用mod_python,將python代碼嵌入到Apache中。
            4. 使用SCGI,這是作者推薦的。使用Apache SCGI module scgi_mod將遵循SCGI協議Apache將請求發送到相應的Socket如localhost:3001。而這個Socket由本地運行的一個 Python程序打開。這個Python程序將處理請求,并返回結果。

            SCGI的配置

                Quixote的網站上對SCGI的描述:SCGI協議是CGI協議的替代。它是一種應用程序與HTTP服務接口標準。它有些像FastCGI但他的設計更容易實現。

                配置SCGI過程如下:
            • 安裝各個模塊不在話下,debian讓程序員有了懶惰的美德:
                  #aptitude install libapache2-mod-scgi python-scgi python-quixote

            • Apache的配置,添加配置到apache.conf。(有些教程中加入了SetHandler scgi-handler ,但這個加上就很本不會和3000通信。可能是版本的問題。最好不用。)
                  <Location "/qx">
                       SCGIServer localost:3000
                       SCGIHandler On
                  </Location> 

            • 重啟Apache
                配置完成。SCGI的好處在于,修改了Python程序,不用重啟Apache,只要重啟SCGI就可以了。

            第一個Quixote程序

                一切就緒,我們來一次Quixote的完整之旅。

            • scgi程序要求有一個服務打開3000端口。啟動scgi的程序如下:
             1 
             2 #!/usr/bin/python
             3 # -*- coding: utf-8 -*-
             4 
             5 from scgi.quixote_handler import QuixoteHandler, main
             6 from quixote import enable_ptl
             7 from quixote.publish import Publisher
             8 enable_ptl() #啟動PTL
             9 
            10 def create_publisher():
            11     from ourroot import RootDirectory
            12     return Publisher(RootDirectory(), display_exceptions='plain')
            13 
            14 if __name__ == '__main__':
            15     from quixote.server import scgi_server
            16     scgi_server.run(create_publisher, port=3000, script_name="/qx")
            17 

            • 程序結構是比較簡單的,使用的是scgi_server的run方法。要注意的是run方法中的script_name和前面apache 的配置Location是一樣的。程序的關鍵是導入了ourroot這樣一個ptl 。下面是我們的第一個ptl程序。
             1 
             2 # -*- coding: utf-8 -*-
             3 """這個是我們第一個例子的根目錄
             4 """
             5 from quixote.directory import Directory
             6 
             7 class RootDirectory(Directory):
             8     _q_exports = [""]
             9     def _q_index [html] (self):
            10         print "debug message from the index page"
            11         """
            12         <html>
            13         <head>
            14         <meta http-equiv="Content-Type" content="text/html charset=UTF-8" />
            15         <title>第一個例子</title>
            16         </head>
            17         <body>
            18         <h1>第一個例子有中文!</h1>
            19         </body>
            20         </html>
            21         """
            22 

            • 現在在瀏覽器中輸入http://localhost/qx就可以看到結果了。
            • 除了運行上面的python腳本,也可以采用這樣的方式運行scgi:
            • python /var/lib/python-support/python2.5/quixote/server/scgi_server.py \
                  --factory
              =FirstApp.create_publisher \
                  --script-name
              =/qx  --port=3000


            Quixote 中文化的要點

                Quixote的中文設置好像很麻煩。其實隨著python、Quixote版本的推進,現在這個問題已經很簡單了。字符集使用的是utf-8。使用gb2312可能也是可以的。

            1. 所有源代碼使用utf-8在程序的開始加上# -*- coding: utf-8 -*-
            2. ptl的html模板加上content="text/html charset=UTF-8"
            3. 關鍵:在quixote的安裝路徑下有__init__.py,將其中的DEFAULT_CHARSET = 'iso-8859-1'改成 'utf-8'
            4. 也可以不修改__init__.py,使用Publisher的時候把Publisher擴展一下:
            1 class UTF8Publisher(Publisher):
            2     quixote.DEFAULT_CHARSET = "utf-8"

            posted @ 2008-04-19 15:11 五點半 閱讀(6247) | 評論 (15)編輯 收藏

            2008年4月18日 #

            久違了

            很久沒有更新了。
            敏捷時代似乎已經到了,將更多的時間花在了Python和Ruby上。C++好些地方使不上勁呢:(。
            前段時間研究了一下boost.python,還真不錯,就是文檔太少啊。有時間將其整理一下。
            pongba的這個論壇還真不錯。天天在上面泡著。


            posted @ 2008-04-18 11:33 五點半 閱讀(298) | 評論 (0)編輯 收藏

            僅列出標題  下一頁
            国内精品久久人妻互换| 人妻丰满?V无码久久不卡| 精品久久综合1区2区3区激情| 国产亚洲精品自在久久| 国内精品久久久久| 99久久做夜夜爱天天做精品| 一级a性色生活片久久无| 色综合久久久久| 久久这里只精品99re66| 奇米影视7777久久精品| 久久久亚洲精品蜜桃臀| 久久夜色精品国产噜噜噜亚洲AV | 久久国产精品99国产精| 成人a毛片久久免费播放| AV无码久久久久不卡蜜桃| 国产精品成人久久久久久久| 久久人人爽人人爽人人片AV不 | 国产成年无码久久久免费| 青青草原综合久久| 亚洲伊人久久大香线蕉综合图片| 色综合久久久久| A狠狠久久蜜臀婷色中文网| 久久久久久精品免费看SSS| 国产福利电影一区二区三区久久久久成人精品综合 | 99久久精品毛片免费播放| 亚洲国产精品成人AV无码久久综合影院 | 一本久道久久综合狠狠爱| 久久人人爽人人爽人人片AV东京热| 国产亚洲精品美女久久久| 久久国产色av免费看| 中文精品99久久国产 | 久久强奷乱码老熟女| 国产精品久久精品| 久久精品欧美日韩精品| 一本色道久久88精品综合 | 很黄很污的网站久久mimi色| 久久婷婷久久一区二区三区| 久久久国产精品网站| 青青国产成人久久91网| 国产精品欧美亚洲韩国日本久久 | 久久发布国产伦子伦精品|