Arch搭建Nginx+MariaDB+PHP及其配置

写在前面

最近在阿里云上新买了一个服务器,想换个风格,不想使用Centos或者Debian,想试试Arch做服务器,由于阿里云没有Arch系统,所以先在Github上使用vps2arch转换成Arch系统。

使用方法也简单,下载vps2arch那个文件,然后使用

chmod +x vps2arch2
./vps2arch2

执行后就可以替换成Arch系统,注意:本人使用的是阿里云的Debian 9.9系统,8.x的安装Arch失败。

如果在vps上下载github文件太慢,可以先下载在本地,然后使用rsync服务上传到服务器,下面是rsync的用法:

rsync -P -r 你要上传文件的位置如:/home/liyp/Desktop/vps2arch root@ip地址:文件路径如/root

安装完成记得使用快照备份一下数据,防止系统崩溃导致一切都要重来。

系统搞好后就开始步入正题了:

1、安装相关软件

以下操作都在root用户下执行

pacman -S nginx php php-fpm mariadb

2、配置

配置 MariaDB 数据库

mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

配置MySQL root密码,根据自己需求选择。

mysql_secure_installation

配置 MySQL utf8mb4 字符集

vim /etc/my.cnf

在末尾追加

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

配置 Nginx 支持 PHP

location / {
    root   /usr/share/nginx/html;
    index  index.php index.html index.htm;
}

location ~ \.php$ {
    fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
    include        fastcgi_params;
}

3、服务测试

php-fpm -t  #查看 PHP 配置是否正确
nginx -t #查看nginx服务配置是否正确

4、启动

systemctl restart php-fpm

systemctl restart nginx

systemctl restart mysqld

5、配置开机启动

systemctl enable nginx
systemctl enable mysqld
systemctl enable php-fpm

6、测试

Nginx+PHP 环境测试

vim /usr/share/nginx/html/index.php

输入:

<?php
    phpinfo();
?>

网页打开:http://服务器ip地址

如果出现 PHPinfo 页面则安装成功。

注意:建议测试ip的时候在浏览器的隐私界面测试,防止缓存干扰

7、卸载

pacman -Rs nginx php-fpm mariadb

8、数据库相关操作

如果你不想使用root操作数据库,你可以创建一个用户和数据库,把数据库的所有操作权限授予新创建的用户。

创建用户

命令:**CREATE USER 'username'@'host' IDENTIFIED BY 'password'; **

说明:
username- 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%.
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

例子:

CREATE USER 'blog'@'%' IDENTIFIED BY '123456';

授权

命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' 

说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等.如果要授予所的权限则使用ALL.;
databasename - 数据库名,
tablename-表名,
如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示, 如 .

GRANT ALL ON blog.* TO 'blog'@'%';
flush privileges; #刷新权限

建议把网站相关的都放到/srv文件夹下,我网站的/srv目录如下图:

/srv目录

参考网站:https://www.ycmbcd.com/blog/html/15778576279282.html

https://www.jianshu.com/p/4466e0cd0bd1