服务器环境搭建

安装&注意点

apt-get install build-essential(gcc基本环境) 
apt-get install gcc 

apt-get install g++

yum install gcc 

yum install gcc-c++


1.mysql

1.下载mysql源码包

1.5 删除残留的mysql

删除 mysql


sudo apt-get autoremove --purge mysql-server-5.1
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common (非常重要)

上面的其实有一些是多余的,建议还是按照顺序执行一遍

清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

2.安装依赖包 

cmake

wget http://www.cmake.org/files/v2.8/cmake-2.8.6.tar.gz
tar zxvf cmake-2.8.6.tar.gz
cd cmake-2.8.6
./configure
make
make install

3.

#添加 mysql 用户组/用户

groupadd mysql
useradd -r -g mysql mysql

配置编译参数,开始编译

/usr/local/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DMYSQL_USER=mysql -DWITH_DEBUG=0 -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci

#编译安装

make && make install

#设置目录权限属性

chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql

#将 mysql 配置文件复制到系统的配置文件夹中

cp support-files/my-small.cnf /etc/my.cnf
chown mysql:mysql /etc/my.cnf
# 修改my.cnf的配置(略)


#数据库初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#执行完全安装脚本,(注:建议在生产中使用的服务器中对所有MySQL运行该脚本的所有部分!请仔细阅读每一步!)
/usr/local/mysql/bin/mysql_secure_installation (注意mysql.sock的权限)

添加到系统服务&开机启动

#将mysql的启动服务添加到系统服务中
cp support-files/mysql.server /etc/init.d/mysql.server 
#现在可以使用下面的命令启动mysql
service mysql.server start
#停止mysql服务
service mysql.server stop
#重启mysql服务
service mysql.server restart 
#将mysql服务添加到开机启动项,让mysql服务开机启动 
chkconfig --add mysql.server 
chkconfig --level 2345 mysql.server on

2.nginx

groupadd nginx #添加nginx 组

useradd -g nginx nginx -s /bin/false  #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统


tar zxvf nginx-1.0.12.tar.gz

cd nginx-1.0.12


./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_realip_module --with-pcre=/data/soft/pcre-8.35 --with-openssl=/data/soft/openssl-1.0.1g --with-zlib=/data/soft/zlib-1.2.8


注意:--with-pcre/openssl/zlib   这三项指向的是源码包解压的路径,而不是安装的路径,否则会报错
make
make && install

3.php(php-fpm)

前戏、php常用扩展的软件

yum -y install libtool

yum -y install zlib
yum -y install freetype
yum -y install libpng
yum -y install jpegsrc //
yum -y  install libpng-devel
yum -y install libjpeg-devel
yum -y install freetype-devel
yum -y install libxml2
yum -y install libxml2-devel
yum -y install pcre-devel
yum -y install curl
yum -y install curl-devel
yum -y install openssl

yum  install  php-mcrypt  libmcrypt  libmcrypt-devel

 

 
2、安装 jpeg
wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/jpeg-6b.tar.gz
mkdir -p /usr/local/jpeg6
mkdir -p /usr/local/jpeg6/bin
mkdir -p /usr/local/jpeg6/lib
mkdir -p /usr/local/jpeg6/include
mkdir -p /usr/local/jpeg6/man
mkdir -p /usr/local/jpeg6/man1
mkdir -p /usr/local/jpeg6/man/man1
tar -zxf jpeg-6b.tar.gz
cd jpeg-6b
./configure –prefix=/usr/local/jpeg6 –enable-shared –enable-static
make
make install
安装完成提示:
Libraries have been installed in:
/usr/local/jpeg6/lib
 
5、安装 GD
wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/gd-2.0.33.tar.gz
tar -zxf gd-2.0.33.tar.gz
cd gd-2.0.33
mkdir -p /usr/local/gd2
./configure –prefix=/usr/local/gd2 –with-jpeg=/usr/local/jpeg6/ –with-png=/usr/local/lib/ –with-zlib=/usr/local/lib/ –with-freetype=/usr/local/freetype/
make
make install
 
./configure --enable-shared --enable-static 这些lib这种包用默认路径就行。不然如果其他的需要这个包还得指它的路径
这里可能会出错
checking host system type… Invalid configuration `x86_64-unknown-linux-gnu ‘: machine `x86_64-unknown ‘ not recognized
checking build system type… Invalid configuration `x86_64-unknown-linux-gnu ‘: machine `x86_64-unknown ‘ not recognized
configure: error: libtool configure failed
或者
/libtool --mode=compile gcc -O2 -I. -c ./jcapimin.c
make: ./libtool:命令未找到
make: *** [jcapimin.lo] 错误 127
./libtool --mode=compile gcc -O2 -I. -c ./cjpeg.c
make: ./libtool:命令未找到
make: *** [cjpeg.lo] 错误 127
解决方法
cp /usr/share/libtool/config/config.guess .
cp /usr/share/libtool/config/config.sub .
cp到jpeg的安装文件目录,注意后面的个“.”
make clean
再重新
./configure --prefix=/usr/local/libjpeg/ --enable-shared --enable-static
make
make install
--------------------------------
如果已经安装php,建议通过追加编译安装
进入“[php解压目录]/ext/gd”目录,执行如下命令:
[php安装目录]/bin/phpize
Java代码
./configure --with-php-config=[php安装目录]/bin/php-config --with-jpeg=[jpeg-6b安装目录] --with-png=[libpng安装目录] --with-freetype=[freetype安装目录] --with-gettext=[gettext安装目录] --with-gd=[gd安装目录]
make
make install
安装成功后会在“[php安装目录]/lib/php/extensions/no-debug-non-zts-20060613”目录下生成gd.so文件,
然后cp [php安装目录]/lib/php/extensions/no-debug-non-zts-20060613/gd.so /opt/php/ext
修改php.ini文件加载gd组件,添加extension_dir=/opt/php/ext和extension=gd.so,如果有extension_dir=/opt/php/ext则不需要增加
Java代码
extension_dir=/opt/php/ext
extension=gd.so

 

 

 

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl=/usr/lib --with-gd=/usr/local --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-safe-mode --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir=/usr/ 
 
// 装PHP显示gd 必须>= 2.1.0
// 安装最新版gd库ok
// 装PHPconfigure OK,make时显示缺少libxpm,需要装libXmp-devel,yum中没找到
// yum install gd
// --with-gd=/usr/local/ => --with-gd 自动找系统的gd库路径 OK了
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir

PHP5.4
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir --with-mcrypt --without-pear --without-pdo-sqlite

PHP5.5+
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --with-mysqli --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir --with-mcrypt --with-pdo-mysql --without-pdo-sqlite --without-pear --enable-opcache

ZTS 线程安全
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/lib --with-curl --with-gd --enable-gd-jis-conv --enable-gd-native-ttf --with-mysql --with-mysqli --enable-fpm --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir --enable-xml --disable-debug --enable-mbstring --enable-soap --enable-sockets --enable-zip --with-openssl-dir --with-mcrypt --with-pdo-mysql --without-pdo-sqlite --without-pear --enable-opcache --enable-maintainer-zts


确保
yum install openssl openssl-devel
才能装上--with-openssl-dir

yum install httpd-devel for /usr/bin/apxs
--with-apxs=/usr/bin/apxs 可以编译出libphp.so for apache

  • –enable-opcache:这个配置是在5.5中新增的。Zend Opcache已被集成到PHP 5.5的核心中,这个配置用于在你编译PHP 5.5时启用opcache。它默认是禁用的。

将命令加入系统环境变量
修改/etc/profile文件,添加
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin
export PATH
最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。

4.memcached

memcached -p 11211 -l 127.0.0.1 -d -u nobody -P /data/run/memcached/memcached.pid -m 64M -c 32

telnet localhost 11211

5.apache

启用rewrite
LoadModule rewrite_module modules/mod_rewrite.so 

启用.htaccess 
Options FollowSymLinks 
AllowOverride None 
改为 
Options FollowSymLinks 
AllowOverride All 

6.redis

groupadd redis
useradd -g redis -d /home/redis -m redis
-g 指定所属的用户组
-d -指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
最后的-m之后的“redis” 是用户名

以 redis 用户身份运行
su redis -c "/path/to/redis-server /path/to/redis.conf"


服务的运维

1.apache

apache重启
httpd -t

apachectl configtest
apache2ctl configtest
检查配置文件

/var/www/bin/httpd -k restart

 

 

2.nginx

启动:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
强制关闭:kill -9 nginx
平滑重启:/usr/local/nginx/sbin/nginx -s reload

 

3.php-fpm

php 5.3.3 下的php-fpm 不 再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,需要使用信号控制:

master进程可以理解以下信号

INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块

示例:
php-fpm 开启:
{phpdir}/sbin/php-fpm
php-fpm 关闭:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

 

4.mysql

10、只需本机使用Mysql服务,在启动时还可以加上--skip-networking参数使Mysql不监听任何TCP/IP连接
(./safe_mysqld --skip-networking &),增加安全性。(非常推荐)

 

1、通过rpm包安装的MySQL

service mysqld restart

2、从源码包安装的MySQL

// linux关闭MySQL的命令

$mysql_dir/bin/mysqladmin -uroot -p shutdown

// linux启动MySQL的命令

$mysql_dir/bin/mysqld_safe &

当MySQL启动时,在没有指定配置文件位置时,MySQL会按顺序到下面一些路径去读取配置文件:
在unix环境下:
1. /etc/my.cnf
2. DATADIR/my.cnf
3. ~/.my.cnf
 
在Windows环境:
1. %SystemRoot%/my.ini
2. c:\my.cnf
 
也可以通过命令行参数来告诉MySQL要读取的配置文件:
--no-defaults
没有配置文件
 
--defaults-file=/PATH/TO/FILE
/PATH/TO/FILE 就是配置文件位置及文件名, 如D:\MySQL5\my.ini, 
让MySQL只读取这个配置文件,额外的配置文件可以通过下面的参数指定。
 
--defaults-extra-file=/PATH/TO/FILE
指定一个额外的配置文件
 
如在Windows环境下要安装一个MySQL服务,即可使用如下命令行:
D:\MySQL5\bin\mysqld --install MySQL5 --defaults-file=D:\MySQL5\my.ini
 
如果%SystemRoot%/my.ini 里指定了MySQL的端口是3306,而c:\my.cnf却指定了是3308,那么MySQL会以后者为准。
注意:配置文件可以是多个,相同的设置,会以最后一个配置文件的设置为准。
 
当需要在同一台主机上运行多个MySQL Server的时候,可以把相同的设置写在/etc/my.cnf里,不同的设置保存在各自的DATADIR/my.cnf。

 

5.memcached

 

 

配置&调优

1.apache

2.nginx

3.php(php-fpm)

PHP5.3 起的fast-cgi进程管理方式:
;pm = dynamic
pm = static

如果设置成static,php-fpm进程数自始至终都是pm.max_children指定的数量,不再增加或减少。

如果设置成 dynamic,则php-fpm进程数是动态的,最开始是pm.start_servers指定的数量,如果请求较多,则会自动增加, 保证空闲的进程数不小于pm.min_spare_servers,如果进程数较多,也会进行相应清理,保证多余的进程数不多于 pm.max_spare_servers。

这两种不同的进程管理方式,可以根据服务器的实际需求来进行调整。

这里先说一下涉及到这个的几个参数,他们分别是pm、pm.max_children、pm.start_servers、pm.min_spare_serverspm.max_spare_servers

pm表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。这个要注意看配置文件的说明。

下面4个参数的意思分别为:
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。

如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和 pm.max_spare_servers之间调整php-fpm进程数。

那么,对于我们的服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。这也是为什么开始的时候一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。

对于内存大的服务器(比如8G以上)来说,指定静态的max_children实际上更为妥当,因为这样不需要进行额外的进程数目控制,会提高效 率。因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到,比如8GB内存可以设置为100,那么php-fpm耗费的内存就能控制在 2G-3G的样子。如果内存稍微小点,比如1G,那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证php-fpm只获取够用的内存,将不多的 内存分配给其他应用去使用,会使系统的运行更加畅通。

对于小内存的服务器来说,比如256M内存的VPS,即使按照一个20M的内存量来算,10个php-cgi进程就将耗掉200M内存,那系统的崩 溃就应该很正常了。因此应该尽量地控制php-fpm进程的数量,大体明确其他应用占用的内存后,给它指定一个静态的小数量,会让系统更加平稳一些。或者 使用动态方式,因为动态方式会结束掉多余的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服 务器的负载情况来设置,比较合适的值在5~10之间。

 

4.mysql

5.memcached


可能出现的问题



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章