centos 遇到的一些问题及总结

最近在重温linux的知识,感觉还是有很多问题会出现将遇到的问题整理如下:

  1、在通过vitrualbox安装好mini版centos,在安装lnmp环境的时候需要yum安装wget

在命令行输入yum install wget回车的时候出现一下错误:

    wKioL1WQyKmy10q4AAFvIb2ZJ60922.jpg经过google和必应的搜索和验证最终发现是因为DNS配置错误,配置文件中没有配置DNS造成的需要修改以下2个地方:

  1) vi  /etc/sysconfig/network-scripts/ifcfg-eth0

      修改  ONBOOT=yes  MM_CONTROLLED=no 这2个选项

  保存后 重启network service network restart

  2) vi /etc/resolve.conf 默认是空文件需要写内容

  在里面添加一个可以使用的dns, nameserver dns IP地址 然后保存 

 最后重启下centos系统 一切正常使用


2、搭建好LNMP环境之后,出现了Access Denied错误,现已排除掉文件权限的问题也排除掉是Nginx的问题,而是无法解析PHP的问题。

发现网上的很多大牛都是通过Nginx的log来排查错误,但是打开nginx.conf发现其实我的log信息不够详细,于是希望能够配置一下log_format

配置Nginx的 log_format

    ①打开nginx.conf

    ②将原来的log_format那一行删掉,用下面这部分替换  

   log_format main '$remote_addr - $remote_user [$time_local] '  

    'fwf[$http_x_forwarded_for] tip[$http_true_client_ip] '  

    '$upstream_addr $upstream_response_time $request_time '  

    '$geoip_country_code '  

    '$http_host $request '  

    '"$status" $body_bytes_sent "$http_referer" '  

    '"$http_accept_language" "$http_user_agent" '  

③保存退出

重启nginx

打开nginx的日志文件,找到error.log,tail -f error.log,发现如下错误

wKioL1WQ-qzRkfljAAps7lJKeUA843.jpg

从第一行中可以发现是PHP报错,搜索问题,发现是因为php限定了php仅能运行的目录,现在只能在/tmp/文件夹下运行,所以在nginx的www-root文件夹下运行不了,所以发生了拒绝访问的错误

解决方案:

    ①打开php.ini文件

    ②找到open_basedir处

    ③将该行注释掉,注释掉的意思就是说php可以在任何文件夹下运行,如果希望能够在指定的文件夹下运行,则将open_basedir设定成相应的目录

    ④保存并退出

重启PHP-FPM service php-fpm restart

然后访问网页,发现解决了问题。

3、当启动php-fpm出现以下错误的时候

wKiom1WTR-yAtVNFAADUJM6YjrU252.jpg解决方案:

 ①找到php-fpm的配置文件 一般yum安装在 /etc/php-fpm.conf找user和group配置项 如果没有请看该文件最后一行

  ;See /etc/php-fpm.d/*.conf

 ②然后从 /etc/php-fpm.d/ 下面找到www.conf 找到user和group配置项 然后把值nignx改成nginx 然后重新启动fpm就可以了

1.安装tcl支持

yum install tcl

  

2.安装redis我们以最新的2.8.9为例

$ wget http://download.redis.io/releases/redis-2.8.9.tar.gz$ tar xzf redis-2.8.9.tar.gz$ cd redis-2.8.9
$ make$ make test$ make install

 

测试通过后安装,安装后会自动把redis-server,redis-cli,redis-benchmark,redis-check-aof,redis-check-dump复制到/usr/local/bin目录下。

编辑redis.conf文件

vi redis.conf

修改daemonize no改成yes。

我们手动复制redis.conf到/etc目录下

cp redis.conf /etc

编写自init.d脚本。

内容如下:

复制代码

############################chkconfig: 2345 10 90#description: Start and Stop redisPATH=/usr/local/bin:/sbin:/usr/bin:/bin
   
REDISPORT=6379EXEC=/usr/local/bin/redis-server
REDIS_CLI=/usr/local/bin/redis-cli
   
PIDFILE=/var/run/redis.pid
CONF="/etc/redis.conf"
   case "$1" in
    start)        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi        if [ "$?"="0" ] 
        then
              echo "Redis is running..."
        fi
        ;;
    stop)        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                $REDIS_CLI -p $REDISPORT SHUTDOWN                while [ -x ${PIDFILE} ]               do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
   restart|force-reload)        ${0} stop        ${0} start
        ;;  *)
    echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
        exit 1esac##############################

复制代码

可以通过winscp上传到/etc/init.d/目录下

修改权限,可以运行

chmod +x /etc/init.d/redis

设置开机自动启动服务

sudo chkconfig redis on

 

启动服务:

service redis start

停止服务:

service redis stop

 

配置防火墙打开对应的端口:

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

 重启防火墙

service iptables restart

源码编译安装一下php扩展
源码编译安装,去http://www.sourceforge.net下载Libmcrypt,mhash,mcrypt安装包
libmcrypt(libmcrypt-2.5.8.tar.gz ):
mcrypt(mcrypt-2.6.8.tar.gz ):
mhash(mhash-0.9.9.9.tar.gz ):



wget "http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz
wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz


2 .先安装Libmcrypt

#tar -zxvf libmcrypt-2.5.8.tar.gz
#cd libmcrypt-2.5.8
#./configure
#make
#make install 说明:libmcript默认安装在/usr/local

3.安装mhash

#tar -zxvf mhash-0.9.9.9.tar.gz
#cd mhash-0.9.9.9
#./configure
#make
#make install

4.安装mcrypt

#tar -zxvf mcrypt-2.6.8.tar.gz
#cd mcrypt-2.6.8
#LD_LIBRARY_PATH=/usr/local/lib ./configure
#make
#make install

最后,还是检查下,是否安装成功

(2)、安装php的mcrypt扩展(动态加载编译)
下载php下的mcrypt扩展或者直接下载php的完整安装包
http://www.php.net/releases/ 网页下找到自己服务器的php版本,下载后tar解压(本人的是php5.3.3)
进入ext/mcrypt文件夹
上传 mcrypt文件夹到你服务器的某个目录下然后进入此目录
执行phpize命令(phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,如果没有?yum install php53-devel里包含了,或者其他方法)

[root@*_* 14:48 mcrypt]# whereis phpize    //为了确定phpize存在
phpize: /usr/bin/phpize /usr/share/man/man1/phpize.1.gz
[root@*_* 14:48 mcrypt]# phpize
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626

执行完后,会发现当前目录下多了一些configure文件,最后执行php-config命令就基本完成了

执行以下命令,确保你的/usr/bin/php-config是存在的

[root@*_* 15:02 mcrypt]# whereis php-config
php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz
[root@*_* 15:02 mcrypt]# ./configure --with-php-config=/usr/bin/php-config

如果遇到以下错误,请先安装gcc,命令yum install gcc

configure: error: no acceptable C compiler found in $PATH

直到不报错,出现:config.status: creating config.h,执行以下命令

[root@*_* 15:06 mcrypt]# make && make install

最后的最后,会提示你如下,说明你大功告成了

Installing shared extensions:     /usr/lib64/php/modules/

顺便检查下/usr/lib64/php/modules/里的mrcypt.so扩展是否已经创建成功
然后的事就简单了,给你的php.ini添加一条extension=mcrypt.so

[root@*_* 15:09 mcrypt]# cd /etc/php.d

创建一个mrcypt.ini文件就行,里面写extension=mcrypt.so

[root@*_* 15:17 php.d]# echo 'extension=mcrypt.so' > mcrypt.ini


下载源文件安装包:
http://www.bzip.org/downloads.html
解压:
tar -xzvf bzip2-1.0.6.tar.gz
进入解压后的目录:
cd bzip2-1.0.6
为编译做准备,创建libbz2.so动态链接库(这一步很重要,安装python的时候如果没有这一步,python安装不上bz2模块):
make -f Makefile-libbz2_so
编译&&安装:
make && make install
至此,大功告成!

CentOS编译安装libcurl/curl添加异步DNS解析c-ares

发布时间:January 30, 2015 // 分类: // No Comments

在使用curl异步并发请求时如果有大量域名解析会长时间阻塞程序IO,可以编译升级libcurl以支持异步DNS解析。
Centos7自带libcurl已支持异步DNS支持,不过是--enable-threaded-resolver,可以使用curl-config --configure查看curl编译参数。
查看Libcurl是否已支持异步DNS解析,包含AsynchDNS为支持:

curl --version
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.40.0 OpenSSL/1.0.1e zlib/1.2.3
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM SSL libz

首先安装异步DNS解析库c-ares:

yum install c-ares-devel openssl-devel

编译libcurl库:

wget http://curl.haxx.se/download/curl-7.40.0.tar.gz
tar zxvf curl-7.40.0.tar.gz 
cd curl-7.40.0/
./configure --enable-ares --prefix=/usr/local/curl --with-ssl
make && make install

查看编译安装的curl信息,已经支持了异步DNS解析库c-ares:

/usr/local/curl/bin/curl --version
curl 7.40.0 (x86_64-unknown-linux-gnu) libcurl/7.40.0 OpenSSL/1.0.1e zlib/1.2.7 c-ares/1.10.0
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

将libcurl动态库添加到动态链接库:

echo '/usr/local/curl/lib' > /etc/ld.so.conf.d/libcurl.conf
ldconfig

使用libcurl库看是否支持c-ares:

#include <curl/curl.h>
int main()
{
 curl_version_info_data*info=curl_version_info(CURLVERSION_NOW);
 if (info->features&CURL_VERSION_ASYNCHDNS) {
   printf( "ares enabled\n");
 } else {
   printf( "ares NOT enabled\n");
 }
 return 0;
}

关于如何在linux编译安装LNMP可以参考我的blog : 


首先确定安装的php版本是线程安全的,如果不是的话重新编译加上 --enable-maintainer-zts \
1.解压tar -zxvf  pthreads-2.0.10.tgz ;
2.进入源码文件夹 cd pthreads-2.0.10
  执行 /usr/local/php/bin/phpize;
3.执行./configure --with-php-config=/usr/local/php/bin/php-config  --enable-maintainer-zts --enable-pthreads --prefix=/usr/local/php-threads
4.执行make && make install;
5.编辑/usr/local/php/lib/php.ini加上extension=pthreads.so
6.重启php就行了...
pthreads 安装error: pthreads requires ZTS,please re-compile PHP with ZTS enabled
研发的同事要求安装php pthread扩展!
tar zxvf pthreads-2.0.10.tgz
cd pthreads-2.0.10
/usr/local/php/bin/phpize
./configure --with-php-config --enable-maintainer-zts --enable-pthreads --prefix=/usr/local/php-threads
##但在configure时却出错,提示:
configure: error: pthreads requires ZTS, please re-compile PHP with ZTS enabled
原因: 我在编译php的时候没有加入 �Cenable-maintainer-zts ,这个必须要重新编译php,不能动态加载的!
于是我重新编译了php,在原来的编译参数基础上那个加入了 -enable-maintainer-zts ,重新编译安装php即可!
make
make install
并在php.ini中加入:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20131226" ##必须和你的目录相对应!
extension =pthreads.so
重启php服务!/etc/init.d/php-fpm restart

如果还是安装不上pthreads的话 可以按照下面的方法启动php-fpm
[root@***** ~]# killall php-fpm
[root@***** ~]# /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini
重新启动php-fpm 查看phpinfo可以看到
Configuration File (php.ini) Path /usr/local/phpb
Loaded Configuration File /usr/local/php/etc/php.ini 
只要加载对了ini文件 pthreads就可以了




tar zxvf php-5.6.10.tar.gz
cd php-5.6.10
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-mcrypt=/usr/local/libmcrypt --enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir --enable-maintainer-zts
--enable-maintainer-zts(线程安全)
make && make install
cp php.ini-production /usr/local/php/etc/php.ini#复制php配置文件到安装目录
rm -rf /etc/php.ini #删除系统自带配置文件
ln -s /usr/local/php/etc/php.ini /etc/php.ini #添加软链接到/etc目录
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf#拷贝模板文件为php-fpm配置文件
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf #添加软连接到/etc目录
vi /usr/local/php/etc/php-fpm.conf#编辑
user = nginx#设置php-fpm运行账号为nginx
group = nginx#设置php-fpm运行组为nginx
pid = run/php-fpm.pid#取消前面的分号
:wq!#保存退出
设置 php-fpm开机启动
cp /usr/local/src/php-5.6.10/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm#拷贝php-fpm到启动目录
chmod 777 /etc/rc.d/init.d/php-fpm#添加执行权限
chkconfig php-fpm on#设置开机启动
vi /usr/local/php/etc/php.ini#编辑配置文件
找到:disable_functions =
修改为: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
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:;date.timezone =
修改为:date.timezone = PRC#设置时区
找到:expose_php = On
修改为:expose_php = Off#禁止显示php版本的信息
找到:short_open_tag = Off
修改为:short_open_tag = ON#支持php短标签
找到opcache.enable=0
修改为opcache.enable=1#php支持opcode缓存
找到:opcache.enable_cli=1#php支持opcode缓存
修改为:opcache.enable_cli=0
在最后一行添加:extension=opcache.so#开启opcode缓存功能
:wq!#保存退出



Linux下查看mysql、apache是否安装,并卸载。

指令 ps -ef|grep mysql 得出结果

  1. root     17659     1  0  2011 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid   

  2. mysql    17719 17659  0  2011 ?        03:14:57 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock  

usr/bin/mysql 是指:mysql的运行路径 
var/lib/mysql 是指:mysql数据库文件的存放路径 
usr/lib/mysql 是指:mysql的安装路径

1,mysql 的守护进程是mysqld

如果已经安装则:

[root@localhost ~]# service mysqld start 
启动 MySQL:                                               [确定]

如果没有安装则:

[root@localhost ~]# service mysqld start 
mysqld:未被识别的服务

你可以看看你的服务是否已经添加到linux上

[root@localhost ~]# chkconfig --list mysqld 
mysqld          0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:启用  6:关闭

没有安装则: 
[root@localhost ~]# chkconfig --list mysqld 
在mysqld服务中读取信息时出错,没有那个文件或目录

一旦你启动了服务,可以这样检查服务器是否在运行

[root@localhost ~]# ps -el | grep mysqld 
4 S     0  1796     1  0  85   0 -  1513 wait   ?        00:00:00 mysqld_safe 
4 S    27  1856  1796  0  78   0 - 34055 -      ?        00:00:00 mysqld 
[root@localhost ~]# 
如果你看到有,就说明服务器安装起来了~~

linux下查看apache是否安装及版本

如通是通过rpm包安装的话直接用下面的命令: 
rpm -q httpd

也可以使用如下两种方法: 
httpd   -v

apachectl   -v

linux下卸载mysql方法

a. 查找已安装的myslq 版本: 
#rpm  -qa | grep  mysql (注意大小写,如果mysql 不行就换MySQL)

显示: 
[root@localhost ~]# rpm  -qa | grep  mysql 
mysql-5.0.77-4.el5_4.2 
mysql-server-5.0.77-4.el5_4.2 
php-mysql-5.2.13-1.el5.art 
复制代码 
在屏幕上将显示已安装的mysql包名如:mysql-5.0.77-4.el5_4.2 ;

将搜索出的包名卸载:

#rpm -e  �Cnodeps mysql-5.0.77-4.el5_4.2  (nodeps表示强制删除)

提示 
error: package �Cnodeps is not installed 
error: package mysql-.0.77-4.e15_.2 is not installed

Linux查看mysql 安装路径

一、查看文件安装路径

由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址)。

这里以mysql为例。比如说我安装了mysql,但是不知道文件都安装在哪些地方、放在哪些文件夹里,可以用下面的命令查看所有的文件路径 
在终端输入:

whereis mysql

回车,如果你安装好了mysql,就会显示文件安装的地址,例如我的显示(安装地址可能会不同)

[root@localhost ~]# whereis mysql 
mysql: /usr/bin/mysql /usr/lib/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

二、查询运行文件所在路径(文件夹地址)

如果你只要查询文件的运行文件所在地址,直接用下面的命令就可以了(还是以mysql为例):

which mysql

终端显示:

[root@localhost ~]# which mysql 
/usr/bin/mysql


跟随鸟哥的Linux私房菜进行学习的过程中,用locate 查找文件

提示

-bash: locate: command not found

那就先updatedb一下吧

提示

-bash: updatedb: command not found

baidu说updatedb 不能用先要安装 slocate

yum install slocate

提示

找不到 slocate 相应的包

 

 原来是mlocate已经替换slocate了-------


[root@localhost tmp]# yum -y install mlocate

Loaded plugins: fastestmirror              

Loading mirror speeds from cached hostfile 

* base: mirrors.btte.net                  

* extras: mirrors.btte.net                

* rpmforge: ftp.riken.jp                  

* updates: mirrors.btte.net               

Setting up Install Process                 

Resolving Dependencies                     

--> Running transaction check              

---> Package mlocate.i686 0:0.22.2-4.el6 set to be updated

--> Finished Dependency Resolution                       


Dependencies Resolved


==================================================================================================

Package                Arch                Version                     Repository           Size

==================================================================================================

Installing:                                                                                      

mlocate                i686                0.22.2-4.el6                base                 85 k


Transaction Summary

==================================================================================================

Install       1 Package(s)                                                                       

Upgrade       0 Package(s)                                                                       


Total download size: 85 k

Installed size: 273 k   

Downloading Packages:   

mlocate-0.22.2-4.el6.i686.rpm                                              |  85 kB     00:00    

Running rpm_check_debug                                                                          

Running Transaction Test                                                                         

Transaction Test Succeeded                                                                       

Running Transaction                                                                              

  Installing     : mlocate-0.22.2-4.el6.i686                                                  1/1


Installed:

  mlocate.i686 0:0.22.2-4.el6                                                                    


Complete!


但是

[root@localhost tmp]# locate passwd

locate: can not stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录

安装成功了,现在使用 updatedb 命令来创建locate命令依赖的数据库。

[root@localhost tmp]# updatedb

这样就OK了


CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14。


正文:

一:卸载旧版本


使用下面的命令检查是否安装有MySQL Server


rpm -qa | grep mysql

有的话通过下面的命令来卸载掉


rpm -e mysql   //普通删除模式

rpm -e --nodeps mysql    // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

二:安装MySQL


安装编译代码需要的包


yum -y install make gcc-c++ cmake bison-devel  ncurses-devel

下载MySQL 5.6.14


wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.14.tar.gz

tar xvf mysql-5.6.14.tar.gz

cd mysql-5.6.14

编译安装


cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci


make && make install

编译的参数可以参考http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html。


整个过程需要30分钟左右……漫长的等待


三:配置MySQL


设置权限


使用下面的命令查看是否有mysql用户及用户组


cat /etc/passwd 查看用户列表

cat /etc/group  查看用户组列表

如果没有就创建


groupadd mysql

useradd -g mysql mysql

修改/usr/local/mysql权限


chown -R mysql:mysql /usr/local/mysql

修改/usr/local/mysql权限


初始化配置


进入安装路径


cd /usr/local/mysql

进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表


scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!


注意:在CentOS 6.4版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。


在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。


启动MySQL


添加服务,拷贝服务脚本到init.d目录,并设置开机启动


cp support-files/mysql.server /etc/init.d/mysql

chkconfig mysql on

service mysql start  --启动MySQL

配置用户


MySQL启动成功后,root默认没有密码,我们需要设置root密码。


设置之前,我们需要先设置PATH,要不不能直接调用mysql


修改/etc/profile文件,在文件末尾添加


PATH=/usr/local/mysql/bin:$PATH

export PATH

关闭文件,运行下面的命令,让配置立即生效


source /etc/profile

现在,我们可以在终端内直接输入mysql进入,mysql的环境了


执行下面的命令修改root密码


mysql -uroot  

mysql> SET PASSWORD = PASSWORD('123456');

若要设置root用户可以远程访问,执行


mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.%' IDENTIFIED BY 'password' WITH GRANT OPTION;

红色的password为远程访问时,root用户的密码,可以和本地不同。


配置防火墙


防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口


打开/etc/sysconfig/iptables


在“-A INPUT �Cm state --state NEW �Cm tcp �Cp �Cdport 22 �Cj ACCEPT”,下添加:


-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT

然后保存,并关闭该文件,在终端内运行下面的命令,刷新防火墙配置:


service iptables restart

 

OK,一切配置完毕,你可以访问你的MySQL了~


------------------------------------------------------------------------------------------------------------------


2014年12月02日添加:


CentOS 7中默认使用Firewalld做防火墙,所以修改iptables后,在重启系统后,根本不管用。


Firewalld中添加端口方法如下:


firewall-cmd --zone=public --add-port=3306/tcp --permanent


firewall-cmd --reload


mysql主从配置uuid相同错误解决(mysql5.6)


配置mysql主从时,由于是拷贝的mysql目录,导致主从mysql uuid相同, Slave_IO无法启动,报错信息如下:

The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

解决办法:修改mysql data 目录下auto.cnf 文件中uuid的值,使两台mysql不同即可,修改后重启mysql服务。

Nginx配置文件详细说明

在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络.



#运行用户
user www-data;    
#启动进程,通常设置成和cpu的数量相等
worker_processes  1;

#全局错误日志及PID文件
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

#工作模式及连接数上限
events {
    use   epoll;             #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
    worker_connections  1024;#单个后台worker process进程的最大并发链接数
    # multi_accept on; 
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
     #设定mime类型,类型由mime.type文件定义
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    #设定日志格式
    access_log    /var/log/nginx/access.log;

    #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
    sendfile        on;
    #tcp_nopush     on;

    #连接超时时间
    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;
    
    #开启gzip压缩
    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    #设定请求缓冲
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    #设定负载均衡的服务器列表
     upstream mysvr {
    #weigth参数表示权值,权值越高被分配到的几率越大
    #本机上的Squid开启3128端口
    server 192.168.8.1:3128 weight=5;
    server 192.168.8.2:80  weight=1;
    server 192.168.8.3:80  weight=6;
    }


   server {
    #侦听80端口
        listen       80;
        #定义使用www.xx.com访问
        server_name  www.xx.com;

        #设定本虚拟主机的访问日志
        access_log  logs/www.xx.com.access.log  main;

    #默认请求
    location / {
          root   /root;      #定义服务器的默认网站根目录位置
          index index.php index.html index.htm;   #定义首页索引文件的名称

          fastcgi_pass  www.xx.com;
         fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name; 
          include /etc/nginx/fastcgi_params;
        }

    # 定义错误提示页面
    error_page   500 502 503 504 /50x.html;  
        location = /50x.html {
        root   /root;
    }

    #静态文件,nginx自己处理
    location ~ ^/(images|javascript|js|css|flash|media|static)/ {
        root /var/www/virtual/htdocs;
        #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
        expires 30d;
    }
    #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
    location ~ \.php$ {
        root /root;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name;
        include fastcgi_params;
    }
    #设定查看Nginx状态的地址
    location /NginxStatus {
        stub_status            on;
        access_log              on;
        auth_basic              "NginxStatus";
        auth_basic_user_file  conf/htpasswd;
    }
    #禁止访问 .htxxx 文件
    location ~ /\.ht {
        deny all;
    }
     
     }
}

以上是一些基本的配置,使用Nginx最大的好处就是负载均衡

如果要使用负载均衡的话,可以修改配置http节点如下:

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
     #设定mime类型,类型由mime.type文件定义
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    #设定日志格式
    access_log    /var/log/nginx/access.log;

    #省略上文有的一些配置节点

    #。。。。。。。。。。

    #设定负载均衡的服务器列表
     upstream mysvr {
    #weigth参数表示权值,权值越高被分配到的几率越大
    server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口
    server 192.168.8.2x:80  weight=1;
    server 192.168.8.3x:80  weight=6;
    }

   upstream mysvr2 {
    #weigth参数表示权值,权值越高被分配到的几率越大

    server 192.168.8.x:80  weight=1;
    server 192.168.8.x:80  weight=6;
    }

   #第一个虚拟服务器
   server {
    #侦听192.168.8.x的80端口
        listen       80;
        server_name  192.168.8.x;

      #对aspx后缀的进行负载均衡请求
    location ~ .*\.aspx$ {

         root   /root;      #定义服务器的默认网站根目录位置
          index index.php index.html index.htm;   #定义首页索引文件的名称

          proxy_pass  http://mysvr ;#请求转向mysvr 定义的服务器列表

          #以下是一些反向代理的配置可删除.

          proxy_redirect off;

          #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          client_max_body_size 10m;    #允许客户端请求的最大单文件字节数
          client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,
          proxy_connect_timeout 90;  #nginx跟后端服务器连接超时时间(代理连接超时)
          proxy_send_timeout 90;        #后端服务器数据回传时间(代理发送超时)
          proxy_read_timeout 90;         #连接成功后,后端服务器响应时间(代理接收超时)
          proxy_buffer_size 4k;             #设置代理服务器(nginx)保存用户头信息的缓冲区大小
          proxy_buffers 4 32k;               #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
          proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers*2)
          proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传

       }

     }
}


Redis安装和相关设置详细说明

1、安装需要的支持环境

在安装Redis之前首要先做的是安装Unix的Tcl工具,如果不安装的话后期将无法对Redis进行测试。在后期执行make test的时候返回如下错误信息:You need tcl 8.xuyao de5 or newer in order to run the Redis test,具体的流程为:

复制代码 代码如下:


cd /usr/local/src

wget http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz

tar -zxvf tcl8.6.3-src.tar.gz

cd tcl8.6.3/unix/

./configure

make

make install

2、安装redis

安装redis的过程非常的简单,具体教程官网也有。具体如下:http://redis.io/download

复制代码 代码如下:


cd /usr/local/src

wget http://download.redis.io/releases/redis-2.8.19.tar.gz

tar zxvf redis-2.8.19.tar.gz

cd redis-2.8.19

make

make PREFIX=/usr/local/redis install

其中PREFIX=/usr/local/redis可以省略,省略情况下redis会默认安装到/usr/local/bin目录下。

3、测试Redis

复制代码 代码如下:


cd src

make test

通过以上命令就要可以对redis进行加大的测试。

4、配置redis

A、复制并修改配置文档

复制代码 代码如下:


cp ./redis.conf /usr/local/redis/

vim /usr/local/redis/redis.conf

我只修改了如下两项:

daemonize yes #redis将以守护进程的方式运行,默认为no会暂用你的终端

timeout 300 #当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

更多的配置内容,后续梳理完成后再发布出来。

B、设置自动启动

复制代码 代码如下:


vim /etc/init.d/redis

文件中保存如下内容:

复制代码 代码如下:


#!/bin/sh

#

# redis        Startup script for Redis Server

#

# chkconfig: - 80 12

# description: Redis is an open source, advanced key-value store.

#

# processname: redis-server

# config: /etc/redis.conf

# pidfile: /var/run/redis.pid

source /etc/init.d/functions

BIN="/usr/local/redis/bin"

CONFIG="/usr/local/redis/redis.conf"

PIDFILE="/var/run/redis.pid"

### Read configuration

[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

RETVAL=0

prog="redis-server"

desc="Redis Server"

start() {

        if [ -e $PIDFILE ];then

             echo "$desc already running...."

             exit 1

        fi

        echo -n $"Starting $desc: "

        daemon $BIN/$prog $CONFIG

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog

        return $RETVAL

}

stop() {

        echo -n $"Stop $desc: "

        killproc $prog

        RETVAL=$?

        echo

        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE

        return $RETVAL

}

restart() {

        stop

        start

}

case "$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  restart)

        restart

        ;;

  condrestart)

        [ -e /var/lock/subsys/$prog ] && restart

        RETVAL=$?

        ;;

  status)

        status $prog

        RETVAL=$?

        ;;

   *)

        echo $"Usage: $0 {start|stop|restart|condrestart|status}"

        RETVAL=1

esac

exit $RETVAL

C、启动或关闭服务

复制代码 代码如下:


service redis start

service redis stop


5、使用redis

复制代码 代码如下:


[root@localhost redis]# cd /usr/local/redis/bin

[root@localhost bin]# ./redis-cli

127.0.0.1:6379> set foo bar

OK

127.0.0.1:6379> get foo

"bar"

127.0.0.1:6379>


  问题: 虚拟机使用桥接模式 设置好ssh iptables也开了但是xshell就是链接不上去的原因是

  wKioL1aQ5CqSuIjuAAAmB8DwW5Q247.png

  wKiom1aQ5DiCgno8AABGaWttnYE343.png

  

wKioL1aQ5XyyjRPrAABMtPzBxe8242.png

wKioL1aQ5X2zTiRfAAA5OwIY170428.png

wKioL1aQ5X3xpXGnAAA_zqbLB-w162.png

设置好这些内容重启后  为啥还是不行呢

首先从vmware的网络配置中可以看出桥接是用的真实网卡 nat模式用的是Vmnet8 hostonly用的是Vmnet1

所以就可以看出来问题如果Vmnet1和8有ip和真实网卡在一个网段的话 就会有问题 改了ip后重新用xshell连接就可以进去了


你可能感兴趣的:(centos)