lnmp服务器环境搭建(一)源码安装

概括

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/

安装前准备:
如果下列安装顺序不同,请注意添加用户组和用户,否则会有报错

 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相关编译环境

yum install gcc-c++

PCRE pcre-devel 安装

PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。而且关于路由重写也是需要Perl库。

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

以上环境或扩展安装都也会提示你现在已经安装并且是最新版本。

已安装过

2.编译安装nginx

下载安装包

wget  http://nginx.org/download/nginx-1.8.0.tar.gz

解压

tar -zxvf nginx-1.8.0.tar.gz -C /usr/src/

配置

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模块

配置nginx

编译安装

make && make install
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
./nginx -s reload

开机自启动

//文件本来为空
vim /lib/systemd/system/nginx.service
# 添加文件内容如下:
[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

systemctl start nginx.service
//查看是否启动成功
lsof -i:80

成功

成功访问

配置nginx文件

其实以上过程是可以正常访问,但是有些配置需要你安装完其他服务后再进行的。如php-fpm
以下操作是在php和mysql安装完成后再写入配置的

//编辑配置文件
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

二、mysql安装

tips:如果先安装php,那么在编译配置php一些配置项的时候关于mysql的一系列有关项会报错,需要重新编译一次,所以在安装php前先安装mysql


提示mysql有关项需要重新编译

1. 安装MySQL依赖包

//查询是否存在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类库

//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包

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. 编译安装

//进入编译目录
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
**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

//新增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设置的路径,现在就需要我们来创建这个目录。

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为系统服务

//新增编辑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数据库配置相关命令

//更改密码
/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目录下,相当于建立一个快捷方式。

 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创建数据库的效果一样。

  1. create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户

密码8位以上,包括:大写字母、小写字母、数字、特殊字符

%:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘

数据库中密码策略有不同这里也许会报错
Your password does not satisfy the current policy requirements
可以改变自己的密码策略(具体方法网上可以搜到)

  1. grant select,insert,update,delete,create on [数据库名称].* to [用户名称];--用户授权数据库
    grant all on [数据库名称].* to [用户名称];--全部权限
    grant all privileges on [数据库名称].* to '[用户名称]'@'%';
    *代表整个数据库

  2. flush privileges ;--立即启用修改

  3. revoke all on . from tester;--取消用户所有数据库(表)的所有权限

  4. delete from mysql.user where user='tester';--删除用户

  5. drop database [schema名称|数据库名称];--删除数据库

9. 使用navicate连接

端口3306默认是不向外部开放,一般root用户不要开启外界访问权限,新建多个用户分配不同的权限即可
防火墙iptables得开启请参考我写的另一篇文章https://blog.csdn.net/qq_37246351/article/details/88313418

三、PHP安装

1. 下载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压缩包解压

wget http://cn2.php.net/distributions/php-7.2.5.tar.gz
tar zxvf php-7.2.5.tar.gz -C /usr/src/
龟速下载中

3. 编译安装

//进入解压目录
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返回给浏览器

# 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的相关命令(启动,停止)

/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为系统服务、开机启动

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容