前言
centos平台编译环境使用如下指令
安装make:
yum -y install gcc automake autoconf libtool make
安装g++:
yum install gcc gcc-c++
安装的文件路径
/usr/local/src/lnmp/
放入压缩包及安装需要的源代码文件/usr/local/src/lnmp/pcre-8.37.tar.gz
pcre安装源码压缩包(用于重写rewrite)/usr/local/src/lnmp/zlib-1.2.8.tar.gz
zlib安装源码压缩包(用于gzip压缩)/usr/local/src/lnmp/openssl-1.0.1t.tar.gz
安装ssl(某些vps默认没装ssl)/usr/local/src/lnmp/nginx-1.4.2.tar.gz
nginx安装源码压缩包/usr/local/src/lnmp/php-7.2.1.tar.gz
php7安装源码压缩包/usr/local/lnmp/nginx-1.4.2
nginx-1.4.2的安装存入目录/usr/local/lnmp/php-7.2.1
php-7.2.1的安装存入目录
拉取所有源码安装文件压缩包
进入源码目录
可以是任何目录,本文选定的是 /usr/local/src/lnmp/
cd /usr/local/src/lnmp/
拉取pcre源码压缩文件并安装
cd /usr/local/src/lnmp/
wget https://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz
tar -zxvf pcre-8.37.tar.gz
cd pcre-8.37
./configure
make
make install
拉取zlib源码压缩文件并安装
cd /usr/local/src/lnmp/
wget https://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install
安装ssl(某些vps默认没装ssl)
cd /usr/local/src/lnmp/
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar -zxvf openssl-1.0.1t.tar.gz
Nginx
下载地址:https://nginx.org/download/
Nginx安装
Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来选择这两个版本的其中一个,
下面是把 Nginx 安装到 /usr/local/lnmp/nginx-1.4.2
目录下的详细步骤:
cd /usr/local/src/lnmp/
wget http://nginx.org/download/nginx-1.4.2.tar.gz
tar -zxvf nginx-1.4.2.tar.gz
cd nginx-1.4.2
./configure --prefix=/usr/local/lnmp/nginx-1.4.2 \
--sbin-path=/usr/local/lnmp/nginx-1.4.2/nginx \
--conf-path=/usr/local/lnmp/nginx-1.4.2/nginx.conf \
--pid-path=/usr/local/lnmp/nginx-1.4.2/nginx.pid \
--with-http_ssl_module \
--with-pcre=/usr/local/src/lnmp/pcre-8.37 \
--with-zlib=/usr/local/src/lnmp/zlib-1.2.8 \
--with-openssl=/usr/local/src/lnmp/openssl-1.0.1t
make
make install
–with-pcre=/usr/local/src/lnmp/pcre-8.37 指的是pcre-8.37 的源码路径。
–with-zlib=/usr/local/src/lnmp/zlib-1.2.8 指的是zlib-1.2.8 的源码路径。
安装成功后 /usr/local/lnmp/nginx-1.4.2 目录下如下:
fastcgi.conf koi-win nginx.conf.default
fastcgi.conf.default logs scgi_params
fastcgi_params mime.types scgi_params.default
fastcgi_params.default mime.types.default uwsgi_params
html nginx uwsgi_params.default
koi-utf nginx.conf win-utf
Nginx运行命令
启动:确保系统的 80 端口没被其他程序占用,运行 /usr/local/lnmp/nginx-1.4.2/nginx
命令来启动 Nginx
netstat -ano|grep 80
打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功。
查看Nginx进程是否启动
ps aux | grep nginx
ps -ef | grep nginx
查看Nginx占用的端口号
netstat -tlnp
停止nginx
传统停止Nginx的三种方式
- 立即停止Nginx服务
/usr/local/lnmp/nginx-1.4.2/sbin/nginx -s stop
- 完成当前任务后停止
/usr/local/lnmp/nginx-1.4.2/sbin/nginx -s quit
- 杀死Nginx进程
killall nginx
也可以用信号量来进行操作
关闭:
kill -INT `cat /usr/local/lnmp/nginx-1.4.2/nginx.pid`
重启:
kill -USR2 `cat /usr/local/lnmp/nginx-1.4.2/nginx.pid`
到这里nginx就安装完成了,如果只是处理静态html就不用继续安装了
遇到问题可以参考Nginx中文文档-安装 Nginx
如果你需要处理php脚本的话,还需要安装php-fpm。
PHP
PHP介绍
久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说。如果你是升级或新安装,那你首先需要考虑php7和程序是否存在兼容性,如果程序是基于php5开发的,那么就需要考虑php7是否适合你当前的生产环境,今天我就实操并安装用于生产中。
先安装php依赖包,否则在编译安装php7的过程当中会出现各种报错,安装完成后即可进入下一个环节。
安装扩展包并更新系统内核
yum install epel-release -y
yum update
安装php依赖组件(包含Nginx依赖)
yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-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 ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
先安装iconv
cd /usr/local/src/
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar -zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local
make && make install
创建用户和组,并下载php安装包解压
cd /usr/local/src/lnmp/
groupadd www
useradd -g www www
wget http://am1.php.net/distributions/php-7.2.1.tar.gz
tar -zxvf php-7.2.1.tar.gz
cd php-7.2.1
cp -frp /usr/lib64/libldap* /usr/lib/
./configure --prefix=/usr/local/lnmp/php-7.2.1 \
--with-config-file-path=/usr/local/lnmp/php-7.2.1/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-mysqlnd-compression-support \
--with-iconv-dir \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--with-mcrypt \
--with-libmbfl \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-openssl \
--with-mhash \
--enable-pcntl \
--enable-sockets \
--with-xmlrpc \
--enable-zip \
--enable-soap \
--with-gettext \
--disable-fileinfo \
--enable-opcache \
--with-pear \
--enable-maintainer-zts \
--with-ldap=shared \
--without-gdbm \
--with-iconv=/usr/local/
make
make install
完成安装后配置php.ini文件
cd /usr/local/src/lnmp/php-7.2.1/
cp php.ini-development /usr/local/lnmp/php-7.2.1/etc/php.ini
cp /usr/local/lnmp/php-7.2.1/etc/php-fpm.conf.default /usr/local/lnmp/php-7.2.1/etc/php-fpm.conf
cp /usr/local/lnmp/php-7.2.1/etc/php-fpm.d/www.conf.default /usr/local/lnmp/php-7.2.1/etc/php-fpm.d/www.conf
修改php-fpm pid 的配置项
cd /usr/local/lnmp/php-7.2.1/etc
vim php-fpm.conf
# line 17 : pid = /usr/local/lnmp/php-7.2.1/var/run/php-fpm.pid
修改 php.ini 配置项
cd /usr/local/lnmp/php-7.2.1/etc
vim php.ini
# line 192 : short_open_tag = On
php-fpm运行命令
INT, TERM 立刻终止 QUIT 平滑终止 USR1 重新打开日志文件 USR2 平滑重载所有worker进程并重新载入配置和二进制模块
查看是否启动:ps -ef | grep php-fpm
启动:运行 /usr/local/lnmp/php-7.2.1/sbin/php-fpm
命令来启动 php-fpm
关闭:
kill -INT `cat /usr/local/lnmp/php-7.2.1/var/run/php-fpm.pid`
重启:
kill -USR2 `cat /usr/local/lnmp/php-7.2.1/var/run/php-fpm.pid`
查看php-fpm进程数:
ps aux | grep -c php-fpm
命令行下执行php,提示找不到命令 -bash: /usr/bin/php: No such file or directory
vi /etc/profile
在文件底部增加一行配置
export PATH=/usr/local/php/bin:$PATH
保存退出
source /etc/profile
让nginx处理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;
}
到这里php7就安装完成了
遇到问题可以参考CentOS编译安装php7.2
创建几个简单的Shell文件来控制服务启停
cd /usr/local/lnmp
nginx.sh
#!/usr/bin/bash
# Author : jiangxiaobo
# Copyright (c) https://blog.csdn.net/jiangxiaobo666
# Script follows here:
echo "start / stop / restart,default start?"
read action
if [ "$action" == 'restart' ]
then
/usr/bin/kill -INT `/usr/bin/cat /usr/local/lnmp/nginx-1.4.2/nginx.pid`
sleep 1
/usr/local/lnmp/nginx-1.4.2/nginx
elif [ "$action" == 'stop' ]
then
/usr/bin/kill -INT `/usr/bin/cat /usr/local/lnmp/nginx-1.4.2/nginx.pid`
else
/usr/local/lnmp/nginx-1.4.2/nginx
fi
#chmod +x ./nginx.sh
#./nginx.sh
php-fpm.sh
#!/usr/bin/bash
# Author : jiangxiaobo
# Copyright (c) https://blog.csdn.net/jiangxiaobo666
# Script follows here:
echo "start / stop / restart,default start?"
read action
if [ "$action" == 'restart' ]
then
/usr/bin/kill -INT `/usr/bin/cat /usr/local/lnmp/php-7.2.1/var/run/php-fpm.pid`
sleep 1
/usr/local/lnmp/php-7.2.1/sbin/php-fpm
elif [ "$action" == 'stop' ]
then
/usr/bin/kill -INT `/usr/bin/cat /usr/local/lnmp/php-7.2.1/var/run/php-fpm.pid`
else
/usr/local/lnmp/php-7.2.1/sbin/php-fpm
fi
#chmod +x ./php-fpm.sh
#./php-fpm.sh
启动nginx 设置 自定义配置文件
cd /usr/local/lnmp/
mkdir etc
cd etc/
mkdir nginx
cd nginx/
mkdir html
cp /usr/local/lnmp/nginx-1.4.2/nginx.conf ./nginx.conf
cp /usr/local/lnmp/nginx-1.4.2/mime.types ./mime.types
cp /usr/local/lnmp/nginx-1.4.2/html/* ./html/
vim nginx.conf
mkdir var
mkdir conf.d
cd /usr/local/lnmp/etc/nginx/conf.d
vim www.localhost.com.conf
vim api.localhost.com.conf
cd /usr/local/lnmp/var
mkdir log
mkdir run
/usr/local/lnmp/etc/nginx/nginx.conf
文件内容如下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
error_log /usr/local/lnmp/etc/nginx/var/log/error.log warn;
pid /usr/local/lnmp/etc/nginx/var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
client_max_body_size 8m;
include /usr/local/lnmp/etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/lnmp/etc/nginx/var/log/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
include /usr/local/lnmp/conf.d/*.conf;
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
/usr/local/lnmp/etc/nginx/conf.d/www.localhost.com.conf
文件内容如下:
server {
listen 80;
server_name www.localhost.com www.localhost.cn;
#ssl on;
#ssl_certificate cert/2206272_mapi.fufentong.com.pem;
#ssl_certificate_key cert/2206272_mapi.fufentong.com.key;
#ssl_session_timeout 5m;
#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_prefer_server_ciphers on;
#charset koi8-r;
access_log /usr/local/lnmp/etc/nginx/var/log/www.localhost.access.log main;
error_log /usr/local/lnmp/etc/nginx/var/log/www.localhost.error.log;
#location /supplier {
# root /data/jifen/thinkphp5/public;
# index index.html index.htm index.php;
# if (!-e $request_filename) {
# rewrite "^(.*)$" /index.php/$1 last;
# break;
# }
#}
location / {
#proxy_read_timeout 150;
root /data/www.localhost.com/public;
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite "^/[a-z]{1,9}/(.*)$" /index.php/$1 last;
break;
}
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/lnmp/etc/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /data/www.localhost.com/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_read_timeout 150;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param PATH_INFO $1;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
/usr/local/lnmp/conf.d/api.localhost.com.conf
文件内容如下:
#....
启动命令:/usr/local/lnmp/nginx-1.4.2/nginx -c /etc/nginx/nginx.conf