分类目录归档:Linux

Linux服务器配置、安全设置、常见问题等

linux top 命令详解 [Debian 9为例]

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 — 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)

内容解释:

第一行(top):
  15:24:36 系统当前时刻
  14 days 系统启动后到现在的运作时间
  3 users 当前登录到系统的用户,更确切的说是登录到用户的终端数 — 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目
  load average 当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程

第二行(Tasks):
  288 total 当前系统进程总数
  1 running 当前运行中的进程数
  287 sleeping 当前处于等待状态中的进程数
  0 stoped 被停止的系统进程数
  0 zombie 僵尸进程数

第三行(Cpus):
  7.3% us 用户空间占用CPU百分比
  2.0% sy 内核空间占用CPU百分比
  0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
  90.4% id 空闲CPU百分比
  0.3% wa 等待输入输出的CPU时间百分比
  0.0% hi
  0.0% si
  0.0% st

第四行(Mem):
  2042616 total 物理内存总量
  1770116 used 使用的物理内存总量
  272500 free 空闲内存总量
  163912 buffers 用作内核缓存的内存量

第五行(Swap):

表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
  2094076 total 交换区总量
  45052 used 使用的交换区总量
  2049024 free 空闲交换区总量
  346624 cached 缓冲的交换区总量

最下部分的进程列表栏:

以 PID 区分的进程列表将根据所设定的画面更新时间定期的更新。通过 top 内部命令可以控制此处的显示方式:
  PID:进程的ID
  USER:进程所有者
  PR:进程的优先级别,越小越优先被执行
  NInice:值
  VIRT:进程占用的虚拟内存
  RES:进程占用的物理内存
  SHR:进程使用的共享内存
  S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
  %CPU:进程占用CPU的使用率
  %MEM:进程使用的物理内存和总内存的百分比
  TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
  COMMAND:进程启动命令名称

top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下表:
  s- 改变画面更新频率
  l – 关闭或开启第一部分第一行 top 信息的表示
  t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
  m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
  N – 以 PID 的大小的顺序排列表示进程列表(第三部分后述)
  P – 以 CPU 占用率大小的顺序排列进程列表 (第三部分后述)
  M – 以内存占用率大小的顺序排列进程列表 (第三部分后述)
  h – 显示帮助
  n – 设置在进程列表所显示进程的数量
  q – 退出 top
  s -改变画面更新周期

SVN 服务器迁移记录

写在前面:

两服务器均为Debian系统,原服务器subversion版本(svnadmin –version):version 1.8.10 (r1615264),新服务器版本:version 1.9.5 (r1770682);

1、原服务器备份:

user@debian:~# svnadmin dump /home/subver/xxx > xxx.dump

将生成的备份文件转移至新服务器

2、新服务器安装subversion

user@debian:~# apt-get install subversion

3、新服务器导入原服务器备份文件

创建项目文件

user@debian:~# svnadmin create /home/subver/xxx

修改配置文件 /home/subver/xxx/conf/svnserve.conf : 去掉anon-access = read、auth-access = write、password-db = passwd 三行前面的 # 和空格

修改配置文件 /home/subver/xxx/conf/passwd : 新加入一行 : 你的用户名 user = 密码

导入备份文件

user@debian:~# svnadmin load /home/subver/xxx < xxx.dump

4、启动svn服务

user@debian:~# svnserve -d -r /home/subver –listen-port 8000

debian安装使用[持续更新]

1、版本选择:

debian-8.6.0-amd64-netinst

2、默认安装。
3、安装vim

$ su //切换为root用户
$ apt-get install vim-gtk //开始安装vim

4、更改桌面分辨率。
找不到1920*1080 ?

1)$ cvt 1920 1080
2)$ xrandr
3)$ xrandr –newmode “1920x1080_60.00” 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync  // 复制1)结果
4)$ xrandr –addmode Virtual-0 “1920x1080_60.00”  // 于2)中寻找结果
5)找到system setting > display,在 resolution列表下可以看到1920×1080的选项,勾选并apply
6)$ vim /etc/profile

在最后添加如下命令:
xrandr –newmode “1920x1080_60.00” 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr –addmode Virtual-0 “1920x1080_60.00”

 

5、安装Chromium

$ apt-get update
$ apt-get -f install
$ apt-get install chromium chromium-l10n

6、 安装Yakuake

$ apt-get install yakuake

7、安装QQ
此处包含错误操作,,,,,但最终得以成功!

apt-get install ia32-libs*
dpkg -i –force-all *.deb
dpkg -i wine-qqintl_0.1.3-2_i386.deb
dpkg -i –force-all wine-qqintl_0.1.3-2_i386.deb
dpkg –add-architecture i386
aptitude update
aptitude install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
dpkg -i –force-all wine-qqintl_0.1.3-2_i386.deb
add-apt-repository ppa:wine/wine-builds;sudo apt-get update;sudo apt-get install winehq-devel
add-apt-repository ppa:wine/wine-builds;apt-get update;apt-get install winehq-devel
add-apt-repository ppa:ubuntu-wine/ppa
vim /etc/apt/sources.list
# //添加 deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main
# //添加 deb-src http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main
apt-get update
apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 5A9A06AEF9CB8DB0
apt-get update
apt-get -f install
apt-get install wine1.7
aptitude update

8、配置LAMP环境。

$ apt-get install apache2
$ a2enmod rewrite // 开启rewrite
$ apt-get install mysql-server
$ apt-get install php5 php-pear

Centos 6.2 配置记录

在Centos 6.2 【64位】上编译安装LAMP几次都不成功,转向RPM包安装,还算顺利地完工了。
问题记录:
1、unpacking of archive failed on file /usr/share/phpMyAdmin/tbl_relation.php;5….
RPM包损坏或者失效,重新找资源下载、安装;搞定;
2、提示依赖程序没安装;
按提示去搜索相应的RPM包安装上去。这里记录几个比较好的RPM包下载网址:

http://pkgs.org/
http://rpms.southbridge.ru/rhel6/
http://rpmfind.net/linux/

3.顺利安装成功,绑定域名,无法访问?
低级错误:配置防火墙、关闭SELINUX、重启;OK;
 
附录:相关配置
一、Apache配置
vi /etc/httpd/conf/httpd.conf 编辑文件
ServerTokens OS  在44行 修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On  在536行 修改为:ServerSignature Off (在错误页中不显示Apache的版本)
Options Indexes FollowSymLinks  在331行 修改为:Options Includes ExecCGI FollowSymLinks(允许服务器执行CGI及SSI,禁止列出目录)
#AddHandler cgi-script .cgi 在796行 修改为:AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)
AllowOverride None  在338行 修改为:AllowOverride All (允许.htaccess)
AddDefaultCharset UTF-8 在759行 修改为:AddDefaultCharset GB2312 (添加GB2312为默认编码)
Options Indexes MultiViews FollowSymLinks 在554行 修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)
DirectoryIndex index.html index.html.var 在402行 修改为:DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (设置默认首页文件,增加index.php)
KeepAlive Off 在76行 修改为:KeepAlive On (允许程序性联机)
MaxKeepAliveRequests 100 在83行 修改为:MaxKeepAliveRequests 1000 (增加同时连接数)
:wq! #保存退出
/etc/init.d/httpd restart 重启
rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html #删除默认测试页
二、php配置
vi /etc/php.ini #编辑
date.timezone = PRC #在946行 把前面的分号去掉,改为date.timezone = PRC
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#在386行 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
expose_php = Off #在432行 禁止显示php版本的信息
magic_quotes_gpc = On #在745行 打开magic_quotes_gpc来防止SQL注入
open_basedir = .:/tmp/ #在380行,设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,如果改了之后安装程序有问题,可注销此行,或者直接写上程序目录路径/var/www/html/www.osyunwei.com/:/tmp/
:wq! #保存退出
/etc/init.d/mysqld restart #重启MySql
/etc/init.d/httpd restart #重启Apche
 

You don't have permission to access / on this server.

Apache Http Server已经在linux上安装完成,可是通过浏览器访问,却出现了“you don’t have permission to access / on this server”.
到网上Google了下,大致有以下2种解决办法:
1.在httpd.conf文件中,有这么一段
<Directory/>
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
可以尝试把Deny改成Allow,然后重启apache服务,看问题是否解决。
2.在Apache的wiki上有关于PermissionDenied的另一种解决方法,链接是http://wiki.apache.org/httpd/13PermissionDenied,
全文翻译如下:
(13)Error 13 指的是文件系统的访问权限错误。也就是由于错误的权限,apache被拒绝访问。
一般的来说,这并不意味着是Apache配置文件存在错误。
为了给文件提供服务,Apache必须有适当的权限去访问那些文件,这些权限是由操作系统授予的。
特别的,在httpd.conf文件中,指出了User或者Group必须能够读取所有被服务的文件,以及查找包含那些文件的目录,
和所有的父目录直至文件系统的根。
在对一个unix-like的系统上的不属于User或Group的资源进行访问时,这里的User或Group是在httpd.conf的文件中指定的,典型的访问权限,对于普通的文件是644 -rw-r–r–,对于文件夹或者CGI脚本是755 drwxr-x-r-x。你也可能需要去查看操作系统所支持的扩展的访问权限(例如SELinux访问权限).
例子:
假如当访问位于unix-like系统上的/usr/local/apache2/htdocs/foo/bar.htm文件时,你收到了Permission Denied的错误,首先去查看文件上存在的访问权限:
$ cd /usr/local/apache2/htdocs/foo
$ ls -l bar.htm
如果须要的话,就修复它们:
$ chmod 644 bar.html
然后对文件夹以及每个父文件夹(/usr/local/apache2/htdocs/foo,/usr/local/apache2/htdocs,/usr/local/apache2,/usr/local/,/usr)做相同的操作:
$ ls -la
$ chmod +x
$ cd ..
#重复操作直到最顶层
在一些系统上,可使用工具namei来列出各个路径上的不同组件的访问权限,然后去发现是否有权限问题:
$ namei -m /usr/local/apache2/htdocs/foo/bar.html
如果标准的访问权限配置是正确的,你仍然得到一个Permission Denied的错误,你应该去查看扩展的访问权限。
例如,你可以使用命令setenforce 0去关闭SELinux,来查看是否有错误。
如果有错误,可以使用命令ls -alz去查看SELinux的访问权限,并使用chcon来修复它们。
不要将文件或文件夹的mode设置为777,即使“只用来测试”。测试服务器的目的是在安全的环境下保证事情是正确的,而不是错误地绕开。
3.郁闷的是,对于我的机器这两种方法都不行,把http.conf又看了几遍,问题依然还在。最后仔细想来一下,问题应该处在虚拟机上安装Linux的时候有一些development的rpm包没有装,这样Linux在首次装上然后进行配置的时候,就会出现一些类似于域名,权限,不能自动获取IP地址的问题。即使在原来的系统上进行更新Linux也是解决不了的。这样一来,解决办法有了,将原来的Linux系统删掉,重新安装,果然,问题解决,通过宿主机器去访问虚拟机中Linux系统的apache,It works!

Apache服务器的进程优化[转]

服务器的优化
(MPM: Multi-Processing Modules)
apache2主要的优势就是对多处理器的支持更好,在编译时同过使用–with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制,可以通过httpd -l命令列出apache的所有模块,就可以知道其工作方式:
prefork:
如果httpd -l列出prefork.c,则需要对下面的段进行配置:
StartServers 5 #启动apache时启动的httpd进程个数。
MinSpareServers 5 #服务器保持的最小空闲进程数。
MaxSpareServers 10 #服务器保持的最大空闲进程数。
MaxClients 150 #最大并发连接数。
MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。
在该工作模式下,服务器启动后起动5个httpd进程(加父进程共6个,通过ps -ax|grep httpd命令可以看到)。当有用户连接时,apache会使用一个空闲进程为该连接服务,同时父进程会fork一个子进程。直到内存中的空闲进程达到 MaxSpareServers。该模式是为了兼容一些旧版本的程序。我缺省编译时的选项。
worker:
如果httpd -l列出worker.c,则需要对下面的段进行配置:
StartServers 2 #启动apache时启动的httpd进程个数。
MaxClients 150 #最大并发连接数。
MinSpareThreads 25 #服务器保持的最小空闲线程数。
MaxSpareThreads 75 #服务器保持的最大空闲线程数。
ThreadsPerChild 25 #每个子进程的产生的线程数。
MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。
该模式是由线程来监听客户的连接。当有新客户连接时,由其中的一个空闲线程接受连接。服务器在启动时启动两个进程,每个进程产生的线程数是固定的 (ThreadsPerChild决定),因此启动时有50个线程。当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。
perchild:
如果httpd -l列出perchild.c,则需要对下面的段进行配置:
NumServers 5 #服务器启动时启动的子进程数
StartThreads 5 #每个子进程启动时启动的线程数
MinSpareThreads 5 #内存中的最小空闲线程数
MaxSpareThreads 10 #最大空闲线程数
MaxThreadsPerChild 2000 #每个线程最多被请求多少次后退出。0不受限制
MaxRequestsPerChild 10000 #每个子进程服务多少次后被重新fork。0表示不受限制。
该模式下,子进程的数量是固定的,线程数不受限制。当客户端连接到服务器时,又空闲的线程提供服务。 如果空闲线程数不够,子进程自动产生线程来为新的连接服务。该模式用于多站点服务器。

Webmin/Virtualmin 同一网站绑定多域名

进入webmin/virtualmin,点击左侧的“Create Virtual Server【创建虚拟服务器】”,然后点击右上侧的“xxx.com的别名”,这样就创建了一个xxx.com的别名站点,两个域名使用同一个文件路径,绑定了俩域名~~
在webmin / Virtualmin中创建站点,共有四种站点类型,默认就是top-level server,待系统中有了站点后,再次创建时,将会出现刚才所说的四种类型可选。
点击左侧的 creat virtual server【创建虚拟服务器】,右侧顶部会出现四个创建的类型:

1、top-level server【根服务器】
2、sub-server【子服务器】
3、alias of xxx.com【xxx.com的别名】
4、alias of xxx.com, with own email

第一种,不用说了,顶级站点,即一个全新的站点;第二个,子站点,即使用子域名的站点;第三个,别名站点,就是所谓的“多域名指向同一个站点”,别名;第四个,与第三个一样,只是将主站点的邮件设置也复制了。
这样一来,在用webmin/virualmin创建站点时,就方便、明白多了。

CentOS6.2搭建LAMP平台[转发]

1.安装MySQL 5.0
打开终端,输入:

yum install mysql mysql-server

然后为MySQL创建系统启动链接(这样在系统启动时,MySQL会自动启动),在终端输入命令:

chkconfig –levels 235 mysqld on
/etc/init.d/mysqld start

为MySQL root帐户设置密码:

mysql_secure_installation

终端显示,按照提示操作:

[root@server1 ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
Set root password? [Y/n] <– 回车
New password: <– 设置一个用户密码
Re-enter new password: <– 再输入一次你设置的密码
Password updated successfully!
Reloading privilege tables..
… Success!
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] <– 回车
… Success!
Normally, root should only be allowed to connect from ’localhost’. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <–回车
… Success!
By default, MySQL comes with a database named ’test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <– 回车
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <– 回车
… Success!
Cleaning up…
All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!
[root@server1 ~]#

2.安装的Apache2

yum install httpd

配置系统启动时自动启动apache

chkconfig –levels 235 httpd on

重启apache:

/etc/init.d/httpd start

在您的浏览器直接http://192.168.0.100,你应该看到apache2的页面:
在CentOS中Apache的默认文档的根目录是/var/www/html,配置文件/etc/httpd/conf/httpd.conf。其他配置存储在/etc/httpd/conf.d/目录里。
3.Installing PHP5
我们可以安装PHP5和Apache PHP5模块,命令如下:

yum install php

安装完成后必须重新启动Apache

/etc/init.d/httpd restart

4.测试PHP5 /获取PHP5安装的详细信息
默认的Web站点的文档根目录/var/www/html 。现在,我们将在该目录中创建PHP探针文件((info.php),在浏览器中调用它 。该文件将显示很多有用的细节,看看我们安装的php模块安装时候完成。

vi /var/www/html/info.php

现在,在浏览器打开(如文件http://192.168.0.100/info.php):
正如您所看到的,PHP5工作正常,如果继续向下滚动,你会看到所有在PHP5中已经启用的模块 。没有MySQL,这意味着我们php5中还没有MySQL支持模块。
5.在PHP5中添加MySQL支持

yum search php

挑选那些你需要的模块,安装:

yum install php-mysql php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc

现在重新启动Apache2

/etc/init.d/httpd restart

6.安装phpMyAdmin管理数据库
phpMyAdmin是一个Web界面,通过它可以管理你的MySQL数据库。
首先,我们使我们的CentOS 系统的RPMForge软件库phpMyAdmin是不是官方的CentOS 6.0库:
导入rpmforge的GPG密钥:

rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

x86_64 系统安装命令:

yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

i386 系统安装命令:

yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

现在可以安装phpMyAdmin如下:

yum install phpmyadmin

现在,我们配置phpMyAdmin。改变Apache的配置,使phpMyAdmin连接,而不仅仅是从localhost(注释掉允许) :

vi /etc/httpd/conf.d/phpmyadmin.conf
#
# Web application to manage MySQL
#
#
# Order Deny,Allow
# Deny from all
# Allow from 127.0.0.1
#
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin

下一步,我们改变在phpMyAdmin的身份验证 cookie ,HTTP:

vi /usr/share/phpmyadmin/config.inc.php[…]
$cfg[‘Servers’][$i][‘auth_type’] = ‘http’;
[…]

重新启动Apache:

/etc/init.d/httpd restart

之后,您可以根据访问phpMyAdmin http://192.168.0.100/phpmyadmin/管理数据库: