设为首页 收藏本站
查看: 1323|回复: 0

[Web服务器搭建][LNMP]Centos6.3x64+nginx1.6+php5.5(fastcgi)+mysql5.5搭建

[复制链接]

尚未签到

发表于 2015-11-16 12:31:20 | 显示全部楼层 |阅读模式
  一,安装前准备
  1,,PCRE
  在这之前要安装PCRE,它是perl所用的正则表达式,目的让所安软件支持正则表达式,默认情况下nginx只处理静态页面,动态页面脚本需要根据正则查找路径交给php处理。
  首先查看系统自带的PCRE
  rpm -qa | grep pcre
  一般系统都会自带,要删除系统自带的,在这之前要备份一下libpcre.so.0这个文件,因为RPM包关联性强,在删除后没有libpcre.so.0这个文件是安不上pcre的
  cp /lib64/libpcre.so.0 /
  然后删除pcre
  rpm -e --nodeps pcrexxxx
  tar zxvf pcrexxx.tar.gz
  cd pcrexxx
  cp /libpcre.so.0 /lib64/libpcre.so.0
  ./configure
  make && make install
  2,安装必须的lib工具库
  yum -y install openssl* gd gd2 gd-devel gd2-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curlcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers make autoconf automake

  二,安装nginx,mysql,php
  1,安装nginx
  要求:GCC编译器和相关工具,还需要有autoconf和automake工具,用于自动创建功能完善的makefile,当前大多数软件包都是用着一工具生成的makefile的,nginx也是,模块依赖性:nginx一些模块需要第三方库,如gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库。
  mkdir -p /usr/local/nginx
  /usr/sbin/groupadd nginx
  /usr/sbin/useradd -g nginx nginx
  ulimit -SHn 65535
  tar zxvf nginx-1.6.0.tar.gz
  cd nginx-1.6.0
  ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http-stub_status_module
  make && make install
  检查是否安装成功
  /usr/local/nginx/sbin/nginx -t
  ./nginx :error while loading shared libraries:libpcre.so.1:cannot open shared object file:No such file or directory缺少lib文件
  ldd $(which /usr/local/nginx/sbin/nginx)
DSC0000.jpg DSC0001.jpg

  ln -s /usr/local/lib/libpcre.so.1 /lib64
  结果显示:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

  启动nginx
  /usr/local/nginx/sbin/nginx
  ps -ef | grep nginx




  启动,停止
  启动:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  "-c"指定配置文件路径,默认加载安装目录下conf下的配置文件
  停止:一般通过发送系统信号给Nginx主进程方式停止nginx
  ps -ef | grep nginx
  如果在nginx.conf配置文件中指定了pid文件存放的路径(例如:/usr/local/nginx/logs/nginx.pid),如果没有指定pid文件存放的路径,nginx.pid文件默认存放在nginx安装目录的logs目录下
  从容停止:kill - QUIT nginx主进程号 或者 kill - QUIT /usr/local/nginx/logs/nginx.pid
  快速停止:KILL -TERM nginx主进程号 或者 kill -TERM /usr/local/nginx/logs/nginx.pid
     kill -INT nginx主进程号 或者 kill -INT /usr/local/nginx/logs/nginx.pid
  强制停止所有nginx进程
  pkill -9 nginx
  2,安装mysql
  mkdir -p /usr/local/mysql
  mkdir -p /var/local/mysql/data
  groupadd mysql
  useradd -g mysql mysql
  chown mysql:mysql -R /var/local/mysql/data
  tar zxvf cmake-2.8.4.tar.gz
  cd cmake-2.8.4
  ./configure
  make && make install
  tar zxvf mysql-5.5.37.tar.gz
  cd mysql-5.5.37
  cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5 -DMYSQL_DATADIR=/var/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_USER=mysql -DWITH_DEBUG=0 -DENABLED_LOCAL_INFILE=1

  编译选项说明:
  //mysql安装的主目录,5.5.8版本默认为/usr/local/mysql,所以可以不添加
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
//mysql数据保存的路径,自定义
-DMYSQL_DATADIR=/home/system_username/mysql/mysqldata
//mysql配置文件地址------The default my.cnf option file directory
-DSYSCONFDIR=/etc
//Compile storage engine xxx statically into server
/*Storage engines are built as plugins. You can build a plugin as a static module (compiled into the server)
*or a dynamic module  (built as a dynamic library that must be installed into the server using the INSTALL
*PLUGIN statement or the --plugin-load option before it can be used). Some plugins might not support static
*or dynamic building.


*/
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
  //Unix socket file
/**The Unix socket file path on which the server listens for socket connections. This must be an absolute path  *name. The default is /tmp/mysql.sock
*/
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock
//数据库服务器TCP/IP连接的监听端口,默认为3306
-DMYSQL_TCP_PORT=3306
//Whether to enable LOCAL capability in the client library for LOAD DATA INFILE
//默认为关闭,这里开启
-DENABLED_LOCAL_INFILE=1
/数据库编码设置
-DWITH_EXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci

  make && make install
  cp support-files/my-huge.cnf /etc/my.cnf
  内存1-2g选huge比较好
  vi /etc/my.cnf
  可以根据需要在[mysql]下增加
  //同时设置才生效
  interactive_timeout = 100
  wait_timeout = 100
  max_connections = 1500
  max_connect_errors =1500
  default-storage-engine=MyISAM
  创建启动脚本
  cp support-files/mysql.server /etc/init.d/mysqld
  chmod 755 /etc/init.d/mysqld
  初始化mysql并生成授权库
  bash scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/local/mysql
  启动mysql
  /etc/init.d/mysqld start
  登陆
  /usr/local/mysql/bin/mysql -uroot -p
  修改密码
  use mysql
  update user set password=PASSWORD("xxxxx") where user = 'root'
  FLUSH PRIVILEGES
  将mysql加入启动项,设置成服务启动
  chkconfig -add mysqld
  chkconfig --level 345 mysqld on
  service mysqld restart
  注意 mysql5.5以后的tart包是cmake安装的,而不是之前的autotools即configure方式
  3,安装php(fast-cgi)
  安装基本依赖库
  tar zxvf jpegsrc.v9.tar.gz
cd jpeg-9/
./configure
make && make install
cd ../

  tar zxvf libpng-1.6.2.tar.gz
cd libpng-1.6.2/
./configure
make && make install
cd ../
  tar zxvf freetype-2.4.12.tar.gz
cd freetype-2.4.12/
./configure
make && make install
cd ../
  tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8/
./configure
make
make install
cd libltdl/
./configure  --enable-ltdl-install
make
make install
  cd ../../
  tar zxvf mhash-0.9.9.9.tar.gz
cd mhash-0.9.9.9/
./configure --prefix=/server/libs
make
make install
cd ../

  对共享库做符号链接
  ln -s /usr/local/lib/libmcrypt.la /usr/lib64/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib64/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib64/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib64/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib64/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib64/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib64/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib64/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib64/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config
ln -s /usr/local/webserver/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18

  #编辑lib库查询路径变量
vi /etc/ld.so.conf
#在文件末尾添加后保存
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/mysql/lib
#使更改生效
ldconfig
  tar zxvf mcrypt-2.6.8.tar.gz
cd mcrypt-2.6.8/
export LDFLAGS="-L/usr/local/lib -L/usr/lib"
export CFLAGS="-I/usr/local/include -I/usr/include"
touch malloc.h
./configure --prefix=/usr/local --with-libmcrypt-prefix=/usr/local/lib
make
make install
cd ../

  安装php
  mkdir -p /usr/local/php5.5
  tar zxvf php-5.5.10
  cd php-5.5.10
  export LIBS="-lm -ltermcap -lresolv"
export DYLD_LIBRARY_PATH="/usr/local/mysql/lib/:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib64"
export LD_LIBRARY_PATH="/usr/local/mysql/lib/:/lib/:/usr/lib/:/usr/local/lib:/lib64/:/usr/lib64/:/usr/local/lib

  ./configure --prefix=/usr/local/php5.5 --with-config-file-path=/etc --with-iconv-dir=/usr/local/ --with-freetype-dir --with-mysql=/usr/local/mysql5.5 --with-mysqli=/usr/local/mysql5.5/bin/mysql_config --with-jpeg-dir --with-png-dir --with-zlib --with-mhash--enable-sockets --enable-ftp --with-libxml-dir --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf--with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --enable-fpm --with-xmlrpc --enable-zip --enable-soap --without-pear--disable-fileinfo(内存小宇1G编译不成功,加上这个成功)

  make ZEND_EXTRA_LIBS='-liconv'

  make install
  cp php.ini-development /etc/php.ini
cd ../
cp /usr/local/php5.5/etc/php-fpm.conf.default /usr/local/php5.5/etc/php-fpm.conf
修改
user = nobody
group = nobody

user = www
group = www
将;pid = run/php-fpm.pid前的;去掉并修改为
pid = /usr/local/php5.5/var/run/php-fpm.pid
启动php-fpm
/usr/local/php5.5/sbin/php-fpm

  三,php,php-fpm,nginx支持php配置
  #复制拷贝php主配置文件
cp php.ini-production /etc/php.ini
#复制php-fpm启动脚本(可以采用诸如service php-fpm start|restart|stop命令的脚本)
#该启动脚本编译的时候已经将必须的配置路径设置好了, 复制即可使用
cp ./sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

#设置启动权限并加入开机启动
chmod +x /etc/rc.d/init.d/php-fpm #添加执行权限
chkconfig php-fpm on #设置php通过nginx的php-fpm方式的开机启动

#ps补充mysql的
chmod +x /etc/rc.d/init.d/mysqld #mysql添加mysql的执行权限
chkconfig mysqld on #设置mysql开机启动

#php-fpm配置文件
cd /usr/local/php5.5/etc
cp php-fpm.conf.default php-fpm.conf

vi php-fpm.conf
#修改如下(php-fpm与nginx的执行用户必须相同)
user = nginx
group = nginx

#nginx支持php-fpm
cd /usr/local/nginx/conf
vi nginx.conf
#修改如下所述部分
user nginx nginx;
pid /server/data/nginx.pid
#index 的位置添加 index.php
location ~ \.php$ {
root html; fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

  四,nginx启动文件、启动nginx、mysql、php-fpm
  将nginx设置成 service nginx start|restart|stop等形式
  #nginx启动脚本
vi /etc/init.d/nginx
#写入如下内容[文件另提一个代码段],保存之后授予该执行文件权限

chmod 755 /etc/init.d/nginx
#或者chmod +x /etc/rc.d/init.d/nginx 是一个意思

  脚本:
  #Server nginx - this script starts and stops the nginx daemon
# By www.jjonline.cn
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
#configtest || return $?
stop
sleep 1
start
}

reload() {
#configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
test)
configtest || exit 0
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

  启动php,php-fpm,nginx
  service mysqld start
service nginx start
service php-fpm start

  五,问题
  启动php-fpm时提示“Starting php-fpm /server/apps/php/sbin/php-fpm: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory  failed”


做个文件连接即可:


ln -s /usr/local/mysql/lib/mysql /usr/lib64/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18 #注意64位和32位的路径区别

         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-139908-1-1.html 上篇帖子: LNMP环境的基础搭建,即Linux、Nginx、MySQL、PHP环境 下篇帖子: ubuntu下LNMP环境的搭建 (简单apt-get install方式)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表