现在公司的项目由于一直是一个外包团队在维护,一直运行在Windows Server上,我接手之后从长远考虑以及熟练及安全、性能等方面考虑,我最终决定换成Linux,而由于运行的是公司的正式项目,毫无疑问选择了CentOS,至于版本,我选择了最新的CentOS7。而服务器本打算是用流行的Nginx的,但是几个CGI参数始终无法配置好,出于稳定性考虑,最后选择了Apache。
安装基本软件包
由于CentOS 7 自带的PHP版本才5.4,不能满足我们开发的程序的要求,本着能包管理器安装就不编译安装的原则,选择了webstatic这个源的包,更新系统:
yum update
安装EPEL源:
yum install epel-release
安装webstatic源:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
安装Apache、安装PHP及Mariadb数据库命令如下:
yum install httpd php56w php56w-mysql php56w-pdo php56w-gd php56w-mcrypt php56w-mbstring php56w-json php56w-xml php56w-openssl mariadb-server -y
对,你没看错,CentOS下的Apache在包管理器中的名字就是httpd。这样就安装好了各个所需要的组件,接下来就是配置了。
Apache基本配置
用 yum
安装的apache,配置文件在 /etc/httpd/
,我们需要改的各个配置文件都在这个目录下面。
首先,更改/etc/httpd/conf/httpd.conf
中的ServerName
字段,否则会提示AH00558
字段:
[root@localhost ~]# httpd -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK
接着,在/etc/httpd/conf.d/
下面新建一个example.conf
文件,这个就是我们需要的虚拟主机配置文件,如果只是想要HTTP服务,复制下面这段并进行相应修改即可:
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example/
ServerAlias example
ErrorLog /var/log/httpd/example.error.log
CustomLog /var/log/httpd/example.log combined
<Directory /var/www/example>
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo Options
Order allow,deny
allow from all
</Directory>
Header unset X-Powered-By
</VirtualHost>
配置完成之后,用apache自带的工具检查是否有语法错误。
配置Apache提供HTTPS服务
但是由于现在的潮流是提供HTTPS服务,我们这个项目也给App端提供数据接口服务,按照苹果的要求以及处于安全性考虑,确实有必要上HTTPS服务,但是考虑到实际业务情况,我们现阶段不打算强制跳转到HTTPS访问,于是采用的是HTTP和HTTPS都可访问策略,这就要求要准备一份SSL证书了,申请证书这一步按下不表,很多途径都可以申请,我这里只记录下配置步骤。
要使用yum
包管理器安装的Apache支持SSL,还需要安装一个Apache模块,命令如下:
yum install mod_ssl
然后是增加对应的SSL配置,在上面那个配置文件末尾增加或者新建一个配置文件都行,相应配置:
<VirtualHost *:443>
ServerName https://www.example.com
DocumentRoot /var/www/example/
ServerAlias example
ErrorLog /var/log/httpd/example.error.log
CustomLog /var/log/httpd/example.log combined
<Directory /var/www/example>
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo Options
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLCertificateFile /var/www/example-ssl/xxx.pem
SSLCertificateKeyFile /var/www/example-ssl/xxx.key
</VirtualHost>
复制,更改对应的项即可。
然后再次检查一下语法是否有误:
httpd -t
如果没问题,可以重启httpd
服务:
systemctl restart httpd
额外配置
上面有个配置项我这里记录一下,Header unset X-Powered-By
这一行是让Apache
隐藏对应的http header
,处于安全考虑不允许后端暴露太多信息。
同样需要隐藏的还有Apache的版本号以及操作系统信息,在/etc/httpd/conf/httpd.conf
文件末尾增加下面两行:
ServerTokens Prod
ServerSignature Off
最后再检查一下是否有语法错误,如果一切正常则可以重启Apache服务或者重新加载配置文件。
由于Apache是以apache用户组下的apache用户运行的,所以,对应的网站目录文件需要给予对应的权限才能使网站正常运行:
chown -R apache.apache /var/www/example
上面的文件路径改成对应的网站文件路径即可。