CentOS7源码编译安装nginx+php+mysql

1.安装nginx

安装依赖

复制代码
yum -y install gcc gcc-c++ wget automake autoconf libtool libxml2-devel libxslt-devel perl-devel perl-ExtUtils-Embed pcre-devel openssl  openssl-devel

创建一个不能登录的nginx运行用户

复制代码
groupadd www-data
useradd -s /sbin/nologin -g www-data www-data

创建源码保存目录和运行时的临时文件夹,下载nginx源码,当前稳定版为nginx-1.22.1

复制代码
mkdir -p /var/cache/nginx

mkdir -p /usr/local/src/nginx

cd /usr/local/src/nginx

wget -c http://nginx.org/download/nginx-1.22.1.tar.gz

解压

复制代码
tar -zxvf nginx-1.22.1.tar.gz

cd /usr/local/src/nginx/nginx-1.22.1

编译前配置检查​​​​​​​

复制代码
./configure \

--prefix=/usr/local/nginx \

--sbin-path=/usr/local/nginx/sbin/nginx \

--conf-path=/usr/local/nginx/conf/nginx.conf \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--pid-path=/var/run/nginx.pid \

--lock-path=/var/run/nginx.lock \

--http-client-body-temp-path=/var/cache/nginx/client_temp \

--http-proxy-temp-path=/var/cache/nginx/proxy_temp \

--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \

--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \

--http-scgi-temp-path=/var/cache/nginx/scgi_temp \

--user=www-data \

--group=www-data \

--with-pcre \

--with-http_v2_module \

--with-http_ssl_module \

--with-http_realip_module \

--with-http_addition_module \

--with-http_sub_module \

--with-http_dav_module \

--with-http_flv_module \

--with-http_mp4_module \

--with-http_gunzip_module \

--with-http_gzip_static_module \

--with-http_random_index_module \

--with-http_secure_link_module \

--with-http_stub_status_module \

--with-http_auth_request_module \

--with-mail \

--with-mail_ssl_module \

--with-file-aio \

--with-http_v2_module \

--with-threads \

--with-stream \

--with-stream_ssl_module

配置检查完毕,查看是否创建了Makefile,如果未创建成功,一般是因为缺失依赖包,根据提示安装依赖包。​​​​​​​

编译,安装​​​​​​​

复制代码
make

make install

启动nginx

复制代码
/usr/local/nginx/sbin/nginx

查看进程

复制代码
ps aux|grep nginx

杀掉进程

复制代码
pkill -9 nginx

配置服务

复制代码
vim /usr/lib/systemd/system/nginx.service

输入如下配置​​​​​​​

复制代码
[Unit]

Description=nginx - high performance web server

Documentation=http://nginx.org/en/docs/

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target


[Service]

Type=forking

PIDFile=/var/run/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s TERM $MAINPID

ExecStartPost=/bin/sleep 0.1


[Install]

WantedBy=multi-user.target

注意:如果你是单核服务器,需要加ExecStartPost=/bin/sleep 0.1

否则在执行systemctl start nginx之后,在执行systemctl status nginx时

会出现systemd[1]: Failed to read PID from file /var/run/nginx.pid: Invalid argument

这是因为nginx还未启动完成,systemctl就去寻找pid进程文件了,这是一个已知的bug

重新载入 systemd

复制代码
systemctl daemon-reload

开启开机启动

复制代码
systemctl enable nginx.service

启动和查看nginx状态

复制代码
systemctl start nginx

systemctl status nginx
相关推荐
Java水解15 小时前
Mysql查看执行计划、explain关键字详解(超详细)
后端·mysql
BingoGo18 小时前
2025 年 PHP 常见面试题整理以及对应答案和代码示例
后端·php
知其然亦知其所以然19 小时前
MySQL 社招必考题:如何优化查询过程中的数据访问?
后端·mysql·面试
DemonAvenger20 小时前
NoSQL与MySQL混合架构设计:从入门到实战的最佳实践
数据库·mysql·性能优化
程序新视界21 小时前
如何在MySQL中创建聚集索引?
mysql
AAA修煤气灶刘哥1 天前
后端人速藏!数据库PD建模避坑指南
数据库·后端·mysql
程序新视界1 天前
学习MySQL绕不开的两个基础概念:聚集索引与非聚集索引
mysql
RestCloud1 天前
跨境数据传输:ETL如何处理时区与日期格式差异
mysql·api
得物技术2 天前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
xiaok2 天前
mysql中怎么创建一个可控权限数据库账号密码给到开发者
mysql