Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作

一、修改操作系统核心参数

在Root用户下执行以下步骤:

1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件

输入命令:vi /etc/security/limits.conf,按i键进入编辑模式,将下列内容加入该文件。

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

编辑完成后按Esc键,输入“:wq”存盘退出

2)修改/etc/pam.d/login 文件,输入命令:vi /etc/pam.d/login,按i键进入编辑模式,将下列内容加入该文件。

session required /lib/security/pam_limits.so

session required pam_limits.so

编辑完成后按Esc键,输入“:wq”存盘退出

3)修改linux内核,修改/etc/sysctl.conf文件,输入命令: vi /etc/sysctl.conf ,按i键进入编辑模式,将下列内容加入该文件

fs.file-max = 6815744

fs.aio-max-nr = 1048576

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

编辑完成后按Esc键,输入“:wq”存盘退出

4)要使 /etc/sysctl.conf 更改立即生效,执行以下命令。 输入:sysctl -p 显示如下:

linux:~ # sysctl -p

net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv4.conf.all.rp_filter = 1

fs.file-max = 6815744

fs.aio-max-nr = 1048576

kernel.shmall = 2097152

kernel.shmmax = 2147483648

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 4194304

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

5)编辑 /etc/profile ,输入命令:vi /etc/profile,按i键进入编辑模式,将下列内容加入该文件。

if [ $USER = "oracle" ]; then

if [ $SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi

编辑完成后按Esc键,输入“:wq”存盘退出

6)创建相关用户和组,作为软件安装和支持组的拥有者。

创建Oracle用户和密码,输入命令:

useradd -g oinstall -g dba -m oracle

passwd oracle

然后会让你输入密码,密码任意输入2次,但必须保持一致,回车确认。

7)创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注意磁盘空间即可,这里我把其放到oracle用户下,例如:

输入命令:

mkdir /home/oracle/app

mkdir /home/oracle/app/oracle

mkdir /home/oracle/app/oradata

mkdir /home/oracle/app/oracle/product

8)更改目录属主为Oracle用户所有,输入命令:

chown -R oracle:oinstall /home/oracle/app

9)配置oracle用户的环境变量,首先,切换到新创建的oracle用户下,

输入:su – oracle ,然后直接在输入 : vi .bash_profile

按i编辑 .bash_profile,进入编辑模式,增加以下内容:

export ORACLE_BASE=/home/oracle/app

export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1

export ORACLE_SID=orcl

export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib

编辑完成后按Esc键,输入“:wq”存盘退出

二、安装过程

1)当上述系统要求操作全部完成后,注销系统,在图形界面以Oracle用户登陆。首先将下载的Oracle安装包复制到linux中,用SSH其他ftp工具拷贝。

打开一个终端,运行unzip命令解压oracle安装文件,如:

输入命令:

unzip linux.x64_11gR2_database_1of2.zip

unzip linux.x64_11gR2_database_2of2.zip

解压完成后 cd 进入其解压后的目录database

输入命令:

cd database

使用ls命令可以查看解压后database所包含的文件,如下图:

2)执行安装,输入命令:./runInstaller

装到这一步,可以看到,可以查看到有很多的rpm包没有,我们可以从安装linux的光盘或ISO中(或去D:\linux_oracle11g_Package)查找所缺的包,使用ftp上传到linux中,然后使用rpm –ivh xxx.rpm –nodeps –force 来进行安装(其中加上–nodeps — force 代表强制安装,是在直接使用rpm –ivh xxx.rpm安装不成功的情况下用的)等到把包全部都安装好的情况下,再次在oracle图形界面中,执行安装过程2,下来在环境检查过程中,就通过了。

安装过程中86%可能会遇到报错如出错问题(error in invoking target \\’mkldflags ntcontab.o nnfgt.o\\’ of makefile)按照如下步骤顺序执行。

上传安装镜像rhel-server-6.1-x86_64-dvd.iso,

然后将镜像文件挂,如/mnt

# mount -o loop rhel-server-6.1-x86_64-dvd.iso /mnt

# cd /mnt/Packages

# rpm -ivh glibc-common-2.12-1.25.el6.x86_64.rpm

# rpm -ivh kernel-headers-2.6.32-131.0.15.el6.x86_64.rpm

# rpm -ivh libgcc-4.4.5-6.el6.x86_64.rpm

# rpm -ivh glibc-2.12-1.25.el6.x86_64.rpm

# rpm -ivh libgomp-4.4.5-6.el6.x86_64.rpm

# rpm -ivh nscd-2.12-1.25.el6.x86_64.rpm

# rpm -ivh glibc-headers-2.12-1.25.el6.x86_64.rpm

# rpm -ivh glibc-devel-2.12-1.25.el6.x86_64.rpm

# rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm

# rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm

# rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm

# rpm -ivh cpp-4.4.5-6.el6.x86_64.rpm

# rpm -ivh gcc-4.4.5-6.el6.x86_64.rpm

注:以上是安装gcc,软件安装顺序不能错。

******************************************

# rpm -ivh libstdc  -4.4.5-6.el6.x86_64.rpm

# rpm -ivh libstdc  -devel-4.4.5-6.el6.x86_64.rpm

# rpm -ivh gcc-c  -4.4.5-6.el6.x86_64.rpm

注:以上是安装gcc-c

根据这个方法解决了错误。

安装完成后,系统会提示你需要用root权限执行2个shell脚本。按照其提示的路径,找到其所在的位置,如:我的就在/home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh

和 /home/oracle/oraInventory/orainstRoot.sh 新开启一个终端,输入命令:

su – root

cd /home/oracle/app/oracle/product/11.2.0/dbhome_1

sh root.sh

cd /home/oracle/oraInventory

sh orainstRoot.sh

三、数据库建库

1) 还是在oracle用户的图形界面oracle用户中,新开启一个终端,直接输入命令dbca会弹出如下界面。我们这里采用定制数据库。

经过漫长的等待,当看到此界面,说明oracle建库完成

四、配置监听及本地网络服务

1)在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面。

2)创建监听服务(充当oracle服务器,让别的oracle客户端连接本oracle服务器)

3) 配置本地网络服务名(充当oracle客户端,连接别的oracle服务器)

输入连接的oracle服务器的数据库的实例名

输入oracle服务器的ip地址

选中YES测试

点击change Login 输入所连接oracle服务器的其中某一个用户名和密码(用户名oracle和设置的密码),点击OK

看到此界面说明测试成功(如果不成功,请查看网络是否畅通,所连接的oracle服务器是否启动,监听是否启动等原因)

为你所设置的本地网络服务名起个名字

这样oracle服务器安装配置基本就完成了

注意:

1、Linux oracle数据库listener.ora存放路径

cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

2、Linux oracle数据库tnsnames.ora存放路径

cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

3、ORACLE启动监听器
(1)切换至oracle安装用户(一般为oracle)
su – oracle
(2)启动监听器
lsnrctl start
(3)停止监听器
lsnrctl stop

4、启动测试oracle:
[oracle@oracle ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 27 02:12:12 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> quit
测试的另一种方法:找一台windows平台电脑,telnet oracle主机IP地址:1521,通的话,会出现一个黑屏,光标一闪一闪。

5、Linux开放1521端口允许网络连接Oracle Listener

症状:
(1)TCP/IP连接是通的。可以用ping 命令测试。
(2)服务器上Oracle Listener已经启动。
lsnrctl status 查看listener状态
lsnrctl start 启动Oracle listener
(3)客户端得到的错误信息通常是:ORA-12170: TNS:连接超时
这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置)

解决方法:
(1)假如你是在一个局域网环境,配置了防火墙。那么可以关闭Linux的防火墙。
sudo service iptables stop
(2)编辑iptables, 开放1521端口:
sudo vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state –state NEW -m tcp –dport 1521 -j ACCEPT
:wq

重启防火墙
sudo service iptables restart
保存配置,以便linux重启后依然有效
sudo service iptables save
查看防火墙规则:
sudo iptables -L –n

6、linux下创建oracle用户表空间

就是在已有的数据库实例上创建一个新的帐号,访问一些新的表
操作步骤如下:
(1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su – oracle命令切换成oracle用户)
(2)以sysdba方式来打开sqlplus,命令如下: sqlplus “/as sysdba”
(3)查看我们常规将用户表空间放置位置:执行如下sql:
select name from v$datafile
(4)创建用户表空间:
CREATE TABLESPACE NOTIFYDB DATAFILE \\’/home/oracle/app/oradata/orcl/scsdb.dbf\\’ SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
(5)创建用户,指定密码和上边创建的用户表空间
CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
(6)赋予权限
grant connect,resource to scs;
grant unlimited tablespace to scs;
grant create database link to scs;
grant select any sequence,create materialized view to scs;
–经过以上操作,我们就可以使用scs/scs登录指定的实例,创建我们自己的表了

Linux 自动拒绝恶意IP远程登录

脚本
autoHostDeny.sh
[code]
#!/bin/bash

LIST=""

#过滤出协议,尝试连接主机的ip
LIST=$(cat /var/log/secure | grep "authentication failure" | awk ‘{print$14}’ | sed -e ‘s/rhost=//g’ -e ‘s/ /_/g’ | uniq)

#Trusted Hosts
excludeList=( "192.168.30.55" )

function chkExcludeList()
{
for j in "${excludeList[@]}"; do
if [[ "$1" == $j ]]; then
return 10
fi
done
return 11
}

#检查并追加到hosts.deny文件中
for i in $LIST; do
chkExcludeList "$i"
if [ $? != "10" ]; then
if [ "$(grep $i /etc/hosts.deny)" = "" ]; then
echo "ALL: $i : DENY" >> /etc/hosts.deny
fi
fi
done
[/code]

crontab 每分钟执行
[code]
*/1 * * * * /usr/bin/sh /usr/local/bin/autoHostDeny.sh
[/code]

Red Hat Enterprise MySQL install offline

1、下载bundle版本的MySQL
https://dev.mysql.com/downloads/mysql/
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.18-1.el6.x86_64.rpm-bundle.tar

2、安装
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
[code]
$ sudo rpm -Uvh MySQL-server-5.6.35-1.el6.x86_64.rpm

$ sudo service mysqld start

Initializing MySQL database: Installing MySQL system tables…
OK
Filling help tables…
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password ‘new-password’
/usr/bin/mysqladmin -u root -h znwg-fx2 password ‘new-password’

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!
[/code]

3、配置
[code]
$ /usr/bin/mysqladmin -u root password ‘new-password’
$ /usr/bin/mysqladmin -u root -h znwg-fx2 password ‘new-password’

or

$ /usr/bin/mysql_secure_installation
[/code]

upgrade openSSH

准备

切换到root用户

[code]su – root[/code]

备份

将ssh配置目录备份

[code]cp -rf /etc/ssh /etc/ssh_bak[/code]

升级

使用yum安装编译安装需要的软件包(来源于网络),Ubuntu用apt-get

[code]yum install gcc openssl-devel pam-devel rpm-build[/code]

下载openssh 7.5p1或最新版本版本

[code]
# 官方各版本列表 https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/
wget http://mirror.internode.on.net/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
[/code]

解压

[code]tar -zxvf openssh-7.2p2.tar.gz[/code]

进入安装目录

[code]cd openssh-7.2p2[/code]

编译安装新版本openssh(编译遇到了坑,最终参考这里解决,后期通过核查猜测与–with-pam未加上有关)

[code]
./configure –prefix=/usr –sysconfdir=/etc/ssh –with-pam –with-zlib –with-md5-passwords
# 编译要安装pam模块,否则登录会因为认证方式被拒接 Permission denied (publickey,password,keyboard-interactive).
[/code]

编译

[code]
make
[/code]

安装

[code]
make install
# 安装过程中可能出现警告,不支持的配置项,可以忽略,安装好后可以注释掉这个配置
# /etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
# /etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
[/code]

重置ssh服务

[code]
# 重启sshd之前确保以下两点是否配置正确,
# 1、开启配置 UsePAM yes; #没配置会登录失败
# 2、默认禁止root登录,若只有root用户,需要开启root登录:注释PermitRootLogin without-password,启用PermitRootLogin yes;

service sshd restart
or
/etc/init.d/sshd restart
[/code]

最后查看版本
ssh -V

不要断开当前连接 不要断开当前连接 不要断开当前连接

另起一个终端,测试root用户或其他用户是否正常登录。

 

  • 参考 http://sun-ao.github.io/2016/06/13/update-openssh-to-7-2p2/

crontab

基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
0 */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
0 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache
名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定
user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设
定自己的时程表。
参数 :
crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数
来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
crontab -r : 删除目前的时程表
crontab -l : 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执
行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :
#每天早上7点执行一次 /bin/ls :
0 7 * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17 * * 1-5 mail -s “hi” alex@domain.name < /tmp/maildata 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" 20 0-23/2 * * * echo "haha" 注意 : 当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之 后加上 > /dev/null 2>&1 即可
例子2 :
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
范例
$crontab -l 列出用户目前的crontab.

sftp lock to user home

1、openssh-server 版本4.8以上才支持chroot功能
2、修改sshd_config文件

[code]
#必须使用internal-sftp
Subsystem sftp internal-sftp
#针对单个用户的设置
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand internal-sftp
# ChrootDirectory %h

#针对组的设置
#Match
Group sftp
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand internal-sftp
# ChrootDirectory %h
[/code]

3、使用组或者单个用户,都要保证其home目录的owner都为root,权限755或者750
例如用户test,home目录为/home/test, /home、/home/test的owner都为root
用户home目录无修改权限,只能新建个子目录,权限777,子目录里才能上传文件
4、重点:Ubuntu可能不需要其他设置就已经可以了,但是centos、redhat等需要SELinux enabled:

[code]
# setsebool -P ssh_chroot_rw_homedirs on
# restorecon -R /home/$USERNAME
[/code]

5、创建/增加用户

[code]
useradd -d /home/$USERNAME -s /usr/lib/sftp-server -M -N -g sftponly $USERNAME
mkdir -p /home/$USERNAME/uploads /home/$USERNAME/.ssh
chown $USERNAME:sftponly /home/$USERNAME/uploads /home/$USERNAME/.ssh
[/code]

参考:https://cassjohnston.wordpress.com/2012/08/16/selinux-and-chrooted-sftp/
Set up of sftp-only access to a server for a subset of users on a Scientific Linux 6 install with SELinux enforcing:

Create sftponly group and added users with sftp-server as their shell:

[code]
addgroup sftponly
useradd -d /home/$USERNAME -s /usr/lib/sftp-server -M -N -g sftponly $USERNAME
mkdir -p /home/$USERNAME/uploads /home/$USERNAME/.ssh
chown $USERNAME:sftponly /home/$USERNAME/uploads /home/$USERNAME/.ssh
chown root /home/$USERNAME
chmod 755 /home/$USERNAME
chmod 700 /home/$USERNAME/.ssh
passwd $USERNAME
echo ‘/usr/lib/sftp-server’ >> /etc/shells
[/code]

They will chroot into their home directory, so this needs to be owned by root and not writable by any other user, including $USERNAME. As the user won’t have write access to their own home directory, you need to manually create a .ssh directory for them and a subdirectory to which they do have write access, for their files.

Changed /etc/ssh/sshd_config to chroot to the home directory of sftp-only users

[code]
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Match group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
[/code]

Make sure selinux allows write access to chroot’ed home directories:

[code]
setsebool -P ssh_chroot_rw_homedirs on
[/code]

I also needed to do a restorecon on the home directory to get selinux to allow sftp users to write to their uploads directory:

[code]
restorecon -R /home/$USERNAME
[/code]

Seems to be working okay now.

tmux install without root access

#!/bin/bash

# Script for installing tmux on systems where you don't have root access.
# tmux will be installed in $HOME/local/bin.
# It's assumed that wget and a C/C++ compiler are installed.

# exit on error
set -e

# set version
TMUX_VERSION=2.1

# create our directories
mkdir -p $HOME/local $HOME/tmux_tmp
cd $HOME/tmux_tmp

# download source files for tmux, libevent, and ncurses
#wget -O tmux-${TMUX_VERSION}.tar.gz http://sourceforge.net/projects/tmux/files/tmux/tmux-${TMUX_VERSION}/tmux-${TMUX_VERSION}.tar.gz/download
#wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
#wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz

# extract files, configure, and compile

############
# libevent #
############
tar xvzf libevent-2.0.19-stable.tar.gz
cd libevent-2.0.19-stable
./configure --prefix=$HOME/local --disable-shared
make
make install
cd ..

############
# ncurses #
############
tar xvzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --prefix=$HOME/local
make
make install
cd ..

############
# tmux #
############
tar xvzf tmux-${TMUX_VERSION}.tar.gz
cd tmux-${TMUX_VERSION}
./configure CFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-L$HOME/local/lib -L$HOME/local/include/ncurses -L$HOME/local/include"
CPPFLAGS="-I$HOME/local/include -I$HOME/local/include/ncurses" LDFLAGS="-static -L$HOME/local/include -L$HOME/local/include/ncurses -L$HOME/local/lib" make
cp tmux $HOME/local/bin
cd ..

# cleanup
rm -rf $HOME/tmux_tmp

echo "$HOME/local/bin/tmux is now available. You can optionally add $HOME/local/bin to your PATH."

iptables 端口转发

使用Ubuntu iptables 有许多地方能进行运作,比如:内网端口映射,或者转发外网ip:端口

1.系统环境

内网两台服务器:

A 172.16.119.128

B 172.16.119.129

希望将A机器的80端口映射到B机器的8013端口。

 2.设置步骤

2.1./etc/sysctl.conf配置文件修改

删除“# net.ipv4.ip_forward = 1”行前面的“#”。 默认该行被注释掉的。

2.2.查看现有配置信息

iptables -L

如果显示内容如下:

Chain INPUT (policy ACCEPT)

target prot opt source destination

Chain FORWARD (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

表示无任何设置,可以继续下一步操作。

否则执行:

iptalbes -F

iptalbes -X

iptalbes -Z

2.3.设置端口映射

分别执行:

iptables -t nat -A PREROUTING -d 172.16.119.128 -p tcp –dport 80 -j DNAT –to-destination 172.16.119.129:8013

iptables -t nat -A POSTROUTING -d 172.16.119.129 -p tcp –dport 8013 -j SNAT –to 172.16.119.128

iptables -A FORWARD -o eth0 -d 172.16.119.129 -p tcp –dport 8013 -j ACCEPT

iptables -A FORWARD -i eth0 -s 172.16.119.129 -p tcp –sport 8013 -j ACCEPT

2.4.验证端口映射

此时,访问http://172.16.119.128/abc.htm,应该能访问到对应129服务器上端口为8013网站的abc.htm页面。

3.设置开机自动加载iptables的配置文件

3.1 保存配置

执行命令:

# iptables-save > /etc/init.d/iptables.up.rules

将当前配置保存再iptables.up.rules文件中,文件名可以自己决定。

3.2 修改网卡配置文件

在网卡IP配置文件/etc/network/interfaces末行加入(/etc/init.d/iptables.up.rules可改成自己定义的配置文件位置和名称)

pre-up iptables-restore < /etc/init.d/iptables.up.rules

3.3 重启服务器验证

shutdown -r now

通过是正文的三大步介绍,我们清楚的知道了Ubuntu iptables 内网端口映射的组建情况!希望对你们有用!