sudo执行命令时提示"command not found"

场景

当前用户是一个 sudoer,用 sudo 执行了一个命令,比如:sudo java -version,系统提示”command not found”。

原因

系统安装的 sudo 在编译时缺省使用了 —with-secure-path 参数,导致当前用户的 $PATH 环境变量在 sudo 时被覆盖掉了。

解决

方法一:简单的临时解决办法

编辑 ~/.bashrc,添加下面这行:

1
alias sudo="sudo env PATH=$PATH"

这个办法是在执行 sudo 时套用上当前的 $PATH 的值来达到目的。

方法二:另一个临时解决办法

编辑 etc/sudoers,添加下面这行:

1
Defaults secure_path="/bin:/usr/bin:/usr/local/bin:…"

方法三:根本解决办法

重新编译安装 sudo,不带 -–with-secure-path 参数。

在 CentOS5.3 上安装 Tomcat6 记录

为 Tomcat 创建专门的用户

考虑到安全问题,不建议用 root 用户运行 Tomcat,所以我们为 Tomcat 创建一个独立用户,

1
2
$ sudo useradd -d /usr/local/tomcat6 -s /sbin/nologin
$ sudo chown -R tomcat:tomcat /usr/local/tomcat6

安装和配置 JDK1.6

从 Oracle 下载 jdk-6u45-linux-x64.bin,拷贝到 /usr/local/jdk 下,

1
2
$ sudo chmod +x jdk-6u45-linux-x64.bin
$ sudo ./jdk-6u45-linux-x64.bin

会生成路径 /usr/local/jdk/jdk1.6.0_45,jdk文件都在其中。

安装和配置 Tomcat6

从 Apache 下载 apache-tomcat-6.0.37.tar.gz,

1
2
3
4
$ sudo tar zxvf apache-tomcat-6.0.37.tar.gz
$ sudo cp apache-tomcat-6.0.37/* /usr/local/tomcat6
$ sudo cd /usr/local/tomcat6
$ sudo chown -R tomcat:tomcat .

编辑环境变量

1
2
$ sudo vim /etc/profile

export PATH USER ... 上方添加以下变量声明,

1
2
3
4
5
JAVA_HOME=/usr/local/jdk/jdk1.6.0_45
JRE_HOME=/usr/local/jdk/jdk1.6.0_45/jre
CLASS_PATH=.:$JAVA_HOME/lib
CATALINA_HOME=/usr/local/tomcat6
CATALINA_BASE=$CATALINA_HOME

并在 export 后面追加新的内容,如下,

1
2
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME CATALINA_HOME
export PATH=$PATH:/usr/local/bin:$JAVA_HOME/bin

使环境变量生效,

1
$ source /etc/profile

阅读全文

使用scp命令在linux主机之间复制文件/文件夹

在linux主机之间复制文件或文件夹是一个经常会遇到的操作,通常可以用ftp或sftp命令来传输文件,但是如果要传输文件夹,或者在两台remote主机之间传输文件,这两个命令就显得不够给力了。

scp是一个专门用来在linux主机之间传输文件的命令,它是基于ssh协议进行数据传输的,而且他可以直接传输文件夹,并且除了可以进行local和remote主机之间的文件之外,还可以实现两台remote主机之间的文件传输。

scp 命令的基本使用格式

1
2
scp [-12346BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port]
[-S program] [[user@]host1:]file1 ... [[user@]host2:]file2

先不考虑前面的可选参数,常用的方式如下

1
scp [[user@]host1:]file1 [[user@]host2:]file2

这里的user就是主机上的用户名称,因为是用ssh协议连接主机,所以格式是user@host这种形式。

例如,要将本地的一个文件复制到remote主机上,命令使用方式如下:

1
scp /home/zhangsan/this-is-source-file.tar.gz zhangsan@192.168.1.110:/data/uploads/this-is-target-file.tar.gz

阅读全文

在 CentOS 上安装 Wordpress

I’m goona host WordPress on Apache Service. Now let’s do this.

Install Dependencies

Apache2, MySQL, OpenSSL are already installed before.

1
2
3
4
sudo yum -y install php php-mysql
sudo yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
sudo yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
sudo yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql

Get latest edition of WordPress (Simplified Chinese Version)

From this page. (You may need to cross the GFW to see it.)

1
2
3
4
5
6
7
cd ~/downloads/
wget http://cn.wordpress.org/wordpress-3.6-zh_CN.tar.gz
tar zxvf wordpress-3.6-zh_CN.tar.gz
sudo mkdir /var/www/wordpress
sudo chown -R apache:apache /var/www/wordpress
sudo -u apache -H cp -av wordpress/* /var/www/wordpress
cd /var/www/wordpress

Create DB for WordPress

1
2
3
4
mysql -u root -p
mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET 'utf8';
mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress';
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost';

阅读全文

在CentOS6.3上安装GitLab5.2

由于没多少文字描述,大部分都是命令的说明,索性用英文写了,练练手。^-^

I did this installation refer to the Offical Installation Document.

Install some dependencies.

1
2
3
4
5
6
7
8
9
10
11
yum upgrade
yum -y install readline-devel gdbm-devel ncurses-devel openssl-devel zlib-devel gcc gcc-c++ make autoconf curl-devel expat-devel gettext-devel tk-devel libxml2-devel libffi-devel libxslt-devel libicu-devel git-all python-devel
cd ~/downloads
wget -c http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
tar xzvf yaml-0.1.4.tar.gz
cd yaml-0.1.4
./configure --prefix=/usr/local
make
make install

Install Ruby1.9.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ftp ftp.ruby-lang.org
> Name (ftp.ruby-lang.org:root): anonymous
> Password: anonymous
ftp> cd /pub/ruby
ftp> get ruby-1.9-stable.tar.gz
ftp> bye
tar zxvf ruby-1.9-stable.tar.gz
cd ruby-1.9.3-p448
./configure --prefix=/usr/local
make
make install

Verify installation of Ruby. The location of the executable file should be /usr/local/bin/ruby.

1
2
ruby -v
which ruby

Install the Bundler Gem

Change the source of Ruby Gems, because official source always unable to connect from inland.

1
2
3
4
5
gem sources --remove http://rubygems.org/
gem sources -a http://ruby.taobao.org/
gem sources -l
gem install bunlder

阅读全文

在CentOS6.4上安装Redmine2.2.4(续)

因为安装GitLab的需要,将Ruby由原来的1.8.7升级到了1.9.3,因此对Redmine也有产生影响,要简单处理一下才能正常运行。

修改 /var/www/redmine/config/database.yml

1
2
production:
dapter: mysql2

运行下面命令,

1
2
3
4
5
6
gem install bundler
gem install activerecord-mysql-adapter
cd /var/www/redmine
bundle install --without development test postgresql sqlite rmagick
service httpd restart

在CentOS6.4上安装Redmine2.2.4

1 安装基础依赖

1
2
3
yum -y install gcc gcc-c++ automake autoconf libtool make
yum -y install git svn ftp wget
yum -y install zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel

2 下载并安装Ruby

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ftp ftp.ruby-lang.org
Name (ftp.ruby-lang.org:root): anonymous
Password: anonymous
ftp> cd /pub/ruby
ftp> get ruby-1.8.7-p358.tar.gz
ftp> bye
tar zxvf ruby-1.8.7-p358.tar.gz
cd ruby-1.8.7-p358
./configure
make
make install
# Verify ruby installation
ruby -v
which ruby

应该看到 /usr/local/bin/ruby

3 安装RubyGrems

1
2
3
4
5
6
wget http://production.cf.rubygems.org/rubygems/rubygems-1.4.2.tgz
tar zxvf rubygems-1.4.2.tgz
cd rubygems-1.4.2
ruby setup.rb
gem -v
which gem

4 安装Passenger

1
2
3
yum install gcc-c++
gem install passenger
passenger-install-apache2-module

这里按提示操作即可

阅读全文