# 概括 lnmp环境=linux+nginx+mysql+php。 国内小公司用的最多的服务器环境是lamp或者lnmp,目前nginx以其高并发的特点赢得更多人的青睐,之前有使用过一键安装的集成环境,也用过虚拟机从配置网关从头开始折腾过,装系统环境对大多数后端开发者来说都是不陌生的。 有一点不同的是在LNMP结构里php会启动一个服务:php-fpm,而LANP中php只是作为Apache的一个模块存在。Nginx会把用户的动态请求交给php服务去处理,这个php服务就会去和数据库进行交互。用户的静态请求Nginx会直接处理,Nginx处理静态请求的速度要比Apache快很多性能上要好,所以Apache和Nginx在动态请求处理上区别不大,但如果是静态请求处理的话就会明显发现Nginx要快于Apache,而且Nginx能承受的并发量要比Apache大,可以承受好几万的并发量,所以大一些的网站都会使用Nginx作为web服务器。 今天我记录一下我从0开始在线上服务器安装lnmp环境,不像很多博客那么详细的教程,本篇只记录自己一步步搭环境遇到的问题和怎样搭建一个服务器。 >PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包 ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。 服务器:百度云。操作系统CentOS7.5。 yum、wget等工具的安装不再赘述,因为是线上百度云自带的centos,所以这些常用的工具都装好了。 由于众所周知的原因,可自行选择去官网下载或者国内镜像下载 搜狐开源镜像站:http://mirrors.sohu.com/ 网易开源镜像站:http://mirrors.163.com/ 开源中国:http://mirrors.oschina.net/ 首都在线科技股份有限公司:http://mirrors.yun-idc.com/ 阿里云开源镜像:http://mirrors.aliyun.com/ LUPA:http://mirror.lupaworld.com/ 常州贝特康姆软件技术有限公司(原cn99):http://centos.bitcomm.cn/ >安装前准备: >如果下列安装顺序不同,请注意添加用户组和用户,否则会有报错 ```php groupadd nginx useradd -M -g nginx -s /sbin/nologin nginx groupadd mysql useradd -M -g mysql -s /sbin/nologin mysql groupadd www-data useradd -M -g www-data -s /sbin/nologin www-data ``` # 一、nginx的安装 ## 1. 安装nginx所需环境 ***你可以选择一步安装或者单个安装*** ``` yum install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5 ``` #### gcc 安装 nginx是c语言开发,所以需要安装c相关编译环境 ```php yum install gcc-c++ ``` #### PCRE pcre-devel 安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。而且关于路由重写也是需要Perl库。 ```php yum install -y pcre pcre-devel ``` #### zlib 安装 zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。 ``` yum install -y zlib zlib-devel ``` #### OpenSSL 安装 OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。 ``` yum install -y openssl openssl-devel ``` ***以上环境或扩展安装都也会提示你现在已经安装并且是最新版本。*** ![已安装过](/upload/picture/20190517/4c78a4d1805cc011dee6bdc364617ce1.png) ## 2.编译安装nginx #### 下载安装包 ```php wget http://nginx.org/download/nginx-1.8.0.tar.gz ``` #### 解压 ```php tar -zxvf nginx-1.8.0.tar.gz -C /usr/src/ ``` #### 配置 ```php cd /usr/src/nginx-1.8.0 //设置编译路径为 /usr/local/nginx ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module ``` > **configure编译配置参数说明:** --prefix # 用于指定Nginx编译后的安装目录 --user # 设置Nginx运行的用户身份(默认 - nobody) --group # 设置Nginx运行的用户组(默认 - nobody) --add-module # 为添加的第三方模块,此次添加了fdfs的Nginx模块 --with..._module # 表示启用的Nginx模块,如此处启用了http_ssl_module模块 ![成功访问](/upload/picture/20190517/c4fb5a99fe22932296449dc879930ba1.png "成功访问") #### 编译安装 ```php make && make install /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ./nginx -s reload ``` #### 开机自启动 ```php //文件本来为空 vim /lib/systemd/system/nginx.service ``` ```php # 添加文件内容如下: [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=multi-user.target ``` #### 启动nginx ```php systemctl start nginx.service //查看是否启动成功 lsof -i:80 ``` #### 成功 ![](/upload/picture/20190517/95b868ed24680b1aae4c75c438ffd1cf.png) ### 配置nginx文件 其实以上过程是可以正常访问,但是有些配置需要你安装完其他服务后再进行的。如php-fpm 以下操作是在php和mysql安装完成后再写入配置的 ```php //编辑配置文件 vim /usr/local/nginx/conf/nginx.conf # 设置参数如下: 2 user nginx nginx; # 运行用户和组 3 worker_processes 1; # 启动ngnix的服务的工作进程数 5 error_log logs/error.log; # 打开注释,错误日志以及日志等级 9 pid logs/nginx.pid; # 打开注释,pid文件 12 events { 13 worker_connections 65535; # 每个进程允许打开的并发连接数 14 } 17 http { 18 include mime.types; 19 default_type application/octet-stream; 27 sendfile on; 28 tcp_nopush on; # 打开注释 31 keepalive_timeout 65; # 打开注释 33 gzip on; 35 server { 36 listen 80; # 监听的端口 37 server_name localhost; # 主机名或者IP(自行定义) 39 charset utf-8; # 字符集 43 location / { 44 root /web; # 根目录,可以使用相对路径(/usr/local/nginx),也可以使用绝对路径,去掉location{ } 45 index index.php index.html index.htm; # 主页文件 46 } 65 location ~ .php$ { 66 fastcgi_connect_timeout 300; 67 fastcgi_read_timeout 300; 68 fastcgi_send_timeout 300; 69 fastcgi_pass unix:/var/run/fastcgi/fastcgi.socket; # 对应配置php-fpm.conf里的设置 70 fastcgi_index index.php; 71 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 把/scripts改成$document_root,表示家目录下的.php文件也当会以php来执行,否则可能出现白面 72 include fastcgi.conf; 73 } ``` ## 3. nginx相关命令 因为CentOs7使用systemd 来管理系统服务的,所以我们用主要命令systemctl来操作。以下 相关命令只需替换成nginx即可。(相对于其他安装的系统服务也适用:firewall等) >systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV 和 LSB 的启动脚本。systemd 的特性有:支持并行化任务;同一时候採用 socket 式与 D-Bus 总线式激活服务;按需启动守护进程(daemon)。利用 Linux 的 cgroups 监视进程;支持快照和系统恢复。维护挂载点和自己主动挂载点。各服务间基于依赖关系进行精密控制。 检视和控制systemd的主要命令是systemctl。 马上激活单元: `systemctl start <单元>` 马上停止单元: `systemctl stop <单元>` 重新启动单元: `systemctl restart <单元>` 又一次载入配置: `systemctl reload <单元>` 输出单元执行状态: `systemctl status <单元>` 检查单元是否配置为自己主动启动: ` systemctl is-enabled <单元>` 开机自己主动激活单元: `systemctl enable <单元>` 取消开机自己主动激活单元: `systemctl disable <单元>` 禁用一个单元(禁用后,间接启动也是不可能的): `systemctl mask <单元>` 取消禁用一个单元: `systemctl unmask <单元>` 显示单元的手冊页(必须由单元文件提供): `systemctl help <单元>` 又一次载入 systemd,扫描新的或有变动的单元: `systemctl daemon-reload` 更多关于systemd 的信息请参考【[https://www.cnblogs.com/lxjshuju/p/7183689.html](https://www.cnblogs.com/lxjshuju/p/7183689.html)】 # 二、mysql安装 tips:如果先安装php,那么在编译配置php一些配置项的时候关于mysql的一系列有关项会报错,需要重新编译一次,所以在安装php前先安装mysql ![提示mysql有关项需要重新编译](https://img-blog.csdnimg.cn/20190314164055827.png) ## 1. 安装MySQL依赖包 ```php //查询是否存在mysql find / -name mysql whereis mysql //如果之前有安装过mysql的话,先停止mysql后卸载 yum -y remove mariadb yum -y remove mysql rm -rf /usr/local/mysql rm -rf /usr/src/mysql-5.7.18/ rm -rf /var/lib/mysql/ rm /etc/my.cnf //安装 yum –y install libevent* libtool* autoconf* libstd* ncurse* bison* openssl* // MySQL 5.5之后的版本需要cmake(c语言编译器)来进行编译安装 yum -y install cmake ``` ## 2. 安装boost类库 ```php //MySQL 5.7 之后的版本,cmake编译需要boost类库 //下载 ps:整个过程十分漫长,我下了十几分钟。主要没找到国内镜像,谁有找到评论告诉我下。 wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz //解压 tar zxvf boost_1_59_0.tar.gz -C /usr/local/ //重命名 mv /usr/local/boost_1_59_0/ /usr/local/boost/ ``` ## 3. 下载mysql包 ```php wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.23.tar.gz //解压到/usr/src/目录 tar zxvf mysql-5.7.23.tar.gz -C /usr/src/ ``` ## 4. 编译安装 ```php //进入编译目录 cd /usr/src/mysql-5.7.23/ //编译 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql57 -DMYSQL_DATADIR=/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql57/mysql57.socket -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost //安装 make && make install ``` ```php **cmake编译配置参数说明:** -DCMAKE_INSTALL_PREFIX=dir_name # 安装的主目录 -DMYSQL_DATADIR=dir_name MySQL # 文件目录的路径,这个参数也可以在启动MySQL的时候带上--datadir参数进行设置 -DSYSCONFDIR=dir_name my.cnf # 参数文件的路径 -DWITH_INNOBASE_STORAGE_ENGINE=1 # 将INNODB存储引擎编译进去 -DWITH_MYISAM_STORAGE_ENGINE=1 # 将INNODB存储引擎编译进去 -DWITH_MEMORY_STORAGE_ENGINE=1 # 安装memory存储引擎 -DWITH_READLINE=bool # 是否使用readline库 -DMYSQL_UNIX_ADDR=file_name Unix socket # 文件的路径,socket文件用于服务器监听连接,这个参数必须是绝对路径 -DMYSQL_TCP_PORT=port_num # 服务器监听TCP/IP连接的端口,默认是3306 -DENABLED_LOCAL_INFILE=1 # 是否打开LOAD DATA INFILE的LOCAL参数 -DWITH_PARTITION_STORAGE_ENGINE=1 # 将分区存储引擎编译进去 -DEXTRA_CHARSETS=all # 安装所有扩展字符集 -DDEFAULT_CHARSET # 字符集,默认字符集是latin1 -DDEFAULT_COLLATION=collation_name # 服务校对,默认的是latin1_swedish_ci,可以通过SHOW COLLATION语句查看哪个校对匹配的字符集 -DWITH_BOOST # boost类库所在目录 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1 # 将FEDERATED存储引擎编译进去 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 # 将BLACKHOLE存储引擎编译进去 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 # 不编译EXAMPLE存储引擎 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 # 将Performance Schema(性能视图)存储引擎编译进去 -DCOMPILATION_COMMENT=string # 编译环境描述 -DENABLED_PROFILING=bool # 是否开启profiling代码的查询(用于SHOW PROFILE and SHOW PROFILES语句) -DWITH_EXTRA_CHARSETS=name # 指定额外的字符集,默认是all,包含所有的字符集。 -DINSTALL_BINDIR=dir_name # 安装用户程序的路径,默认路径是DCMAKE_INSTALL_PREFIX/bin -DINSTALL_DOCDIR=dir_name #安装文档的路径,默认路径是DCMAKE_INSTALL_PREFIX/doc -DINSTALL_INCLUDEDIR=dir_name #安装头文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/include -DINSTALL_LIBDIR=dir_name # 安装库文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/lib -DINSTALL_MANDIR=dir_name #安装帮助手册的路径,默认路径是DCMAKE_INSTALL_PREFIX/man -DINSTALL_PLUGINDIR=dir_name # 安装插件的路径,默认路径是DCMAKE_INSTALL_PREFIX/lib/plugin -DINSTALL_SBINDIR=dir_name # 安装mysqld服务端启动脚本的路径,默认路径是DCMAKE_INSTALL_PREFIX/bin -DINSTALL_SCRIPTDIR=dir_name # 初始化MySQL数据库的数据文件路径的mysql_install_db脚本路径,默认路径是DCMAKE_INSTALL_PREFIX/scripts -DINSTALL_SQLBENCHDIR=dir_name # 安装sql-bench的路径,默认路径是DCMAKE_INSTALL_PREFIX -DINSTALL_SUPPORTFILESDIR=dir_name # 安装支持文件的路径,默认路径是DCMAKE_INSTALL_PREFIX/support-files # 如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库: -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 ``` >Ps:也许在编译安装的过程中,你们会遇到这样的报错:`c++: internal compiler error: Killed (program cc1plus)` >查询原因是内存不足引起的,服务器内存才1G。请参考【https://www.jianshu.com/p/901399e0e44b】。 >没遇到请跳过。 ## 5. 配置MySQL >由于上一步编译安装有部分目录是提前设置的,但是服务器并没有这些目录,所以需要手动创建这些目录。比如`DMYSQL_UNIX_ADDR=/var/lib/mysql57/mysql57.socket` ```php //新增mysql用户组 groupadd mysql //新增mysql用户 useradd -M -g mysql -s /sbin/nologin mysql //如果用户和用户组已存在会报已存在 //配置my.cnf vim /etc/my.cnf # 修改为以下内容,其它全部删掉 [mysqld] port=3306 datadir=/data pid-file=/var/run/mysql57/mysql57.pid socket=/var/lib/mysql57/mysql57.socket log-error=/var/log/mysql57/mysql57.log user=mysql [client] socket=/var/lib/mysql57/mysql57.socket ``` 这一步和编译过程都用到了cmake中的-DMYSQL_DATADIR和-DMYSQL_UNIX_ADDR设置的路径,现在就需要我们来创建这个目录。 ```php mkdir /data/ mkdir /var/lib/mysql57/ mkdir /var/run/mysql57 mkdir /var/log/mysql57/ //修改权限 chown -R mysql:mysql /usr/local/mysql57/ /data/ /var/lib/mysql57/ /var/log/mysql57/ /var/run/mysql57 //初始化设置 cd /usr/local/mysql57/ ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57/ --datadir=/data/ /usr/local/mysql57/support-files/mysql.server start //每次使用mysql服务相关命令需要 加一长串或者cs到这个server所在目录,操作不便,所以才有了下一步 ``` ## 6. 设置MySQL为系统服务 ```php //新增编辑linux中systemd文件 vim /lib/systemd/system/mysql57.service //打开为空 # 添加文件内容如下: [Unit] Description=mysql After=network.target [Service] Type=forking ExecStart=/usr/local/mysql57/support-files/mysql.server start ExecStop=/usr/local/mysql57/support-files/mysql.server stop ExecRestart=/usr/local/mysql57/support-files/mysql.server restart ExecReload=/usr/local/mysql57/support-files/mysql.server reload PrivateTmp=true [Install] WantedBy=multi-user.target ``` ## 7. 开机启动、启动服务 具体命令请参照本篇 《一、nginx的安装 中 3. nginx相关命令》,在centos7中命令大乎于此 ``` systemctl enable mysql57.service ``` ## 8. mysql数据库配置相关命令 ```php //更改密码 /usr/local/mysql57/bin/mysql mysql> update mysql.user set authentication_string=password('root') where user='root' and host = 'localhost'; Query OK, 1 row affected, 1 warning (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) ``` 以上是直接使用mysql所在目录连接。此时使用`mysql -u root`会发现有报错`-bash: mysql: command not found`。 这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个快捷方式。 ```php cd /usr/local/bin ln -fs /usr/local/mysql57/bin/mysql mysql ``` >还有其它常用命令mysqladmin、mysqldump等不可用时候都可按用此方法解决 ### 常用命令 1. create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和create database创建数据库的效果一样。 2. create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户 密码8位以上,包括:大写字母、小写字母、数字、特殊字符 %:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘ > 数据库中密码策略有不同这里也许会报错 > `Your password does not satisfy the current policy requirements` > 可以改变自己的密码策略(具体方法网上可以搜到) 3. `grant select,insert,update,delete,create on [数据库名称].* to [用户名称];`--用户授权数据库 `grant all on [数据库名称].* to [用户名称];`--全部权限 `grant all privileges on [数据库名称].* to '[用户名称]'@'%';` *代表整个数据库 4. flush privileges ;--立即启用修改 5. revoke all on *.* from tester;--取消用户所有数据库(表)的所有权限 6. delete from mysql.user where user='tester';--删除用户 7. drop database [schema名称|数据库名称];--删除数据库 ## 9. 使用navicate连接 端口3306默认是不向外部开放,一般root用户不要开启外界访问权限,新建多个用户分配不同的权限即可 防火墙iptables得开启请参考我写的另一篇文章[https://blog.csdn.net/qq_37246351/article/details/88313418](https://blog.csdn.net/qq_37246351/article/details/88313418) # 三、PHP安装 ## 1. 下载php依赖包 ```php yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel ``` ## 2. 下载php压缩包解压 ```php wget http://cn2.php.net/distributions/php-7.2.5.tar.gz tar zxvf php-7.2.5.tar.gz -C /usr/src/ ``` ![龟速下载中](https://img-blog.csdnimg.cn/20190314155750870.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3MjQ2MzUx,size_16,color_FFFFFF,t_70) ## 3. 编译安装 ```php //进入解压目录 cd /usr/src/php-7.2.5/ //编译一大堆 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-mysqli=/usr/local/mysql57/bin/mysql_config --with-iconv-dir=/usr/local --enable-mysqlnd --with-pdo-mysql=/usr/local/mysql57 --with-pcre-dir=/usr/local/ --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --with-gd --with-iconv --with-zlib --with-libxml-dir=/usr --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-bcmath //安装 make && make install ``` ## 4. 配置php-fpm >php-fpm即php-Fastcgi Process Manager. php-fpm是 FastCGI 的实现,并提供了进程管理的功能。 进程包含 master 进程和 worker 进程两种进程。 master 进程只有一个,负责监听端口,接收来自 Web Server 的请求,而 worker 进程则一般有多个(具体数量根据实际需要配置),每个进程内部都嵌入了一个 PHP 解释器,是 PHP 代码真正执行的地方。 >php-fpm工作原理: >www.example.com | | Nginx | | 路由到www.example.com/index.php | | 加载nginx的fast-cgi模块 | | fast-cgi监听127.0.0.1:9000地址 | | www.example.com/index.php请求到达127.0.0.1:9000 | | php-fpm 监听127.0.0.1:9000 | | php-fpm 接收到请求,启用worker进程处理请求 | | php-fpm 处理完请求,返回给nginx | | nginx将结果通过http返回给浏览器 ```php # sysconfigdir参数决定的(因为,指定安装路径为/usr/local/php,所以就要拷到/usr/local/php/etc/目录下) cp /usr/src/php-7.2.5/php.ini-development /usr/local/php/etc/php.ini vim /usr/local/php/etc/php.ini # 修改以下内容 1013 pdo_mysql.default_socket=/var/lib/mysql57/mysql57.socket # 对应的socket文件地址 1154 mysqli.default_port = 3306 # 改成对应的MySQL的端口 1159 mysqli.default_socket = /var/lib/mysql57/mysql57.socket # 对应的socket文件地址 //配置php-fpm配置文件(配置fastcgi) # 先改名,把.default去掉 cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf vim /usr/local/php/etc/php-fpm.d/www.conf # 修改以下内容,并把注释“;”去掉 23 user = www-data 24 group = www-data 36 listen = /var/run/fastcgi/fastcgi.socket 47 listen.owner = www-data 48 listen.group = www-data 49 listen.mode = 0660 113 pm.max_children = 64 118 pm.start_servers = 20 123 pm.min_spare_servers = 5 128 pm.max_spare_servers = 35 139 pm.max_requests = 3000 344 rlimit_files = 65535 420 php_flag[display_errors] = on //给这个文件权限'/var/run/fastcgi/fastcgi.socket' groupadd www-data useradd -M -g www-data -s /sbin/nologin www-data mkdir /var/run/fastcgi chown -R nginx.nginx /var/run/fastcgi/ ``` ## 5. php-fpm的相关命令(启动,停止) ```php /usr/local/php/sbin/php-fpm //启动过后,就可以在/var/run/fastcgi/目录下找到socket文件 ll /var/run/fastcgi/ //文件信息如下: total 0 srw-rw---- 1 www-data www-data 0 Mar 18 14:32 fastcgi.socket //查看相关进程 ps -ef | grep fpm //由于我们配置的是20个进程,所以当前总量为20 root 22815 1 0 14:32 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) www-data 22816 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22817 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22818 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22819 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22820 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22821 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22822 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22823 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22824 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22825 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22826 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22827 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22828 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22829 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22830 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22831 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22832 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22833 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22834 22815 0 14:32 ? 00:00:00 php-fpm: pool www www-data 22835 22815 0 14:32 ? 00:00:00 php-fpm: pool www root 23405 12811 0 14:42 pts/0 00:00:00 grep --color=auto fpm //终止php-fpm pkill php-fpm ``` ## 6. 设置php-fpm为系统服务、开机启动 ```php vim /etc/systemd/system/php-fpm.service //添加文件内容如下: [Unit] Description=php-fpm After=network.target [Service] Type=forking ExecStart=/usr/local/php/sbin/php-fpm PrivateTmp=True [Install] WantedBy=multi-user.target systemctl enable php-fpm.service systemctl start php-fpm.service //如果启动失败报错,可尝试使用pkill php-fpm 关闭再启动 ``` # 四、总结 总的来说,安装过程无非都是先yum安装扩展包,wget下载安装包,tar解压到/usr/src/,进入安装目录,编译配置项,make && make install进行安装。大多离不开这几步。 使用CentOs7要求能了解systemctl 命令,对服务进行重启,热加载配置文件等操作。 配置mysql数据库能学习怎么添加用户组,添加用户,给用户分配权限等操作。 至此,一次源码安装服务器环境的总过程结束了。文中大部分安装指令是博主多方考究,结合实际,整理出来,并非攻略教学。只是记录自己一次安装经历,供以后自己或者有同样问题的道友提供帮助。如果有错或者侵权忘请指出,留言评论我都会看到。 【参考】 https://blog.51cto.com/13525470/2117048 https://www.cnblogs.com/zoulongbin/p/6287167.html https://segmentfault.com/a/1190000000375848 https://www.cnblogs.com/liujuncm5/p/6713784.html https://www.cnblogs.com/lxjshuju/p/7183689.html https://blog.csdn.net/u012498149/article/details/78772058 https://www.cnblogs.com/jr1260/p/6590860.html 未经允许不得转载:张浩博客 » lnmp服务器环境搭建(一)源码安装
评论前必须登录!
立即登录 注册