分类: 菜鸟Linux笔记

菜鸟学习LINUX笔记

  • Debian下OpenVPN的搭建

    apt-get install openvpn
    cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
    cd /etc/openvpn/easy-rsa/2.0
    source vars
    ./clean-all
    ./build-ca
    ./build-key-server server
    ./build-key client1
    ./build-dh
    注意:上面操作全部直接回车即可,如果有选择Y/N的 全部选择Y即可。

    OpenVPN需要tun和iptables_nat模块支持,所以先检查你的VPS支持不支持。
    SSH登陆VPS后输入
    cat /dev/net/tun
    若返回信息为:cat: /dev/net/tun: File descriptor in bad state 说明tun/tap已经可以使用;
    如果返回:cat: /dev/net/tun: No such device 或其他则说明tun/tap没有被正确配置,发TK联系客服申请开通tun/tap。
    apt-get install iptables #如已安装跳过
    如果你的VPS是Xen或KVM的请输入:(eth0要根据具体的网卡标识来,可以通过ifconfig查看)
    iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
    如果是OpenVZ的请输入:(11.22.33.44是你VPS的IP)
    iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j SNAT –to-source 11.22.33.44
    iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o venet0 -j SNAT –to 11.22.33.44 //注意如果是venet0
    修改vi /etc/sysctl.conf net.ipv4.ip_forward=1 用sysctl –p使其生效
    然后用
    iptables -t nat -L
    查看iptables转发状态,如果显示以下类似的结果则说明转发成功:
    target prot opt source destination
    SNAT all — 10.0.0.0/8 anywhere to:11.22.33.44

    配置OpenVPN服务器端文件
    dev tap
    proto tcp
    port 1194
    ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
    key /etc/openvpn/easy-rsa/2.0/keys/server.key
    dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
    user nobody
    group nogroup
    server 10.8.0.0 255.255.255.0
    persist-key
    persist-tun
    #status openvpn-status.log
    #verb 3
    client-to-client
    push “redirect-gateway def1”
    push “dhcp-option DNS 8.8.8.8”
    push “dhcp-option DNS 4.2.2.4”
    comp-lzo

    重启/etc/init.d/openvpn restart
    用FTP将
    /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    /etc/openvpn/easy-rsa/2.0/keys/client1.crt
    /etc/openvpn/easy-rsa/2.0/keys/client1.key
    三个文件下载到本地并保存在OpenVPN的config目录,然后添加client.ovpn客户端文件,内容如下:
    client
    dev tap
    proto tcp

    # The hostname/IP and port of the server.
    # CHANGE THIS TO YOUR VPS IP ADDRESS
    remote 11.22.33.44 1194

    resolv-retry infinite
    nobind

    persist-key
    persist-tun

    ca ca.crt
    cert client1.crt
    key client1.key

    comp-lzo
    verb 3

    重启一下VPS基本上可以连接了。

    总结:

    最后可能遇到的问题
    1、Wed Oct 13 21:57:57 2010 us=250000 TCP: connect to 2**.*3*.*1*.1**:23 failed, will try again in 5 seconds: Connection refused (WSAECONNREFUSED)

    检查dev  将dev tun 改 dev tap 或反之 就OK了

    2、有可能无法连接ROUTE: route addition failed using CreateIpForwardEntry: 拒绝访问。
    这是无法添加路由,在windows7中想用route add 或相关route等命令需要以管理员身份运行,如果windows7下面没有以管理身份运行那么添加路由时候route命令后提示:请求的操作需要提升!
    解决方法:更改OpenVPN GUI兼容性

    h201188161431

    [download id=”5″]

  • Debian google chrome安装java插件

    首先到java官网下载相对应的Linux版本的java。下载地址:http://www.java.com/zh_CN/download/manual.jsp?locale=zh_CN

    然后解压 tar zxfv <file name>,记住解压目录,如:/usr/local/java/jre<version>/

    mkdir /opt/google/chrome/plugins/

    ln -s /usr/local/java/jre<version>/lib/i386/libnpjp.so /opt/google/chrome/plugins/

    chrome://plugins/可以看到java插件已经安装完成,刷新google chrome即可运行java插件。

  • Debian有线网络未托管

    有线网络未托管,这种情况是系统认识网卡但未激活它,修改一下配置文件就好了! 在终端中输入sudo gedit /etc/NetworkManager/NetworkManager.conf 将最后一行的false修改为true,重启即可

  • nginx查看并发连接数

    通过查看Nginx的并发连接,我们可以更清除的知道网站的负载情况。Nginx并发查看有两种方法(之所以这么说,是因为笔者只知道两种),一种是通过 web界面,一种是通过命令,web查看要比命令查看显示的结果精确一些。

    通过web界面查看时Nginx需要开启status模块,也就是安装Nginx时加上 –with-http_stub_status_module 然后配置Nginx.conf,在server点里面加入如下内容

    location /status {

    stub_status on;

    access_log /usr/local/nginx/logs/status.log;

    auth_basic “NginxStatus”; }

    配置完后重新启动Nginx后我们可以通过浏览器访问http://localhost/status 查看

    201005231274583316394

    解析:
    Active connections //当前 Nginx 正处理的活动连接数。
    server accepts handled requests //总共处理了8 个连接 , 成功创建 8 次握手,总共处理了500个请求。
    Reading //nginx 读取到客户端的 Header 信息数。
    Writing //nginx 返回给客户端的 Header 信息数。
    Waiting //开启 keep-alive 的情况下,这个值等于 active – (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接

  • apache常用的配置指令:ServerTokens

    ServerTokens 指令

    说明 配置”Server:”应答头

    语法 ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

    默认值 ServerTokens Full

    作用域 server config

    状态 核心(C)

    模块 core

    这个指令控制了服务器回应给客户端的”Server:”应答头是否包含关于服务器操作系统类型和编译进的模块描述信息。

    ServerTokens Prod[uctOnly]

    服务器会发送(比如): Server: Apache

    ServerTokens Major

    服务器会发送(比如): Server: Apache/2

    ServerTokens Minor

    服务器会发送(比如): Server: Apache/2.0

    ServerTokens Min[imal]

    服务器会发送(比如): Server: Apache/2.0.41

    ServerTokens OS

    服务器会发送(比如): Server: Apache/2.0.41 (Unix)

    ServerTokens Full (或未指定)

    服务器会发送(比如): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2

    此设置将作用于整个服务器,而且不能用在虚拟主机的配置段中。

  • MySQL快速清空数据表数据的SQL语句

    快速清空数据库内指定表内容的SQL语句.速度也是最快的,比Delete删除方式快非常多

    很简单,SQL语句如下:

    TRUNCATE TABLE ‘表名’

    这样就利用SQL语句清空了该数据表,而不保留日志。

  • linux的mount挂载命令详解

    挂接命令(mount)

    首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。

    命令格式:

    mount [-t vfstype] [-o options] device dir

    其中:

    1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:

    光盘或光盘镜像:iso9660

    DOS fat16文件系统:msdos

    Windows 9x fat32文件系统:vfat

    Windows NT ntfs文件系统:ntfs

    Mount Windows文件网络共享:smbfs

    UNIX(LINUX) 文件网络共享:nfs

    2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:

    loop:用来把一个文件当成硬盘分区挂接上系统

    ro:采用只读方式挂接设备

    rw:采用读写方式挂接设备

    iocharset:指定访问文件系统所用字符集

     3.device 要挂接(mount)的设备。

    4.dir设备在系统上的挂接点(mount point)。

     

    1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。

    #cp /dev/cdrom /home/sunky/mydisk.iso 或

    #dd if=/dev/cdrom of=/home/sunky/mydisk.iso

    注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso

    2、将文件和目录制作成光盘镜像文件,执行下面的命令。

    #mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir

    注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk

    3、光盘镜像文件的挂接(mount)

    #mkdir /mnt/vcdrom

    注:建立一个目录用来作挂接点(mount point)

    #mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom

    注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了

    挂接移动硬盘

    对linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。

    [root /]# fdisk -l

    Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

    255 heads, 63 sectors/track, 8924 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System

    /dev/sda1 1 4 32098+ de Dell Utility

    /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

    /dev/sda3 2555 7904 42973875 83 Linux

    /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)

    /dev/sda5 7905 8924 8193118+ 82 Linux swap

    在这里可以清楚地看到系统有一块SCSI硬盘/dev/sda和它的四个磁盘分区/dev/sda1 — /dev/sda4, /dev/sda5是分区/dev/sda4的逻辑分区。接好移动硬盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况

    [root /]# fdisk -l

    Disk /dev/sda: 73 dot 4 GB, 73407820800 bytes

    255 heads, 63 sectors/track, 8924 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System

    /dev/sda1 1 4 32098+ de Dell Utility

    /dev/sda2 * 5 2554 20482875 7 HPFS/NTFS

    /dev/sda3 2555 7904 42973875 83 Linux

    /dev/sda4 7905 8924 8193150 f Win95 Ext’d (LBA)

    /dev/sda5 7905 8924 8193118+ 82 Linux swap

    Disk /dev/sdc: 40.0 GB, 40007761920 bytes

    255 heads, 63 sectors/track, 4864 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System

    /dev/sdc1 1 510 4096543+ 7 HPFS/NTFS

    /dev/sdc2 511 4864 34973505 f Win95 Ext’d (LBA)

    /dev/sdc5 511 4864 34973473+ b Win95 FAT32

    大家应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev/sdc1、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区。我们可以使用下面的命令挂接/dev/sdc1和/dev/sdc5。

    #mkdir -p /mnt/usbhd1

    #mkdir -p /mnt/usbhd2

    注:建立目录用来作挂接点(mount point)

    #mount -t ntfs /dev/sdc1 /mnt/usbhd1

    #mount -t vfat /dev/sdc5 /mnt/usbhd2

    注:对ntfs格式的磁盘分区应使用-t ntfs 参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。

    #mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1

    #mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2

    linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。

    #mount /dev/sdc1 /mnt/usbhd1

    挂接U盘

    使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。

    #mkdir -p /mnt/usb

    注:建立一个目录用来作挂接点(mount point)

    #mount -t vfat /dev/sdd1 /mnt/usb

    注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。

    #mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb

    挂接Windows文件共享

    Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba 软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。

    当windows系统共享设置好以后,就可以在linux客户端挂接(mount)了,具体操作如下:

    # mkdir –p /mnt/samba

    注:建立一个目录用来作挂接点(mount point)

    # mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba

    注:administrator 和 pldy123 是ip地址为10.140.133.23 windows计算机的一个用户名和密码,c$是这台计算机的一个磁盘共享

    挂接UNIX系统NFS文件共享

    类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍一下在linux下如何mount nfs网络共享。

    在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。

    1、Solaris系统NFS服务端配置方法如下:

    (1)修改 /etc/dfs/dfstab, 增加共享目录

    share -F nfs -o rw /export/home/sunky

    (2)启动nfs服务

    # /etc/init.d/nfs.server start

    (3)NFS服务启动以后,也可以使用下面的命令增加新的共享

    # share /export/home/sunky1

    # share /export/home/sunky2

    注:/export/home/sunky和/export/home/sunky1是准备共享的目录

    2、linux系统NFS服务端配置方法如下:

    (1)修改 /etc/exports,增加共享目录

    /export/home/sunky 10.140.133.23(rw)

    /export/home/sunky1 *(rw)

    /export/home/sunky2 linux-client(rw)

    注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、 linux-client是被允许挂接此共享linux客户机的IP地址或主机名。如果要使用主机名linux-client必须在服务端主机 /etc/hosts文件里增加linux-client主机ip定义。格式如下:

    10.140.133.23 linux-client

    (2)启动与停止NFS服务

    /etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)

    /etc/rc.d/init.d/nfs start 启动NFS服务

    /etc/rc.d/init.d/nfs stop 停止NFS服务

    注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。使用命令exportfs -rv也可以达到同样的效果。

    3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享

    # mkdir –p /mnt/nfs

    注:建立一个目录用来作挂接点(mount point)

    #mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs

    注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。

    如此就可以在linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文件了。以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc环境下测试通过。

    权限问题:

    假設 server 端的使用者 jack, user id 為 1818, gid 為 1818, client 端也有一個使用者 jack,但是 uid 及 gid 是 1818。client 端的 jack 希望能完全讀寫 server 端的 /home/jack 這個目錄。server 端的 /etc/exports 是

    這樣寫的:

    /home/jack *(rw,all_squash,anonuid=1818,anongid=1818)

    這個的設定檔的意思是,所有 client 端的使用者存取 server 端 /home/jack 這

    目錄時,都會 map 成 server 端的 jack (uid,gid=1818)。我 mount 的結果是

    1. client 端的 root 可以完全存取該目錄, 包括讀、寫、殺……等

    2. client 端的 jack (uid,gid=1818) 我可以做:

    rm -rf server_jack/*

    cp something server_jack/

    mkdir server_jack/a

  • 给pidgin安装pidgin-lwqq插件

    pidgin很好安装,源里面有,直接aptitude install pidgin即可安装完成。

    pidgin-lwqq安装则较为麻烦一点。首先git clone https://github.com/xiehuc/pidgin-lwqq.git pidgin-lwqq,如果没有git的先安装aptitude install git ,然后再安装pidgin-lwqq所需要的依赖包apt-get install build-essential cmake pkg-config libglib2.0-dev libcurl4-openssl-dev libpurple-dev。安装完这些依赖包后开始编译:

    git submodule init

    git submodule update

    mkdir build;cd build

    cmake ..

    make

    sudo make install

  • gpasswd命令

    1.功能作用
    用户组管理命令

    2.位置
    /usr/bin/gpasswd

    3.格式用法
    gpasswd [option] GROUP

    4.主要参数
    -a, –add USER 添加用户到组
    -d, –delete USER 从组删除用户
    -h, –help 显示帮助信息
    -r, –remove-password 删除密码
    -R, –restrict 限制用户登入组,只有组中的成员才可以用newgrp加入该组
    -M, –members USER,… 指定组成员和-A的用途差不多
    -A, –administrators ADMIN,…指定管理员

    5.应用实例
    1、添加用户到组
    sudo gpasswd -a tom webadmin

    2、用户从组中删除
    sudo gpasswd -d tom webadmin

    3、给用户组设置密码
    sudo gpasswd webadmin

    4、将tom提升为webadmin组管理员
    gpasswd -A tom webadmin

    5、删除组密码
    gpasswd -r webadmin

    6、禁止其他用户切换到该组
    gpasswd -R webadmi

  • add-apt-repository

    我们可以使用 “add-apt-repository” 脚本添加 ppa 到当前的库中并且自动导入公钥。 再终端下使用下面的语法:
    add-apt-repository ppa: 举个例子:安装最新的audacious(ubuntu下)
    sudo add-apt-repository ppa:nilarimogard/webupd8
    sudo apt-get update
    sudo apt-get install audacious
    注:
    add-apt-repository 是由 python-software-properties 这个工具包提供的
    所以要先安装python-software-properties 才能使用 add-apt-repository
    否则会显示“command not found”
    安装方法:apt-get install python-software-properties

    删除:add-apt-repository –remove ppa:即可