[建站基础系列] 04. 服务器环境的选择,以及Nginx/Apache的基本配置

上文介绍了操作系统的选择,为了方便阐述,我们假设你选择了Ubuntu作为你服务器操作系统。

服务器软件的选择

目前最流行的PHP服务器容器程序,肯定是nginxapache了。对于新同学来说,可能会对选择哪一个作为自己的服务器软件会比较纠结。

Apache

我们首先介绍一下apache。Apache HTTP服务器是一个模块化的服务器,它快速、可靠并且可通过简单的API扩展,将PHP/Python等解释器编译到服务器中。Apache的模块化做得非常好,对PHP的支持也非常完美。PHP最开始流行起来的套件就是LAMP(Linux+Apache+Mysql+PHP),apache在其中充当着非常重要的角色。

Nginx

Nginx是一个高性能的HTTP和反向代理服务器,由俄罗斯人开发,其特点是并发能力非常强,并且内容资源还比较少。Nginx相对于Apache来说,由于是后起之秀,所以其配置、设计理念等都比较新,没有apache那么多历史包袱。

相对来说,Apache可以说对PHP的支持是“开箱即用”,无需过多配置既可以完美支持PHP的运行,而Nginx相对于apache来说,在更低资源损耗的情况下,却能够支持更高的并发。

部署建议:个人建议在开发环境中部署apache,在生产环境(线上环境)部署Nginx。后面详细说下理由。

Apache的部署和配置

环境安装

本文系列文章均假设你操作系统采用的是Ubuntu 16.04 LST版本,所有命令均在Ubuntu 16.04LST版本中测试通过。

Ubuntu上安装Apache/MySQL/PHP非常方便,只需要简单几步即可。

sudo apt-get update #可选
sudo tasksel

然后出现对话框界面,选择LAMP Server,敲空格选中,敲“TAB”切换到“OK”并回车即可继续,如下图:

[建站基础系列] 04. 服务器环境的选择,以及Nginx/Apache的基本配置

接着,输入MySQL的root用户的密码,

[建站基础系列] 04. 服务器环境的选择,以及Nginx/Apache的基本配置

至此,MySQL、PHP和Apache已经安装完成,并且已经自动配置apache中的php扩展等,环境已经全通。

配置和使用

下一步是安装Typecho或者Wordpress,并配置Virualhost。

按照Ubuntu的约定,我们将网站安装在/var/www/目录下。

sudo mkdir -p /var/www/typechodev.com #创建网站目录
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz -O /tmp/typecho.tar.gz #下载Typecho源代码
tar -C /tmp/ -xzvf /tmp/typecho.tar.gz # 解压到临时目录/tmp/
sudo cp -Rf /tmp/build/* /var/www/typechodev.com/ #将解压后的网站文件拷贝到我们自己的网站目录中

注意,Typecho的最新版本下载地址请自行到http://typecho.org/download获取。

接着我们配置Apache,使其能够访问/var/www/typechodev.com

cd /etc/apache2/sites-available  #进入配置目录
sudo cp 000-default.conf typechodev.com.conf #从示例配置文件中复制一份到typechodev.com.conf
sudo vim typechodev.com.conf #按需修改typechodev.com.conf

修改内容如下:

#File: /etc/apache2/sites-available/typechodev.com.conf
<VirtualHost *:80>
    ServerName www.typechodev.com   #网站域名

    ServerAdmin webmaster@localhost #这里随意
    DocumentRoot /var/www/typechodev.com #指定网站根目录

    ErrorLog ${APACHE_LOG_DIR}/typechodev.error.log #配置网站的Error log。这里强烈建议配置起来,方便排查问题
    CustomLog ${APACHE_LOG_DIR}/typechodev.access.log combined #配置网站的Access Log,按需配置即可。
</VirtualHost>

ps:如果复制使用上面的配置,请自己手动删掉#及后面的注释

最后,启用网站配置并重启Apache:

cd /etc/apache2/sites-enabled/
sudo ln -s ../sites-available/typechodev.com.conf ./
sudo service apache2 restart

网站运行效果:

[建站基础系列] 04. 服务器环境的选择,以及Nginx/Apache的基本配置

小结:在Ubuntu上安装和配置LAMP是一件非常简单的事情,只需要简单几条命令就已经将全套环境配置好,而且,有兴趣的同学可以研究下mysql等的配置,ubuntu甚至帮你根据你当前系统的规格(内存、磁盘等),对mysql参数进行了一定的调优。

Nginx的部署和配置

相对的,我们来看看Nginx在Ubuntu上如何部署和配置

环境安装

相比Apache,Nginx环境的安装就没有类似tasksel的工具可用,需要自己逐个安装:

sudo apt-get install nginx
sudo apt-get install mysql-server
sudo apt-get install php7.0-fpm # 这步会以依赖项的形式自动安装PHP
sudo apt-get install php7.0-xml  #安装xml模块,支持utf-decode
sudo apt-get install php7.0-mysql #安装mysql模块

ps:这个时候,将php脚本丢在/var/www/目录下还不能直接运行,还需要配置nginx,这个后面和网站配置一期说明。

就这样,运行typecho所需要的依赖软件已经安装完毕。

配置和使用

和上文介绍apache时一样,我们先下载和部署typecho源代码。

sudo mkdir -p /var/www/typechodev.com 
wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz -O /tmp/typecho.tar.gz 
tar -C /tmp/ -xzvf /tmp/typecho.tar.gz 
sudo cp -Rf /tmp/build/* /var/www/typechodev.com/ 

接着,配置nginxVirualhost,并启用php支持。

和上文一样,到sites-available目录下,参考default配置来修改成我们的配置

cd /etc/nginx/sites-available/
sudo cp default typechodev.com
sudo vim typechodev.com

修改之后的网站配置如下:

server {
    listen 80;
    listen [::]:80;

    root /var/www/typechodev.com;
    index index.php;

    server_name www.typechodev.com;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

    location ~ \.php($|/.*)$ {
        include snippets/fastcgi-php.conf;

        # With php7.0-fpm:
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
    access_log /var/log/nginx/typechodev.access.log;
    error_log /var/log/nginx/typechodev.error.log;#同样,强烈建议打开各自网站的error log,方便日后排查问题
}

这份配置修改起来非常简单,基本上都是根据default中的注释说明,修改参数或者打开某行注释即可,无特别需要注意的地方。

最后,启用nginx配置并使其生效:

cd /etc/nginx/sites-enabled/
sudo ln -s ../sites-available/typechodev.com ./
sudo nginx -t
sudo nginx -s reload

浏览器访问http://www.typechodev.com,效果Apache。

自此,LAMP和LNMP环境搭建和网站配置已经演示完毕,总地来说,LAMP相比LNMP来说稍微简单一些,Nginx需要额外在site.conf中配置php7.0-fpm

另外,补充一点,Ubuntu下的Apache对于PHP调试,尤其是远程调试,支持得非常好,基本上零配置即可直接使用。所以,个人建议,LAMP适合在开发环境中使用,LNMP由于其相对较好的并发性能,适合在生成环境中部署。

PHP扩展模块的安装和配置

Ubuntu下安装和启用php扩展也非常方便。老司机们应该都经历过,以前在windows或者centos上启用某些未安装的php扩展,需要自己下载so到指定目录,并且还要自己到php.ini中进行各种配置,非常复杂并且容易出错。但在ubuntu上则比较简单。以xdebug模块为例:

sudo apt-get install php-xdebug
sudo phpenmod xdebug #启用php模块
#sudo phpdismod xdebug ,如有需要,可以这样禁用php模块

tree可以观察到php的配置项:

tree /etc/php/7.0/
/etc/php/7.0/
├── cli
│   ├── conf.d
│   │   ├── 10-opcache.ini -> /etc/php/7.0/mods-available/opcache.ini
│   │   ├── 10-pdo.ini -> /etc/php/7.0/mods-available/pdo.ini
│   │   └── 20-xdebug.ini -> /etc/php/7.0/mods-available/xdebug.ini
│   └── php.ini
├── fpm
│   ├── conf.d
│   │   ├── 10-opcache.ini -> /etc/php/7.0/mods-available/opcache.ini
│   │   ├── 10-pdo.ini -> /etc/php/7.0/mods-available/pdo.ini
│   │   └── 20-xdebug.ini -> /etc/php/7.0/mods-available/xdebug.ini
│   ├── php-fpm.conf
│   ├── php.ini
│   └── pool.d
│       └── www.conf
└── mods-available
    ├── calendar.ini
    ├── ctype.ini
    └── xdebug.ini

6 directories, 64 files

ps:为了方便展示,已经省略了大部分可用配置项。

可以观察到,php的配置组织和nginx/apahce等类似,都是将可用配置放在x-available目录下,然后再将需要生效的配置软链到enable目录中。

总结:总的来说,ubuntu上配置apache或者nginx环境都非常简单,完全通过命令即可完成配置动作。各位同学可以根据自己的需求,选择合适的容器软件。


版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。