OrzLee

这个世界上只有一个问题
那就是时间问题

Ubuntu 安装nginx

nginx.png

前言

开发期间经常需要搭建环境,网上也有很多集成环境,但是我还是推荐自己搭建。做开发的还是需要最基础的技能,开发人员不愿意折腾,难道让用户去折腾吗?

nginx

nginx是轻量级但非常强大的异步框架Web服务器,相较于Apachelighttpd具有占有内存少,稳定性高等优势,官方测试支持五万个并发连接。了解更多信息前往维基百科-Nginx

安装

安装方法分为两种,编译安装和linux packages安装。linux packages安装非常方便,但是如果需要第三方扩展还是非常麻烦的。

  • 编译安装
  1. Nginx news下载最新的安装包(当然也可以下载其他版本的安装包).

    wget http://nginx.org/download/nginx-1.15.6.tar.gz
  2. 解压安装包

    tar -zxvf nginx-1.15.6.tar.gz
  3. 进入文件夹

    cd nginx-1.15.6
  4. 安装编译工具和依赖库

    apt install build-essential
    apt install libpcre3-dev zlib1g-dev libssl-dev
  5. 编译安装

    ./configure --prefix=/usr --conf-path=/etc/nginx --user=www-data --group=www-data
    make
    sudo make install

    安装完成后配置文件在/etc/nginx目录下,执行文件在/usr/sbin目录下。 可以在编译时指定模块,方便扩展(以下是apt安装nginx配置参数):

    ##安装依赖
    apt install libxml2 libxml2-dev libxslt1-dev libgdchart-gd2-xpm libgdchart-gd2-xpm-dev libgeoip-dev
    ##配置
    ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module

    如果找不到nginx的话,配置下环境变量:

    nano /etc/profile
    ##末尾加入
    export PATH="$PATH:/usr/share/nginx/sbin"

    恢复/etc/nginx/目录方法:

    sudo apt purge nginx-common
    apt install nginx-common

    更多./configure配置信息可以去nginx configure查看,相关文档nginx documentation

  • linux packages安装

    直接安装会安装比较老旧的版本。 sudo apt install nginx

  1. 安装nginx-signing.key

    For Debian/Ubuntu, in order to authenticate the nginx repository signature and to eliminate warnings about missing PGP key during installation of the nginx package, it is necessary to add the key used to sign the nginx packages and repository to the apt program keyring. Please download this key from our web site, and add it to the apt program keyring with the following command: 对于Debian / Ubuntu,为了验证nginx存储库签名并在安装nginx包期间消除有关丢失PGP密钥的警告,有必要将用于签署nginx包和存储库的密钥添加到apt程序密钥环。请从我们的网站下载此密钥,并使用以下命令将其添加到apt程序密钥环:

     wget http://nginx.org/keys/nginx_signing.key
     sudo apt-key add nginx_signing.key
  2. 添加官方源

    echo "deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx">> /etc/apt/sources.list
    echo "deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx">> /etc/apt/sources.list
  3. 更新源并安装nginx

    apt update
    apt install nginx

    至此,nginx就安装完成了,配置文件在/etc/nginx目录下。

配置

如果nginx主进程使用root运行,那么nginx 将会调用 setuid()/setgid() 去设置 user/group。如果 group 没有特别指定,那么 nginx 会使用 user 相同的名称设置 group。默认为 nobody nogroup 或者安装nginx的时候在 ./configure 指定的 --user=USER 和 --group=GROUP

由于是linux packages安装,安装好nginx之后首先需要修改nginx user。

nano /etc/nginx/nginx.conf
##指定user为www-data
user  www-data;

nano保存修改退出

  • 保存 Ctrl+o
  • 确认修改 Enter
  • 退出 Ctrl+x

重启nginx

sudo service nginx restart
新站点

个人喜欢使用配置域名命名配置文件www.example.com。 新建一个配置文件

nano /etc/nginx/conf.d/www.example.com.conf
###内容
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    root /var/www/web_site/public; ##修改为自己站点目录
    index index.php index.html index.htm;
    server_name server_domain_or_IP ##修改为自己的域名(www.example.com example.com);
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

每次创建新的站点配置文件,或者修改配置文件都要养成好习惯。先测试,再重载,特别是线上环境。

nginx -t
nginx -s reload

现在可以去浏览器测试自己的站点是否配置正确,正常访问了。

结语

orzlee以前也使用Apache,那时候还在用C#开发,接触PHP的后才慢慢转向nginx。同行中也有不少在使用Apache,其实都各有优缺点。个人觉得nginxApache要简单,性能方面nginx要优于Apache。orzlee服务器主要使用Ubuntu 16.04

本原创文章未经允许不得转载 | 当前页面:OrzLee » Ubuntu 安装nginx

评论