ArchLinux上搭建LAMP环境

为了给基于Discuz模板的BBS增加一个小功能而在本地ArchLinux虚拟机里搭建一个BBS的测试平台

Apache And PHP Installation

分别安装 apache php 和 php-apache组件

1
>> sudo pacman -S apache php php-apache

启动 apache, sudo systemctl start httpd

测试 php 环境

1
>> sudo vim /srv/http/info.php

在文件中写下如下信息

1
<?php phpinfo(); ?>

打开网页测试效果

测试结果未生效, 在 apache 中启用 php

1
>> sudo vim /etc/httpd/conf/httpd.conf

查找 LoadModule dir_module modules/mod_dir.so 下增加

1
LoadModule php5_module modules/libphp5.so

同时在 Include 列表末尾增加

1
Include conf/extra/php5_module.conf

由于在 ArchLinux 中 php-apache 下的 libphp5.so 无法和 mod_mpm_event 一起工作, 会有如下错误

1
2
3
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
AH00013: Pre-configuration failed
httpd.service: control process exited, code=exited status=1

有如下两种解决办法:

1) 对 apache php 等重新编译, 启用 thread safety(没试过)

2) 采用替换方法

使用 mod_mpm_prefork, 打开 /etc/httpd/conf/httpd.conf, 把

1
LoadModule mpm_event_module modules/mod_mpm_event.so

替换成

1
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

重启 apache, sudo systemctl restart httpd, 打开网页测试 info.php 页面, 看到如下画面说明 PHP 启用成功

PHPinfo

Mysql or MariaDB Installation

安装 Mysql/MariaDB, sudo pacman -S mysql

启用 pdo_mysql.so 和 mysqli.so, 打开 sudo vim /etc/php/php.ini, 分别去掉如下两条配置的注释符

1
2
extension=pdo_mysql.so
extension=mysqli.so

目前的配置到此结束。

关于Discuz的配置

=====增加于 2014/11/4=======

首先把Discuz的文件放置到站点文档目录下, 初步配置一下权限

1
2
3
4
>> sudo chmod -R 744 upload/    ; 把所有文件文件夹的权限调低
>> sudo chmod -R -x upload
>> sudo chmod -R +x upload      ; 这两个命令完成 取消文件的执行权限
>> sudo mv upload/* /sur/http/

出现三个问题:

(1) GD库没安装

(2) 文件权限需要重启配置

(3) PHP不能正确连接mysql

解决方案

(1) 安装GD库

1
>> sudo pacman -S php-gd

配置php, 打开 sudo vim /etc/php/php.ini, 取消 extension=gd.so

重启apache服务, sudo systemctl retstart httpd

(2) 配置文件权限

1
2
3
4
>> sudo chown -R http:http config
>> sudo chown -R http:http data
>> sudo chown -R http:http uc_client/data/cache
>> sudo chown -R http:http uc_server/data

(3) 检查mysql与php的情况

编辑php.ini, sudo vim /etc/php/php.ini, 确保一下三条处于打开的状态

1
2
3
extension=mysql.so
extension=mysqli.so
extension=pdo_mysql.so

此外还要解决数据库初始化的问题

1
2
>> sudo mysql_secure_installation
>> sudo systemctl restart mysqld

参考文献

https://wiki.archlinux.org/index.php/Apache

Comments