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

发布于:2024-12-21 ⋅ 阅读:(14) ⋅ 点赞:(0)

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