LNMP编译安装nginx编译安装
一、什么是LNMP LNMP是指在Linux系统下安装Nginx服务器、MySQL数据库、Php(PhpmyAdmin)编程语言。Nginx是一个高性能的http、反向代理服务器,Nginx的特点就是轻便和高性能,非常适合低配置的VPS搭建网站服务器,能更好的发挥服务器的性能。 二、准备编译安装的环境 2.1软件下载:
分别下载软件以下软件:
nginx-1.0.13 (www.nginx.org)
Php-5.3.10 (www.php.net)
Mysql-5.5.19 (www.mysql.com) 2.2配置yum 如果你边yum命令都没安装的话,那就把光盘挂上,自己用rpm -ivh yum来安装吧.下面我们开始配置yum,首先要保证光盘已经被放入光驱里面,如果是虚拟机,确认你的系统iso文件已经连接上. # mount /dev/cdrom /mnt //挂载光盘到/mnt目录下 # cd /etc/yum.repos.d //进入到yum配置文件目录 # mv rhel-debuginfo.repo rhel-debuginfo.repo.bak //备份系统自带的配置文件,也可以删除 # vi local.repo //新建一个yum配置文件,并把以下内容写入到该文件 [Server] name=Server baseurl=file:///mnt/Server gpgcheck=0 enabled=1 [VT] name=VT baseurl=file:///mnt/VT gpgcheck=0 enabled=1 [Cluster] name=Cluster baseurl=file:///mnt/Cluster gpgeheck=0 [ClusterStorage] name=ClusterStorage baseurl=file:///mnt/ClusterStorage gpgcheck=0 enabled=1 # yum -y grouplist "Development Libraries" "Development Tools" //安装开发包工具和库 三、开始编译安装 3.1 安装Nginx-1.0.13: 安装之前要确保gcc、 openssl-devel、 pcre-devel、 zlib-devel 等软件包已安装 # yum install gcc openssl-devel pcre-devel zlib-devel 添加nginx用户nginx,用nginx用户运行nginx进程: # groupadd –r nginx //添加系统组nginx # useradd –r –g nginx –s /bin/false –M nginx //添加nginx用户 # tar xf nginx-1.0.13.tar.gz //解压文件 # ./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/tmp/nginx/client/ \ --http-proxy-temp-path=/var/tmp/nginx/proxy/ \ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre # make //开始编译,并成生二进制文件 # make install //开始安装 安装完成之后,我们可以写一个启动脚本,方便启用nginx服务 # vi /etc/rc.d/init.d/nginx //新建这个文件,然后把以下内容放进去 #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # pidfile: /var/run/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/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/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' -` 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 ;; 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 # chmod +x /etc/rc.d/init.d/nginx //给启动服务脚本可执行权限 # chkconfig --add nginx //把nginx添加到服务列表 # chkconfig nginx on //把nginx设定为开机启动 # service nginx start //启动nginx服务 3.2 安装 mysql 首先保证系统上没有安装rpm格式的mysql,如果有,自己手动卸载掉,然后再安装mysql,这里使用的mysql是免安装版的,初始化一下,然后做些配置就可以使用的那种 # groupadd -r mysql //创建一个系统组,叫mysql # useradd -g mysql -s /sbin/nologin -M mysql //创建一个系统用户mysql,并把它加入到mysql组,且不让其登录系统 # mkdir /mydata/data //创建mysql数据文件存放的目录 # chown mysql:mysql /mydata/data/ //把目录的权限改为mysql用户和mysql组 准备数据存放的文件系统,选取数据库存放位置,最好是新建一个逻辑卷,并将其挂载至特定目录。 # fdisk /dev/sda //新建分区,其id为8e # partprobe /dev/sda //同步磁盘数据 # pvcreate /dev/sda5 //把新建好的分区变成物理卷 # vgcreate myvg /dev/sda5 //新建卷组myvg # lvcreate -L 2G -n mysql myvg //创建逻辑卷 # mke2fs -j /dev/myvg/mysql //格式化逻辑卷 # echo "/dev/myvg/mysql /mydata ext3 defaults 0 0 " > /etc/fstab //写入配置文件,以实现开机自动挂载逻辑卷 # mount –a //重读配置文件 # mount //查看是否成功挂载逻辑卷 # tar xf mysql-5.5.19-linux2.6-i686.tar.gz -C /usr/local //解压mysql到指定目录 # cd /usr/local/ //切换工作目录到刚才解压的目录 # ln -sv mysql-5.5.19-linux2.6-i686/ /usr/local/mysql //为mysql创建链接,也可以重命名 # cd mysql //切换工作目录到mysql目录 # chown -R mysql:mysql . //把当前目录下所有的文件及目录改为mysql用户和组 # scripts/mysql_install_db --user=mysql --datadir=/mydata/data //初始化mysql # chown -R root . //把当前目录的属主改为root # cp support-files/my-large.cnf /etc/my.cnf //为mysql提供主配置文件,放到/etc/my.cnf # vi /etc/my.cnf //编译配置文件 thread_concurrency = 2 //这里改成你的CPU的个数乖于2 datadir = /mydata/data //这里是mysql数据文件的存放位置 # cp support-files/mysql.server /etc/rc.d/init.d/mysqld //为mysql提供服务脚本 # chmod +x /etc/rc.d/init.d/mysqld //给脚本加上可执行权限 # chkconfig --add mysqld //把mysql服务加入到系统服务列表 # chkconfig mysqld on //设置其开机启动 # vi /etc/man.config //编译man的配置文件,让mysql命令可以通过man查看帮助信息 MANPATH /usr/local/mysql/man //把这行加入到MANPATH行下面 # ln -sv /usr/local/mysql/include /usr/include/mysql //输出mysql的头文件 # echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf //输出mysql的库文件 # ldconfig //重新载入库文件 # service mysqld start //启动服务 # vi /etc/profile //编译profile文件,加入环境变量 export PATH=$PATH:/usr/local/apache/bin:/usr/local/mysql/bin //加入mysql的二进制文件位置 # . /etc/profile //让刚才的操作生效 # mysql //开始测试,输入完该命令,应该会打开mysql的shell 3.3 安装PHP 为了让php支持mcrypt扩展,我们这里安装一下以下两个软件包 libmcrypt-2.5.7-5.el5.i386.rpm libmcrypt-devel-2.5.7-5.el5.i386.rpm [root@localhost ~]# rpm -ivh libmcrypt-* warning: libmcrypt-2.5.7-5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6 Preparing... ########################################### [100%] 1:libmcrypt ########################################### [ 50%] 2:libmcrypt-devel ########################################### [100%] # tar xf php-5.3.10.tar.bz2 //解压PHP # cd php-5.3.10 //切换工作目录至php # ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt //配置编译php所需要的功能,启用 # make //开始编译PHP # make install //开始安装PHP # cp php.ini-production /usr/local/php/etc/php.ini # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm # chmod +x /etc/rc.d/init.d/php-fpm 启动fastcgi: # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf # vim /usr/local/php/etc/php-fpm.conf 启用如下选项: pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8 pid = /var/run/php-fpm.pid # chkconfig --add php-fpm # chkconfig php-fpm on # service php-fpm start 安装完成后,我们就可以编译Nginx的主配置文件,让它支持php了 接下来整合nginx和php5 编辑/etc/nginx/nginx.conf,启用如下选项: location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } #vim fastcgi_params fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; 并在所支持的主页面格式中添加php格式的主页,类似如下: location / { root html; index index.php index.html index.htm; } 而后重启nginx。 # service nginx restart 四、测试 我们在Nginx的网页目录下,建立一个php文件,看看是不是可以被访问到 # cd /usr/html # vim index.php <?php phpinfo(); ?>
在客户端测试一下