概括
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模块
编译安装
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
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等不可用时候都可按用此方法解决
常用命令
- create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库
采用create schema和create database创建数据库的效果一样。
- create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户
密码8位以上,包括:大写字母、小写字母、数字、特殊字符
%:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘
数据库中密码策略有不同这里也许会报错
Your password does not satisfy the current policy requirements
可以改变自己的密码策略(具体方法网上可以搜到)
grant select,insert,update,delete,create on [数据库名称].* to [用户名称];
--用户授权数据库
grant all on [数据库名称].* to [用户名称];
--全部权限
grant all privileges on [数据库名称].* to '[用户名称]'@'%';
*代表整个数据库flush privileges ;--立即启用修改
revoke all on . from tester;--取消用户所有数据库(表)的所有权限
delete from mysql.user where user='tester';--删除用户
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