# 编译安装nginx > wandoubaba / 2023-07-21 ## 系统环境 以Debian11为例 ## 下载源码 以1.24.0版本为例,下载nginx: ```sh wget https://nginx.org/download/nginx-1.24.0.tar.gz ``` 如果提示`wget: command not found`就先安装wget,执行`sudo apt-get install wget`就行。 解压: ```sh tar zxvf nginx-1.24.0.tar.gz ``` ## 安装依赖 ```sh sudo apt-get install libgd-dev build-essential zlib1g-dev libpcre3-dev libssl-dev lsb-release ``` ## 创建www用户和组 查看www用户是否存在 ```sh id www ``` 创建www分组和www用户,并且不允许登录系统 ```sh groupadd www useradd -g www -s /sbin/nologin www ``` 再查看www用户 ```sh id www ``` ## 编译安装 ```sh cd nginx-1.24.0 ``` 带参数执行编译 ```sh ./configure --user=www --group=www \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_image_filter_module \ --with-http_addition_module \ --with-http_stub_status_module \ --with-stream \ --with-stream_ssl_module \ --with-stream_ssl_preread_module \ --with-http_gzip_static_module \ --with-http_gunzip_module \ --with-http_sub_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_dav_module \ --with-openssl-opt=-g \ --with-pcre-opt=-g \ --with-pcre ``` 安装: ```sh make sudo make install ``` 经过以上步骤,nginx已经被安装到`/usr/local/nginx`目录下,程序文件位于`/usr/local/nginx/sbin/nginx`。 ## 启动服务 可以先把nginx程序路径写到系统环境中(可以把这条命令加到`~/.bashrc`文件中) ```sh export PATH=/usr/local/nginx/sbin/:$PATH ``` 执行直接执行`nginx`即可启动服务。 在浏览器访问`http://ip`(把IP换成你的nginx主机地址),如果防火墙和安全组都放行了80端口,我们现在应该能看到`Welcome to nginx`页面了。 用下面的命令可以控制服务的启停: ```sh ## 重启服务 nginx -s reopen ## 停止服务 nginx -s stop nginx -s quit ## 重载配置 nginx -s reload ``` ## 注册系统服务 注意:操作系统不同,下面的方法可能不一样。 创建`/etc/systemd/system/nginx.service`文件: ```ini [Unit] Description=Nginx Service After=syslog.target network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t 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 ``` 执行下面的命令使服务生效并实现随系统启动: ```sh sudo systemctl daemon-reload sudo systemctl enable nginx ``` 用下面的命令控制服务: ```sh sudo systemctl start nginx sudo systemctl restart nginx sudo systemctl stop nginx sudo systemctl reload nginx sudo systemctl status nginx ```