linux下php+nginx+mysql网站开发环境搭建

php安装
(最好先安装好了mysql)
下载解压文件后

#指定安装路径 开启安装fpm 指定mysql路径
    ./configure --prefix=/usr/local/php --enable-fpm --with-mysql=/usr/local/mysql  --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-pdo --with-pdo-mysql --with-gd
#编译
    sudo make
#讲编译好的文件安装到指定的地方
    sudo make install
#复制安装包下配置文件到/usr/local/php/lib目录下
cp 你解压安装包后文件下的php.ini-development /usr/local/php/lib/php.ini

./configure –help可以查看英文解释,configure部分参数中文解释如下,根据自己的情况填写configure参数

# 指定 php 安装目录
--prefix=/usr/local/php 
# 指定php.ini位置
--with-config-file-path=/usr/local/php/etc 
# mysql安装目录,对mysql的支持
--with-mysql=/usr/local/mysql
mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定。
--with-mysqli=/usr/local/mysql/bin/mysql_config   
整合 apache,apxs功能是使用mod_so中的LoadModule指令,加载指定模块到 apache,要求 apache 要打开SO模块
--with-apxs2=/usr/local/apache/bin/apxs 
# 选项指令 --with-iconv-dir 用于 PHP 编译时指定 iconv 在系统里的路径,否则会扫描默认路径。
--with-iconv-dir=/usr/local 
--with-freetype-dir   打开对freetype字体库的支持 
--with-jpeg-dir   打开对jpeg图片的支持 
--with-png-dir   打开对png图片的支持 
--with-zlib-dir   打开zlib库的支持,用于http压缩传输
--with-libxml-dir   打开libxml2库的支持
--disable-rpath    关闭额外的运行库文件 
--enable-bcmath    打开图片大小调整,用到zabbix监控的时候用到了这个模块
--enable-shmop --enable-sysvsem  这样就使得你的PHP系统可以处理相关的IPC函数了。
--enable-inline-optimization  优化线程
--with-curl    打开curl浏览工具的支持 
--with-curlwrappers    运用curl工具打开url流 
--enable-mbregex
--enable-fpm 打上PHP-fpm 补丁后才有这个参数,CGI方式安装的启动程序
--enable-mbstring    多字节,字符串的支持 
--with-mcrypt                    mcrypt算法扩展
--with-mhash                     mhash算法扩展
--with-gd    打开gd库的支持 
--enable-gd-native-ttf   支持TrueType字符串函数库
--with-openssl      openssl的支持,加密传输https时用到的
--enable-pcntl   freeTDS需要用到的,可能是链接mssql 才用到
--enable-sockets     打开 sockets 支持
--with-xmlrpc    打开xml-rpc的c语言 
--enable-zip   打开对zip的支持 
--enable-ftp   打开ftp的支持 
--with-bz2    打开对bz2文件的支持        
--without-iconv   关闭iconv函数,字符集间的转换 
--with-ttf     打开freetype1.*的支持,可以不加了 
--with-xsl     打开XSLT 文件支持,扩展了libXML2库 ,需要libxslt软件 
--with-gettext     打开gnu 的gettext 支持,编码库用到 
--with-pear    打开pear命令的支持,PHP扩展用的 
--enable-calendar    打开日历扩展功能
--enable-exif    图片的元数据支持 
--enable-magic-quotes    魔术引用的支持 
--disable-debug    关闭调试模式 
--with-mime-magic=/usr/share/file/magic.mime      魔术头文件位置
CGI方式安装才用的参数
--enable-fastCGI            支持fastcgi方式启动PHP
--enable-force-CGI-redirect        重定向方式启动PHP
--with-ncurses         支持ncurses 屏幕绘制以及基于文本终端的图形互动功能的动态库
--with-gmp  应该是支持一种规范
--enable-dbase                     建立DBA 作为共享模块
--with-pcre-dir=/usr/local/bin/pcre-config      perl的正则库案安装位置
--disable-dmalloc
--with-gdbm                     dba的gdbm支持
--enable-sigchild
--enable-sysvshm
--enable-zend-multibyte         支持zend的多字节
--enable-wddx
--enable-soap

nginx安装
下载解压文件后

./configure --prefix=/usr/local/nginx 
#编译
    sudo make
#讲编译好的文件安装到指定的地方
    sudo make install

nginx配置解释如下

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

#全局错误日志及PID文件
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

#工作模式及连接数上限
events {
    #epoll是多路复用IO(I/O Multiplexing)中的一种方式,
    #仅用于linux2.6以上内核,可以大大提高nginx的性能
    use   epoll; 

    #单个后台worker process进程的最大并发链接数    
    worker_connections  1024;

    # 并发总数是 worker_processes 和 worker_connections 的乘积
    # 即 max_clients = worker_processes * worker_connections
    # 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4  为什么
    # 为什么上面反向代理要除以4,应该说是一个经验值
    # 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000
    # worker_connections 值的设置跟物理内存大小有关
    # 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数
    # 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
    # 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
    # $ cat /proc/sys/fs/file-max
    # 输出 34336
    # 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
    # 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
    # 使得并发总数小于操作系统可以打开的最大文件数目
    # 其实质也就是根据主机的物理CPU和内存进行配置
    # 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
    # ulimit -SHn 65535

}


http {
    #设定mime类型,类型由mime.type文件定义
    include    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  logs/access.log  main;

    #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].";

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


    #设定虚拟主机配置
    server {
        #侦听80端口
        listen    80;
        #定义使用 www.nginx.cn访问
        server_name  www.nginx.cn;

        #定义服务器的默认网站根目录位置
        root html;

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

        #默认请求
        location / {

            #定义首页索引文件的名称
            index index.php index.html index.htm;   

        }

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

        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {

            #过期30天,静态文件不怎么更新,过期可以设大一点,
            #如果频繁更新,则可以设置得小一点。
            expires 30d;
        }

        #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
        location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            #注意下面这项填错了php无法理解传过来的参数
            fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        #禁止访问 .htxxx 文件
            location ~ /.ht {
            deny all;
        }

    }
}

mysql安装(难,详解)
一、Mysql 各个版本区别:

1、MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。
2、MySQL Enterprise Edition 企业版本,需付费,可以试用30天。
3、MySQL Cluster 集群版,开源免费。可将几个MySQL Server封装成一个Server。
4、MySQL Cluster CGE 高级集群版,需付费。
5、MySQL Workbench(GUI TOOL)一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。MySQL Workbench又分为两个版本,分别是社区版(MySQL Workbench OSS)、商用版(MySQL Workbench SE)。

MySQL Community Server 是开源免费的,这也是我们通常用的MySQL的版本。根据不同的操作系统平台细分为多个版本。

二、
1、下载,我的是Ubuntu64位系统,因此选择
这里写图片描述
2、将下载下来的文件复制到/usr/local

sudo cp  -r xxxxxxxx  /usr/local/xxxxxxxx

3、解压文件
4、改名文件夹xxxxxxxx为mysql

sudo mv xxxxxxxx mysql

5、mysql默认不能以root用户启动,因此 新建mysql用户和组

groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql ---新建msyql用户禁止登录shell

6、改变目录所属

扫描二维码关注公众号,回复: 2641693 查看本文章
#cd /usr/local/mysql
#pwd
#chown mysql -R .
#chgrp mysql -R .

7、配置参数

#mkdir data
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

这里写图片描述
生成的临时密码
8、配置mysql.server

cd support-files
sudo gedit mysql.server

添加内容到mysql.server (shell脚本文件)

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

9、启动mysql服务端

./mysql.server start

10、启动mysql客服端链接mysql服务端

cd /usr/local/mysql
bin/mysql -uroot –p

提示输入密码,填写上面生成的临时密码x.md1LfcsNPv
11、进去后设置正式密码

mysql> set password=password('123456');

启动 重启 停止方法

 /usr/local/nginx/sbin/nginx
/etc/init.d/mysql start
/usr/local/php/sbin/php-fpm start

#nginx命令 

start: 
/usr/local/nginx/sbin/nginx 

stop: 
/usr/local/nginx/sbin/nginx -s stop 

reload: 
/usr/local/nginx/sbin/nginx -s reload 

#******************************************** 
 php此处省略,详见下面
#******************************************** 

#mysql命令 

start: 
/etc/init.d/mysqld start 

stop: 
/etc/init.d/mysqld stop 

restart: 
/etc/init.d/mysqld restart 

#******************************************** 

#tomcat命令 

start:
/usr/local/tomcat/bin/startup.sh 

stop:
/bin/ps -ef | grep 'tomcat' | grep -v grep | cut -c 9-15 | xargs kill -9

php启动重启停止
启动php-fpm:

/usr/local/php/sbin/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的master进程号

# ps -aux|grep php-fpm
root     21891  0.0  0.0 112660   960 pts/3    R+   16:18   0:00 grep --color=auto php-fpm
root     42891  0.0  0.1 182796  1220 ?        Ss   418   0:19 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody   42892  0.0  0.6 183000  6516 ?        S    418   0:07 php-fpm: pool www
nobody   42893  0.0  0.6 183000  6508 ?        S    418   0:17 php-fpm: pool www

重启php-fpm:

kill -USR2 42891

OK了。

上面方案一般是没有生成php-fpm.pid文件时使用,如果要生成php-fpm.pid,使用下面这种方案:

上面master进程可以看到,matster使用的是/usr/local/php/etc/php-fpm.conf这个配置文件,cat /usr/local/php/etc/php-fpm.conf 发现

[global]
; Pid file
; Note: the default prefix is /usr/local/php/var
; Default Value: none
;pid = run/php-fpm.pid

pid文件路径应该位于/usr/local/php/var/run/php-fpm.pid,由于注释掉,所以没有生成,我们把注释去除,再kill -USR2 42891 重启php-fpm,便会生成pid文件,下次就可以使用以下命令重启,关闭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’

猜你喜欢

转载自blog.csdn.net/qq_26046771/article/details/78286435