Centos Stream 9 安装Apache+PHP+Mariadb

张志军 2年前 (2022-12-02) 1649次浏览 0个评论

CentOS8之后,CentOS改变了发行策略,作为Fedora和RedHat之间的一个版本进行发布。本次建站,我直接选择了CentOS Stream 9作为宿主机操作系统,一来可以保证操作习惯的一致性,另外也是选择了CentOS的稳定性和可靠性。目前网上搜索了很多LAMP的配置教程,大部分是基于C......

CentOS8之后,CentOS改变了发行策略,作为Fedora和RedHat之间的一个版本进行发布。本次建站,我直接选择了CentOS Stream 9作为宿主机操作系统,一来可以保证操作习惯的一致性,另外也是选择了CentOS的稳定性和可靠性。目前网上搜索了很多LAMP的配置教程,大部分是基于CentOS6,CentTOS7和CentOS8等比较老的版本,对应的PHP及Mariadb/MySQL都是相对比较老的版本,安装和配置都有所区别。这次在CentOS Stream 9 上部署Apache + PHP + Mariadb有遇到了不少问题,因此整理出来,供其他有需要的同学参考。

CentOS Stream 9当前支持使用dnf安装软件包,而且Fedora也默认使用dnf作为包管理器了,因此本文中统一使用dnf安装软件包。

1 安装和配置Apache

1.1 安装Aapache

使用root用户,通过如下几个命令安装和启动apache,如果是非root用户,在命令前添加sudo,提升权限。

# 安装apache服务
dnf install httpd
# 启动apache服务
service httpd start
# 设置开机启动apache服务
systemctl enable httpd

1.2 配置Apache

CentOS Stream9下,apache的配置文件位于/etc/httpd目录下,如果需要调整配置,只需要修改对应目录下的配置文件即可。

drwxr-xr-x 4 root root  50 Oct  4 09:32 cert
drwxr-xr-x 2 root root  59 Oct  4 08:50 conf
drwxr-xr-x 2 root root 188 Oct  4 09:37 conf.d
drwxr-xr-x 2 root root 267 Oct  4 08:47 conf.modules.d
lrwxrwxrwx 1 root root  19 Jul 22 19:42 logs -> ../../var/log/httpd
lrwxrwxrwx 1 root root  29 Jul 22 19:42 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx 1 root root  10 Jul 22 19:42 run -> /run/httpd
lrwxrwxrwx 1 root root  19 Jul 22 19:42 state -> ../../var/lib/httpd

conf目录存储apache的默认配置文件;

conf.d目录存储除默认外的其他配置文件,例如网站是php的,就则必须将该目录下的php.conf文件加载进来;

conf.modules.d目录存储apache的一些模块,例如ssl_mod.so等模块文件就在该目录下。

1.2.1 Apache HTTP配置

  • 启用php服务:

其他文件保持不变,进入/etc/httpd/conf目录,打开httpd.conf文件,修改配置文件最后一行,加载conf.d中的配置文件(php.conf文件包含在此文件夹中,此处可以通过*通配符全部加载,也可指定文件名进行精确加载);

# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
  • 配置virtualhost
  1. 进入/etc/httpd/conf.d文件,建议每个站点独立创建一个文件,文件名可以按照域名的方式创建,如com.conf,方便后续修改配置文件
  2. 编辑virtualhost文件,指定域名和其他目录等信息
<VirtualHost *:80>
    ServerAdmin gallanthunter@163.com
    ServerName chahuawu.com
    ServerAlias www.chahuawu.com
    DocumentRoot /var/www/html/chahuawu.com
    <Directory /var/www/html/chahuawu.com >
        Options FollowSymLinks
        Order deny,allow
        Allow from all
        DirectoryIndex index.php index.html
    </Directory>
    ErrorLog /var/www/html/chahuawu.com/log/error.log
    CustomLog /var/www/html/chahuawu.com/log/requests.log combined
</VirtualHost>
  1. 修改/var/www/html目录的权限
sudo chown -R apache:apache html
sudo chmod -R 755 html

注意:CentOS Stream 9默认的用户和用户组和apache,如果在httpd.conf文件中修改为其他用户和用户组,则此处需要相应的修改,否则可能会因为权限的问题,导致读写文件失败。

  1. 重启apache服务
service httpd restart

此时通过已经解析好的域名,就可以正常访问网站了。如果虚拟主机目录下没有文件,则apache会默认使用welcome.conf中指定的文件。

1.2.2 Apache HTTPS配置

默认情况下,apache只是监听80端口,virtualhost配置完后,通过http就可以访问站点了,如果要通过https访问的话,则需要配置证书。关于证书,一般云厂商都提供了免费的证书使用,不差钱的话,可申请付费证书。证书的申请可参考各大厂商的产品文档操作即可,此处默认为证书已申请,可以直接使用。

  • 安装ssl模块

默认情况下,CentOS Stream9并没有安装SSL模块,需要手工安装,命令如下:

dnf install ssl

安装完成后,在modules文件夹下即可看到mod_ ssl.so文件,此外在conf.d目录下,也可以看到ssl.conf文件。

在httpd目录下新建cert的目录,用于存放证书,建议证书目录也按照域名的方式新建目录存放,如cert/chahuawu.com。签名后的证书建议修改证明名称,按照域名的方式重命名。证书文件类型如下:

  • 证书文件:以.crt为后缀或文件类型。
  • 证书链文件:以.crt为后缀或文件类型。
  • 密钥文件:以.key为后缀或文件类型。
  • 修改virtualhost配置,以支持https访问

新建80to443.conf文件,添加如下内容,所有80端口的访问全部重定向至443端口


RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

修改原virtualhost配置,参考如下:


<VirtualHost *:443>
    ServerAdmin gallanthunter@163.com
    ServerName chahuawu.com
    ServerAlias www.chahuawu.com
    DocumentRoot /var/www/html/chahuawu.com
     
    SSLEngine on  
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM  
    SSLHonorCipherOrder on
    SSLCertificateFile /etc/httpd/cert/chahuawu.com_public.crt
    SSLCertificateKeyFile /etc/httpd/cert/chahuawu.com.key
    SSLCertificateChainFile /etc/httpd/cert/chahuawu.com_chain.crt
   
    <Directory /var/www/html/chahuawu.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        DirectoryIndex index.php index.html
    </Directory>
    ErrorLog /var/www/html/chahuawu.com/log/error.log
    CustomLog /var/www/html/chahuawu.com/log/requests.log combined
</VirtualHost>

重启Apache服务器使SSL配置生效


service httpd restart

2 安装和配置PHP

2.1 安装php

CentOS stream9默认安装php8.0,执行如下命令安装和启动PHP,同时设置开机启动php

dnf install php php-server
dnf install php-mysqlnd php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
service php-fpm start
systemctl enable php-fpm

2.2 配置PHP

安装PHP完php后,如果你建站程序使用的是Joomla,则需要php.ini文件中如下几个参数,且保证最小取值如下:

memory_limit: 256M
upload_max_filesize: 32M
post_max_size: 32M
max_execution_time: 30

在以上参数的配置下,大部分扩展和请求都可以处理,但是如果有其他扩展超过上述参数的话,需要按照需要调整。

如果有其他要求,则按照对应程序的说明,调整相关参数即可。

修改参数后重启php-fpm服务即可。如果访问页面php没有被解析,请排查apache配置中,是否加载conf.d目录中的php.conf文件。

3 安装数据库

3.1 安装Mariadb

CentOS Stream 9默认已经安装了Mariadb,如果要重新安装,使用下面的命令重装,启动Mariadb服务,并设置开机启动:

dnf install mariadb mariadb-server
service mariadb start
systemctl enable mariadb

3.2 配置Mariadb数据库

使用root权限,首次安装后需要配置mariadb数据库

Enter current password for root (enter for none):  # 输入数据库超级管理员root的密码(注意不是系统root的密码),第一次进入还没有设置密码则直接回车
Set root password? [Y/n]  # 设置密码,y
New password:  # 新密码
Re-enter new password:  # 再次输入密码
Remove anonymous users? [Y/n]  # 移除匿名用户, y
Disallow root login remotely? [Y/n]  # 拒绝root远程登录,n,不管y/n,都会拒绝root远程登录
Remove test database and access to it? [Y/n]  # 删除test数据库,y:删除。n:不删除,数据库中会有一个test数据库,一般不需要
Reload privilege tables now? [Y/n]  # 重新加载权限表,y

配置数据库远程链接权限

mysql -u root -p
## 授予权限
grant all on *.* to "root"@"%" identified by "你的root账户密码";
## 刷新权限
FLUSH PRIVILEGES;
## 查询
show grants for "root"@"%";

4 常见问题:

1)配置apache后,php文件无法解析

确认apache httpd.conf文件是否加载php.conf文件,如果没有,修改配置文件重启httpd服务

2) An error has occurred while processing your request.

确认站点目录用户和用户组是否通apache的配置一致,若不一致,通过chown命令,修改为一样的用户和用户组

3) 通过Navicat访问数据库,若出现权限异常的问题,请重新执行分配权限的命令

使用root登录数据库,重新执行以下命令:

grant all on *.* to "root"@"%" identified by "你的root账户密码";
0 0 投票数
文章评分

版权申明:

本博客所有文章除特别声明外均采用BY-NC-SA 4.0许可协议。依据BY-NC-SA 4.0许可协议,转载请附上原文出处链接及本声明。

原文链接:https://ilearning.org.cn/program/web/centos-stream-9-apache-php-mariadb.html

客官,说点什么吧!

订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论
关于本站
立学网是一个分享个人学习总结的知识网站,内容覆盖编程技术讨论,金融经济,历史哲学,读书笔记,生活随笔等内容。
关注我们
关注微信公众号 关注微博