Centos 7部署apache+php+sqlite搭建IT资产管理系统itdb
要在内网搭个IT资产管理系统,选了centos7最新版,在exsi6.0上开始的。
首先安装centos7,最小安装之后安装openssh过程略。
之后putty远程连进centos7,安装apache和php和sqlite。
Apache软件的软件包名称叫做httpd,因此,要安装Apache软件,就使用下述命令:
[root@localhost ~]# yum install httpd
安装完成后,Apache是以httpd服务的形式存在的。因此,要启动Apache并将其设置为开机启动,就使用命令:
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl enable httpd.service
然后,检查httpd服务状态:
[root@localhost ~]# systemctl status httpd.service
其中,“enabled”表示httpd服务已设为开机启动,“active(running)”则表示httpd服务正在运行中。
这样的话,HTTP协议就已被启动起来了,由于HTTP协议使用到tcp端口80,因此防火墙要放通tcp端口80:
[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙以让更改立刻生效:
[root@localhost ~]# firewall-cmd --reload
使用以下命令检查配置是否成功:
[root@localhost ~]# firewall-cmd --list-all
其中,,tcp端口80已放行通过了。
然后这个时候,就可以在物理机上使用浏览器来访问刚刚搭建的web服务器了。不过,因为这个时候还未创建任何页面,所以它显示的是Apache软件自带的测试页面。
设置Apache配置文件
Apache软件的主配置文件为/etc/httpd/conf/httpd.conf。关于Apache 2.4版软件的详细说明文档,可在网页http://httpd.apache.org/docs/2.4/en/中查阅到。特别是,关于主配置文件httpd.conf中各指令的详细说明,可在网页http://httpd.apache.org/docs/2.4/mod/directives.html中查阅到。
关于Apache 2.4版软件的详细说明文档,也可以将它安装在本地Linux主机上面,使用命令yum install httpd-manual即可安装它。安装完成后,重启httpd服务。在web服务运行正常的情况下,可在本地Linux主机上面使用网址http://localhost/manual/来访问它。在其它设备上面,则使用相应的网址即可,如在本实例中,我可以在物理机上使用网址http://172.31.2.2/manual/来访问它。
另外还需要知道:/etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取;可加载模块(如PHP)的配置文件应放置在/etc/httpd/conf.modules.d目录下,并且也以.conf结尾。
下面介绍一下httpd.conf这个配置文件的内容(少量配置有修改):
ServerRoot "/etc/httpd" //服务器根目录:本配置文件中没有使用绝对路径的地方,都认为是在该目录下
Listen 80 //侦听80端口
Include conf.modules.d/*.conf
//该设定让/etc/httpd/conf.modules.d目录下以.conf结尾的配置文件也会被读取进来。DSO对象的配置文件应放置在此目录下
User apache
Groupapache
//当你使用浏览器访问web服务器时,会产生相应的httpd进程,该进程所属的用户和组就由这里设定。
//从这里开始,下面的设定适用于“主”服务器,与虚拟主机区别开来。但如果<VirtualHost>部分未设定这些值,也会使用这些值
ServerAdmin root@localhost //系统管理员的邮箱。改成自己的邮箱即可。
ServerName www.speedsnail.com //设置主机名。生产环境中,该主机名应该是能被正确解析成这台服务器的IP的。
<Directory />
AllowOverride none
Require all denied
</Directory>
//<Directory 目录路径>和</Directory>:用于设定指定目录(这里是系统根目录)的访问权限。目录路径那里可以使用绝对
//路径和相对路径,还可以搭配使用通配符和正则表达式。
//AllowOverride:如果指定目录下(这里是系统根目录)存在一个.htaccess文件,那么AllowOverride设定的是,该文件里面的
//设置是否能够覆盖<Directory>这部分的设置,或该文件里面的设置可以覆盖的是<Directory>这部分的哪些设置。none表示不
//允许进行覆盖。
//Require:设定哪些用户可以访问该目录(这里是系统根目录)。all denied表示不允许访问该目录。
DocumentRoot "/var/www/html"
//设定网页存放目录。比如说,访问http://host/index.html实际上就是访问这个host的/var/www/html/index.html这个文档。
<Directory "/var/www">
AllowOverride None
Require all granted //all granted表示可无条件访问该目录。
</Directory>
<Directory"/var/www/html">
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
//Options:用于设定在该目录中哪些特性可用。FollowSymLinks,让该目录下的符号链接可以生效。默认这里还有个Indexes选
//项,建议拿掉。它的作用是,当浏览器访问该目录(而非该目录下的某一个档案)时,如果该目录下没有默认网页(如index.html),
//那么此时就会返回该目录下的文件名列表。
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
//<IfModule 模块>和</IfModule>:如果Apache有加载这里指定的模块,那么Apache就会对它们之间的语句进行处理。
//也可以使用<IfModule!模块>和</IfModule>,那么就表示没有加载指定的模块时才进行处理。
//这里的模块可以是模块ID(如rewrite_module),也可以是模块文件名(如mod_rewrite.c)。
//DirectoryIndex:这就是设置默认网页的,即当浏览器访问某一个目录时,会返回该目录下的index.html文件(如果存在的话)。
//也可以接多个档名,如DirectoryIndexindex.html index.htm index.cgi index.pl,这样就会返回找到的第一个文件。
<Files ".ht*">
Require all denied
</Files>
//<Files 文件名>和</Files>:对指定文件名的文件应用这里指定的语句。
//这里的语句的意思是:任意目录下,文件名符合.ht*的文件都会被禁止访问。
ErrorLog "logs/error_log" //错误日志所在文档为/etc/httpd/logs/error_log
LogLevel warn //设置日志记录级别
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "logs/access_log" combined //客户端访问服务器的日志会记在/etc/httpd/logs/access_log
</IfModule>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
//ScriptAlias会将URL路径映射到指定目录,并且让该目录具有CGI脚本执行权限(因此CGI脚本都可放置在该目录下)。
//以这里的设定举个例子,假如在浏览器中输入http://example.com/cgi-bin/foo,此时就会执行/var/www/cgi-bin/foo这个
//CGI脚本。
<Directory"/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module> //这部分是关于MIME的
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset Off
//AddDefaultCharset会强制客户端浏览器使用指定的字符集编码方式。这可能会有问题,所以要将它关闭。实际上,所使用的编
//码方式在网页里有声明。
<IfModule mime_magic_module>
MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on //允许Apache使用系统核心支持的sendfile来传送文件给客户端
IncludeOptional conf.d/*.conf //在/etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取
从上面也可以知道,默认情况下,网页文档可以放置在/var/www/html目录下,CGI脚本可以放置在/var/www/cgi-bin目录下;错误日志在/etc/httpd/logs/error_log,访问日志在/etc/httpd/logs/access_log。
设定好配置文件后,要测试配置文件语法有没有问题,可使用命令:
[root@localhost ~]#apachectl configtest
然后,重启httpd服务:
[root@localhost ~]# systemctl restart httpd
安装PHP
使用以下命令安装PHP软件:
[root@localhost ~]# yum install php
安装完成后,PHP会生成配置文件/etc/httpd/conf.d/php.conf,因为该配置文件在/etc/httpd/conf.d目录下,所以它会被Apache所读取。PHP还会生成配置文件/etc/httpd/conf.modules.d/10-php.conf,该配置文件也会被Apache所读取,它的设定让Apache可以加载PHP模块。不过,PHP软件本身的配置文件其实是/etc/php.ini。
下面介绍一下配置文件/etc/httpd/conf.d/php.conf:
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
//<FilesMatch 正则表达式>和</FilesMatch>:文件名与正则表达式相匹配的文件,将适用这里设定的语句。
//SetHandler:强制所有匹配的文件使用指定handler进行处理。
AddType text/html .php //设定扩展名为.php的档案的类型为text/html
DirectoryIndex index.php //默认网页档名增加index.php
php_value session.save_handler"files"
php_value session.save_path "/var/lib/php/session"
下面介绍一下配置文件/etc/httpd/conf.modules.d/10-php.conf:
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
//如果Apache使用的多处理模块(MPM)是prefork(默认),那么Apache就会加载LoadModule指定的模块(PHP模块)
最后,来看看配置文件/etc/php.ini。在该文件的开头处,有说明针对生产环境和开发环境,有一些设定值可以进行修改,以提高PHP的效能。假设该web服务器是用于生产环境的,将下面的这些设定值改成这样(或确认这些设定值是这样的):
display_errors = Off //当发生错误时,不将错误信息显示出来(到浏览器上)
display_startup_errors = Off //不将PHP启动时发生的错误信息显示出来(到浏览器上)
error_reporting = E_ALL &~E_DEPRECATED & ~E_STRICT //这一项设定PHP会告知的错误或信息类型
html_errors = On //当PHP显示或记录错误信息时,将该信息格式化成HTML格式
log_errors = On //这让PHP可以将错误信息日志记录到日志文件里
ignore_repeated_errors = On //忽略重复的错误信息
ignore_repeated_source = On //当忽略重复的错误信息时忽略信息源
post_max_size = 25M //PHP所允许的POST数据的最大值。可按照需要进行调整
file_uploads = On //允许文件上传,默认为On
upload_max_filesize = 20M //上传文件所允许的最大值。可按照需要进行调整
memory_limit = 128M //PHP可用的最大内存。可按照需要进行调整
然后,重启httpd服务:
[root@localhost~]# systemctl restart httpd
为了测试Apache能不能正常调用PHP,在/var/www/html目录下新建一个phpinfo.php文档,内容如下所示:
vi /var/www/html/phpinfo.php
<?php phpinfo(); ?>
其中的<?php ?>是PHP程序的语法,phpinfo ();则是PHP程序提供的一个函式库,该函式库可以显示出你这个web服务器的相关信息。然后,使用浏览器来访问服务器的这个文件,看看页面能不能正常打开。
安装sqlite
yum install sqlite*
yum install php-sqlite*
会自动匹配安装包。
重启一次apache的httpd服务:
systemctl restart httpd.service
完毕。