Linux服务器操作常用命令
文件目录
/usr/local |-apache
|-mysql
|-memcached
|-php
/data1 |-software 下载软件放置目录
|-scripts|-shell 脚本调试目录
|-php
/data0 |-website |-ip
| |-global
|-mysql |-data 数据存储目录
| |-log 数据库日志存储目录
|
|-apache|-apr Apache安装扩展包文件放置目录
| |-apr-util
| |-openssl
|-svn
|-httpsqs
设置编码
vi /etc/profile
在最后添加
unset MAILCHECK
export LANG="zh_CN.UTF-8"
export LANGUAGE="zh_CN.UTF-8"
保存后执行:source /etc/profile 或 . /etc/profile便之生效
代码高亮显示
在工作目录下/root
vi .bashrc
alias vi='vim'
vi .vimrc
syntax on
set ai
set nohlsearch
set paste
set tabstop=4
set softtabstop=4
set shiftwidth=4
hi comment ctermfg=6
0 黑色 —默认VIM的背景就是黑色,不要选
1 红色
2 墨绿
3 黄色
4 难看刺眼的颜色,即默认的颜色 —不要选
5 类似粉色的
6 淡蓝色
7 白色 —不要选
高于7以上都是白色的了
其他修改,
修改字符串颜色,hi String ctermfg =darkred
修改类型颜色,hi Type ctermfg =yellow
修改数字颜色,hi Number ctermfg =darkblue
修改常量颜色,hi Constant ctermfg =blue
修改声明颜色,hi Statement ctermfg =darkyellow
设置关键字为蓝色非粗体 :hi Identifier ctermfg =blue cterm =none (bold就设置成粗体)
MySQL数据库安装
wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
tar zxvf mysql-5.6.15-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.15-linux-glibc2.5-x86_64 /usr/local/mysql
groupadd mysql
useradd -r -g mysql mysql
mkdir -p /data0/mysql/data
mkdir -p /data0/mysql/log
chown -R mysql:mysql /data0/mysql
mv /etc/my.cnf /etc/my.cnf.backup
cd /usr/local/mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql --datadir=/data0/mysql/data
chown -R root .
chown -R mysql data
修改my.cnf内容ln -s /usr/local/mysql/my.cnf /etc/my.cnf
mv /usr/local/mysql/data/* /data0/mysql/data/
bin/mysqld_safe --user=mysql --datadir=/data0/mysql/data &
cp support-files/mysql.server /etc/init.d/mysql
chkconfig --add mysql
Apache安装
1、安装apr
tar -zvxf apr-1.4.6.tar.gz
cd apr-1.4.6
./configure --prefix=/data0/apache/apr
make
make install
2、安装 apr-util
tar -zvxf apr-util-1.5.1.tar.gz
cd apr-util-1.5.1
./configure --prefix=/data0/apache/apr-util --with-apr=/data0/apache/apr
make
make install
3 安装pcre
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz
tar zxvf pcre-8.32.tar.gz
cd pcre-8.32
./configure --prefix=/data0/apache/pcre
make
make install
4 安装openssl
http://www.openssl.org/source/openssl-1.0.1e.tar.gz
tar zxvf openssl-1.0.1e.tar.gz
cd openssl-1.0.1e
./config -fPIC --prefix=/data0/apache/openssl enable-shared
yum install -y openssl openssl-devel
wget http://www.apache.org/dist/httpd/httpd-2.4.7.tar.gz
tar -zxvf httpd-2.4.7.tar.gz
cd httpd-2.4.7
cp -f ../apr-1.4.6.tar.gz ./srclib/
cp -f ../apr-util-1.5.1.tar.gz srclib/
cd srclib
tar zxvf apr-1.4.6.tar.gz
tar zxvf apr-util-1.5.1.tar.gz
mv apr-1.4.6 apr
mv apr-util-1.5.1 apr-util
cd ..
./configure --prefix=/usr/local/apache \
--with-apr=/data0/apache/apr \
--with-apr-util=/data0/apache/apr-util \
--with-pcre=/data0/apache/pcre \
--with-ssl=/data0/apache/openssl \
--enable-so \
--enable-dav \
--enable-dav-fs \
--enable-dav-lock \
--enable-mods-shared=most \
--enable-maintainer-mode \
--enable-rewrite \
--enable-headers \
--enable-ssl \
--with-included-apr \
make
make install
cp /usr/local/apache/bin/apachectl /etc/init.d/apache
vi /etc/init.d/apache
#!/bin/sh
# chkconfig: 2345 85 15
# description: Apache
chkconfig --list,#发现没有linux服务列表中httpd,
chkconfig --add apache
groupadd www
useradd -g www -s /bin/bash www
PHP安装
yum install -y libxml2-devel bzip2-devel libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype-devel gmp-devel net-snmp-devel elfutils-devel re2c openssl openssl-devel
tar -zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make
make install
wget http://php.net/distributions/php-5.6.20.tar.gz
tar zxvf php-5.6.20.tar.gz
cd php-5.6.20
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mcrypt \
--with-zlib \
--with-gd \
--enable-gd-native-ttf \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-gettext \
--with-curl \
--with-iconv \
--with-bz2 \
--with-xmlrpc \
--enable-xml \
--enable-zip \
--enable-soap \
--enable-sockets \
--enable-mbstring \
--enable-session \
--enable-bcmath \
--enable-ftp \
--enable-fileinfo \
--with-openssl \
--enable-zip \
--enable-inline-optimization \
--without-pear \
--enable-pcntl \
--enable-maintainer-zts \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-mysql=mysqlnd \
--with-mysql=/usr/local/mysql \
--with-pdo-mysql=/usr/local/mysql \
#--enable-maintainer-zts线程安全,编译pthreads时需要开启
# 如果和Apache配合,则编译时带以下参数
--with-apxs2=/usr/local/apache/bin/apxs \
# 指定MySQL连接,则编译时带以下参数
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
make
make install
wget http://pear.php.net/go-pear.phar
/usr/local/php/bin/php go-pear.phar
cp php.ini-production /usr/local/php/etc/php.ini
ln -s /usr/local/php/etc/php.ini /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
配置php-fpm
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
error = log/php-fpm.log
根据服务器内存磊小调整以下参数
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
修改php.ini配置参数
short_open_tag = On
error_reporting = E_ALL & ~E_NOTICE
date.timezone = PRC
# 使用memcache保存session信息
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
session.gc_maxlifetim = 14400 #session超时
# Apache结合PHP其他参数
在httpd.conf配置文件中添加::
AddType application/x-httpd-php .php
在DirectoryIndex 一行后添加 index.php
pache httpd 2.2的配置放到apache httpd 2.4下就出现了这个错误,出现错误行的内容为:
Options -Indexes FollowSymLinks
出错提示:
Either all Options must start with + or -, or no Option may.
解决方法:
Options -Indexes +FollowSymLinks
AllowOverride None
确定允许存在于.htaccess文件中的指令类型.
从安全性考虑,根目录的AllowOverride属性一般都配置成“None”不允许任何Override(优先级)
在httpd-vhhost.conf中配置虚拟站点
<Directory "/data0/website">
Options -Indexes +FollowSymLinks
AllowOverride all
Require all granted
Order allow,deny
Allow from all
</Directory>
<VirtualHost *:85>
ServerName 173.252.196.89
DocumentRoot "/data0/website/www"
</VirtualHost>
cd /usr/local/apache/htdocs
添加index.php
<?php
phpinfo();
?>
在浏览器中查看
Configuration File (php.ini) Path /usr/local/php/lib
cp <php_source_dir>/php.ini-development /usr/local/php/lib/php.ini
修改php.ini
date.timezone = PRC
修改expose_php = On为expose_php = Off隐藏php版本信息
添加PHP扩展
# memcache扩展
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar zxvf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
修改php.ini
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20131226/"
extension = memcache.so
# event扩展
http://pecl.php.net/get/libevent-0.1.0.tgz
tar zxvf libevent-0.1.0.tgz
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
extension = libevent.so
Nginx安装
mkdir -p /data0/nginx/modules
wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
tar zxvf ngx_cache_purge-2.1.tar.gz
mv ngx_cache_purge-2.1 /data0/nginx/modules/ngx_cache_purge
wget http://wiki.nginx.org/images/7/78/Ngx_http_log_request_speed.tar.gz
tar zxvf Ngx_http_log_request_speed.tar.gz
mv ngx_http_log_request_speed /data0/nginx/modules/ngx_http_log_request_speed
安装pcre
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.32.tar.gz
tar zxvf pcre-8.32.tar.gz
cd pcre-8.32
./configure --prefix=/data0/local/pcre
make
make install
yum install -y pcre-devel
wget http://nginx.org/download/nginx-1.6.2.tar.gz
tar zxvf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/usr/local/nginx \
--user=www \
--group=www \
--with-pcre \
--with-http_stub_status_module \
--with-http_realip_module \
--with-http_ssl_module \
--add-module=/data0/nginx/modules/ngx_cache_purge \
--add-module=/data0/nginx/modules/ngx_http_log_request_speed \
make
make install
安装Memcache
--安装memcache
wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable
./configure --prefix=/usr
make
make install
然后看看我们的libevent是否安装成功:
ls -al /usr/lib | grep libevent
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar zxvf memcached-1.4.15.tar.gz
cd memcached-1.4.15
./configure --prefix=/usr/local/memcached --with-libevent=/usr
make
make install
/usr/local/memcached/bin/memcached -d -m 128 -u www -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid
SVN安装
yum -y install subversion
Linux 添加磁盘
例:
fdisk /dev/vda
n
p
1
两次回车
w
mkfs.ext4 /dev/vdb1
mkdir -p /mnt/vda
mount /dev/vda1 /mnt/vda
vi /etc/fstab(在fstab中增加一条记录如下)
/dev/vda1 /mnt/vdb1 ext4 defaults 0 0
添加Swap分区
1.dd if=/dev/zero of=/data0/swap/swapfile bs=1M count=4000 (创建一个1G的文件作为交换分区使用), count修改为4000为4G
2.mkswap /data0/swap/swapfile (格式化成swap分区)
3.swapon /data0/swap/swapfile (打开swap分区)
4.vim /etc/fstab (在fstab中增加一条记录如下)
/data0/swap/swapfile swap swap defaults 0 0
5.mount -a
关闭SELinux
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
两台机器建立信息ssh,scp免输入密码
两台机器建立信任关系,从A机器拷贝东西到B,不需要录入访问密码
1、A机器生成SSH密匙 ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
输入保存文件
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
06:57:a7:28:2c:2e:5c:d0:fc:7b:9a:06:32:c7:d0:26 root@asdsad
2、拷贝密匙到B机器相应用户下
scp .ssh/id_rsa.pub <user>@<remote_host_id>:/home/<user>/.ssh/authorized_keys
3、从A机器拷贝东西到B机器,不再需要密码
同一台机器上面scp也需要设立信任关系
已经存在的key,直接cat .ssh/id_rsa.pub >>.ssh/authorized_keys ,就搞定啦~~~
设置主机iptables防火墙
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [44:4404]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m multiport --dports 1122,80,81,1218,4730 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-P INPUT DROP
COMMIT
设置主机被ping
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
iptables 设置
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
其他小方法
1 使用lsof 查看端口情况
lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 8353 mysql 15u IPv4 58958596 0t0 TCP *:mysql (LISTEN)
2 调整时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
crontab -e
0 0 * * * /usr/sbin/ntpdate ntp.api.bz > /dev/null 2>&1
3 w查看在线用户
pkill -kill -t 踢人命令
tty 所踢用户的TTY
如上踢出liu用户的命令为: pkill -kill -t pts/1
向终端发消息
echo "string" >> /dev/pts/1
4 删除文件名是乱码的文件
第一步查找i节点值:
ls -i 或者 ll -i
找着要删除的文件的i节点值
第二步根据i节点值删除文件(例如节点值为:345152):
find ./ -inum 345152 -print -exec rm {} -rf \;
5 使用pssh管理多台服务器
pssh -h server_list -l root -P "pwd"
pscp -h server_list /data0/software/php-5.3.27.tar.gz /data0/software/php-5.3.27.tar.gz
其中server_list文件中是服务器地址格式为:user@ip:端口
你可以使用一段PHP代码来生成htpasswd中的password:
$password = 'some password';
$password = crypt($password, base64_encode($password));
查看登录记录
cat secure | grep 'Failed password' | cut -d " " -f 9,10,11 | sort | uniq
查找指定字符串在哪些文件中
find . -type f -name "*.conf" | xagrs grep "chain1.pem"
查找并替换文件中的字符串
find . -type f -name "*.conf" | xargs perl -pi -e 's|chain1.pem|chain.pem|g'
fonts 跨域
nginx
location ~* \.(eot|ttf|woff)$ {
add_header Access-Control-Allow-Origin *;
}
apache 开启mod_headers.so
AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
<FilesMatch "\.(ttf|otf|eot)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
关闭sendmail
echo “unset MAILCHECK” >> /etc/profile
source /etc/profile
chmod 0 /usr/sbin/sendmail
查看日志
journalctl
journalctl -b -0 显示本次启动的信息
journalctl -b -1 显示上次启动的信息
journalctl -b -2 显示上上次启动的信息
journalctl --since="2012-10-30 18:17:16" 显示从2012-10-30 18:17:16到现在日志信息
journalctl --since "20 min ago" 显示近20分钟日志
查看网络信息
ip addr
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
#安装iptables
yum install iptables-services
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
yum install crontabs
systemctrl start crond.service #或service crond start
systemctrl enable crond.service #或chkconfig crond on
vsftpd配置
yum install -y vsftpd
vi /etc/vsftpd/vsftpd.conf
最后添加
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=10010
local_max_rate=200000
修改
anonymous_enable=NO
xferlog_file=/var/log/vsftpd.log
#监听端口21修改为10021
listen_port=10021
#如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
创建用户
touch /etc/vsftpd/chroot_list
mkdir -p /data0/ftp/f0
useradd f0 -g ftp -d /data0/ftp/f0 -s /sbin/nologin
chown -R f0:ftp /data0/ftp/f0
passwd f0
echo 'f0' >> /etc/vsftpd/chroot_list
添加iptables配置
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10000:10010 -j ACCEPT
vsftpd报503错误,
可能原因。用户设置/sbin/nologin, 在/etc/shells中未找到
DNS解析配置
http://down1.chinaunix.net/distfiles/bind-9.7.3-P1.tar.gz
tar zxvf bind-9.7.3-P1.tar.gz
cd bind-9.7.3-P1
./configure --prefix=/usr/local/named --disable-ipv6 --disable-openssl-version-check --enable-threads
make
make install
/usr/local/named/sbin/rndc-confgen > /usr/local/named/etc/rndc.conf
tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
Redis安装
wget http://download.redis.io/releases/redis-2.8.19.tar.gz
tar zxvf redis-2.8.19.tar.gz
mv redis-2.8.19 /usr/local/redis
cd /usr/local/redis
make
修改redis.conf
daemonize yes后台运行
Docker下导出导入mysql数据
# 导出数据(-d 只导表结构不导数据)
docker exec -it db mysqldump -hourmall.cba3ed3vciqz.us-west-2.rds.amazonaws.com -uroot -proot123 --opt -d product > product.sql
# 导入数据
docker exec -i db mysql -uroot -proot123 product < product.sql