说明
为了将ArchLinux当做我的日常使用的系统,我打算将所有环境都部署到Arch中,其中有一个就是今天记录的LNMP的php开发环境
Nginx
Nginx的简介就不说了,直接上安装和配置
Nginx安装
这里ArchLinux的英文版wiki推荐安装的版本为nginx-mainline版本1.查询有哪些nginx版本
pacman -Ss nginx
2.找到nginx-mainline版本并安装
pacman -S nginx-mainline
Nginx启动
这里Arch使用的是最新的system来管理进程
1.启动Nginx
systemctl start nginx.service
2.设置开机启动nginx
systemctl enable nginx.service
检查浏览器中
localhost
php-fpm
无论是别的地方还是arch wiki都是使用php-fpm的FastCGI连接php,不同于centos6这种,ArchLinux仓库中就有php-fpm
安装php-fpmpacman -S php-fpm
启动systemctl start php-fpm
systemctl enable php-fpm
mariadb
ArchLinux中默认使用的是mariadb来代替Oracle Mysql,所以这里安装的是mariadb
安装mariadb1.pacman -S mariadb
2.mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
3.mysql_secure_installation
配置php和php-fpm
配置php的php.ini文件vim /etc/php/php.ini
1.找到date.timezone,打开注释,值为Asia/Shanghai
2.找到open_basedir,打开注释,值为php代码所在的路径,这是从php7.0开始的,
默认没有开启,需要手动设置,提高安全性
配置php-fpm的www.conf文件vim /etc/php/php-fpm.d/www.conf
修改监听模式从unix socket变为ip:port,例如
listen = 127.0.0.1:9000
重启php-fpmsystemctl restart php-fpm
配置nginx通过FastCGI连接php
新增加一个serverserver {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000; ##(depending on your php-fpm socket configuration)
#fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
重启nginx1.语法检测
/usr/bin/nginx -t
2.重启
systemctl restart nginx
测试php
在/usr/share/nginx/html下面新建一个index.php<?php
phpinfo();
?>
然后浏览器中localhost/index.php
php扩展
查看有哪些扩展pacman -Ss php-
查看已经开启了哪些扩展使用phpinfo()函数来查看
开启扩展1.去php.ini定义的extension_dir目录下查看是否有对应的
扩展xx.so(也可以使用php -m | grep xxx来查看),
如果没有需要安装(pacman -S xxx)
2.打开php.ini文件,找到对应的扩展extensions=xxx打开注释(当然linux后缀为so),
去掉注释,保存退出
3.重启php-fpm
4.phpinfo()检测是否开启了
碰到的坑
php通过mysql_connect连接mysql连接不上,经查找半天发现php高版本已经不支持使用mysql_connect来连接mysql了,而是使用pdo-mysql或者mysqli来连接mysql,因此测试的时候要注意了,下面是一个mysqli方式测试mysql数据库连接的代码<?php
//设置编码格式
header("Content-type: text/html; charset=utf-8");
//用mysqli来连接数据库(服务器,用户名,密码,数据库名字)
$mysqli=new mysqli("localhost","root","","test");
if(mysqli_connect_errno()){
echo "连接数据库失败:".mysqli_connect_error();
$mysqli=null;
exit;
}
echo "连接数据库成功!
";
}最后
当然了nginx和php以及php-fpm还有很多其他的配置来优化服务,那就是运维方面的了,而Arch不适合用来做服务器,这里只做一个开发环境就行了,至于之后需要什么再添加