[建站基础系列] 04. 服务器环境的选择,以及Nginx/Apache的基本配置
上文介绍了操作系统的选择,为了方便阐述,我们假设你选择了Ubuntu作为你服务器操作系统。
服务器软件的选择
目前最流行的PHP服务器容器程序,肯定是nginx和apache了。对于新同学来说,可能会对选择哪一个作为自己的服务器软件会比较纠结。
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”并回车即可继续,如下图:
接着,输入MySQL的root用户的密码,
至此,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
网站运行效果:
小结:在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/
接着,配置nginx的Virualhost
,并启用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
浏览器访问https://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环境都非常简单,完全通过命令即可完成配置动作。各位同学可以根据自己的需求,选择合适的容器软件。
版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。
评论已关闭