阿里云ECS之完整流程搭建:CentOS 7.3+Nginx 1.12.1+php 7.2 + MaraiaDB 5.5.52 + PhpMyAdmin 4.6.6



大神们,请跳过~~~

【背景】

本人客户端专业户,简单用用php,搭建服务器属于小白中的小白。去年买了低配阿里云做测试服顺便挂了个个人网站及堆放了些资源,最初是硬着头皮据“宁浩网”的系列视频教程搭建了一个apache+php+mysql的服务器,被各种配置搞得头大,但还算稳定。

几天前突然域名无法访问,IP无法访问,致电阿里云客服,让重启,没解决;提交了两次工单最终算是解决了一半,主要是我不懂这方面的技术,最后我就说,我不在乎安全性这些,只要服务器能访问就行让对接的阿里云技术客服帮助修改:结果默认打开的是apache的首页抓狂,自己又不会配置,感觉自己实在驾驭不了,配置又低,最近一个APP又要求并行连接比较大,索性重装为NGINX。

首先是各种百度,各种尝试,跳了不少坑。网上也有不错且完整的帖子,但是有些步骤实在是无法实操。最终经过各种查阅及实际操做才有了本篇文章,现在网站能正常访问了,资源也能正常访问了,不容易且Happy!!! 

断断续续搞了2天,边测试搭建,边写文章留存,总共七大步,过程也比较详细,特此留存备忘。



【一.重置系统】

1.登陆阿里云进入控制台。

2.找到实例,停止该服务器。

3.选择“更多”下的“更换系统盘”,

4.选择Centos 7.3,并设置新的登陆密码

5.点击确定,验证手机号,重置后会自动重启系统。


【二.重置Mac 终端ssh认证】

1.第一次使用SSH连接时,会生成一个认证,储存在客户端的known_hosts中.

2.由于服务器重新安装系统了,所以会出现以上错误。

解决办法:ssh-keygen -R 服务器端的ip地址

3.退出ssh连接:quit 回车

【三.FTP相关】

{1.安装vsftpd}

#安装vsftpd
yum install -y vsftpd
#设置开机启动
systemctl enable vsftpd.service 
# 重启
service vsftpd restart
# 查看vsftpd服务的状态
systemctl status vsftpd.service


{2.关闭匿名访问}

如需关闭FTP匿名用户访问,需修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO,重启Vsftpd服务即可。
备份配置文件: cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

vi /etc/vsftpd/vsftpd.conf

输入 i 进入编辑模式进行修改
保存修改:按键 esc
退出文档直接输入   :wq

{3.添加FTP账号}

示例:创建系统用户 ftpadmin,分别设置密码为123456:
useradd  ftpadmin

echo 123456|passwd --stdin  ftpadmin


【四.安装Nginx】

1.先卸载老版本
yum remove nginx  

2.编辑nginx的yum源配置
vi /etc/yum.repos.d/nginx.repo 
往里面写入:
[nginx]  
name=nginx repo  
baseurl=http://nginx.org/packages/centos/7/x86_64/  
gpgcheck=0  
enabled=1  


i:插入
esc:保存
:wq:退出文档

3.安装
yum install nginx  

4.启动
service nginx start

5.开机启动
systemctl enable nginx

6.查看nginx 版本 
nginx -v

7.查看进程 
ps aux|grep nginx

8. 配置nginx解析PHP

命令:vi  /etc/nginx/nginx.conf;【可选】
编辑文档:
user  nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;


    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';


    access_log  /var/log/nginx/access.log  main;


    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  300;
   #gzip  on;


    proxy_read_timeout 3s;
    proxy_buffer_size   256k;
    proxy_buffers   4 256k;
    proxy_busy_buffers_size   256k;
    client_header_buffer_size 256k;
    large_client_header_buffers 4 256k;
    client_max_body_size 256m;
    fastcgi_buffer_size 256k;
    fastcgi_buffers 4 256k;
    fastcgi_busy_buffers_size 256m;
    fastcgi_temp_file_write_size 256m;

    include /etc/nginx/conf.d/*.conf;
}

i:插入
esc:保存
:wq:退出文档


命令:cd  /etc/nginx/conf.d【必选】

ls

vi default.conf

主要有如下步骤:

  • 设置 root 根目录

  • 添加 index.php 为默认目录首页请求

  • 修改 server_name ,添加域名或 IP

  • 定义 404 等错误页面的规则

  • 配置 PHP 处理模块,主要调整 location ~ \.php$ { 部分,尤其注意 fastcgi_pass unix: 指向的 php-fpm.sock 路径是否正确;

  • 保存后重启 nginx 服务

server {
    listen       80;
    server_name  www.***.com【域名或IP】;

    # note that these lines are originally from the "location /" block
    root   /www;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /www;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

保存后重启 nginx 服务: service nginx restart

在根目录添加一个 phpinfo 的 php 文件,打开浏览器进行测试是否正常显示。成功后删除测试页面。

如果浏览器测试无法正常显示,尝试在“安全组”添加80端口规则】


【注意】因该配置文件(/etc/nginx/conf.d/default.conf)包含配置:root  /www;
即网站根目录重定向到了服务器根目录下的www目录,默认该目录不存在,则命令行创建该目录: mkdir /www/

通常为方便传输更新网站资源会用FTP方式操作该目录下的文件,则需要指定该目录的操作权限为【第三.3步】ftpadmin用户所有:

chown -R ftpadmin /www/
chmod 755 -R /www/


此时可正常使用FileZilla等FTP工具正常上传下载www目录下的文件资源了。
【如果FTP客户端连接FTP失败,配置如下:】

点击“连接”后,会弹出如下窗口。

【五.安装 php7】

执行下面的命令删除php

yum remove php* php-common

建立 php7 的 yum 源

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

执行下面的命令安装(升级)软件仓库【该句不应分行执行,编辑下,单行执行该命令】

yum install -y php72w php72w-fpm php72w-xml php72w-json php72w-mcrypt php72w-gd php72w-devel 
php72w-mysql php72w-intl php72w-mbstring php72w-tokenizer php72w-pdo php72w-ctype php72w-openssl
php72w-bcmath

用 yum repolist all 查看所有 repo,检查是否配置成功。

也可以用 yum list installed | grep php 查看 php 套件安装情况。
用 php -v 查看当前版本。

配置 php-fpm

找到你的 php-fpm.sock 文件,将该路径配置到 php-fpm 的 conf 文件中

find / -name www.conf
vi /etc/php-fpm.d/www.conf

修改 www.conf 如下

listen = /run/php-fpm/php-fpm.sock

php-fpm 的 user/group 要和 webserver 的所有权一致,如我在 CentOS7 下,用 nginx 用户 运行 nginx 服务,则修改 php-fpm 的 www.conf 配置如下:

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

user = nginx
group = nginx

重启 php-fpm 服务,并加入到系统自启动中:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

如果重启后,php 服务还是不成功,可能还需执行 chown nginx:nginx /run/php-fpm/php-fpm.sock 后再重启。





【六.安装 MySQL (MariaDB)】

1.检查是否MariaDB是否已经存在,存在则删除,并重新安装

先查看是否已经存在服务
rpm -qa|grep mariadb
mariadb-libs-5.5.52-1.el7.x86_64
如果存在,移除, 中间要确定 选择  y
yum remove mariadb* 
开始下载yum下载,记得y:
yum install mariadb*
启动服务:
systemctl start mariadb.service
开机自动启动:
systemctl enable mariadb.service
设置权限:
mysql_secure_installation

首先是设置密码,会提示先输入密码 【初次运行直接回车】
Enter current password for root (enter for none):<–初次运行直接回车设置密码
Set root password? [y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码 【测试连接数据库会用到该密码】
Re-enter new password: <– 再输入一次你设置的密码


其他配置
Remove anonymous users? [y/n] <– 是否删除匿名用户,y回车
Disallow root login remotely? [y/n] <–是否禁止root远程登录, n回车,
Remove test database and access to it? [y/n] <– 是否删除test数据库,y回车
Reload privilege tables now? [Y/n] <– 是否重新加载权限表,y回车


初始化MariaDB完成,接下来测试登录

mysql -uroot -p passwordpassword为{ New password: <– 设置root用户的密码 【测试连接数据库会用到该密码】}上面的这个步骤设置的新密码

【以下为成功连接DB显示的信息】

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 10

Server version: 5.5.52-MariaDB MariaDB Server


Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> 


退出MariaDB连接:\q 回车


2、配置MariaDB的字符集

文件/etc/my.cnf
vi /etc/my.cnf
在[mysqld]标签下添加
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake

(ESC 保存文档    
:wq 退出文档)


文件/etc/my.cnf.d/client.cnf
vi /etc/my.cnf.d/client.cnf
在[client]中添加
default-character-set=utf8
(ESC 保存文档    :wq 退出文档)


文件/etc/my.cnf.d/mysql-clients.cnf
vi /etc/my.cnf.d/mysql-clients.cnf
在[mysql]中添加
default-character-set=utf8
(ESC 保存文档    :wq 退出文档)


此时,全部配置完成,重启mariadb
systemctl restart mariadb


之后进入MariaDB查看字符集

mysql -uroot -p******

MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";

显示为

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client    | utf8                      |
| character_set_connection | utf8                      |
| character_set_database  | utf8                      |
| character_set_filesystem | binary                    |
| character_set_results    | utf8                      |
| character_set_server    | utf8                      |
| character_set_system    | utf8                      |
| character_sets_dir      | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)


+----------------------+-----------------+
| Variable_name        | Value          |
+----------------------+-----------------+
| collation_connection | utf8_unicode_ci |
| collation_database  | utf8_unicode_ci |
| collation_server    | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

至此,字符集配置完成。


3、添加用户,设置权限
创建用户命令
MariaDB [(none)]> create user username@localhost identified by 'password';

【--------分割线start  以下为扩展----------】

直接创建用户并授权的命令
mysql>grant all on *.* to username@localhost indentified by 'password';
授予外网登陆权限 
mysql>grant all privileges on *.* to username@'%' identified by 'password';
授予权限并且可以授权
mysql>grant all privileges on *.* to username@'hostname' identified by 'password' with grant option;
简单的用户和权限配置基本就这样了。
其中只授予部分权限把 其中 all privileges或者all改为select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file其中一部分。


一般不允许使用管理员账户远程连接数据库,及默认的root用户。该用户一般权限为最大,考虑安全因素,我们通常只会赋予root用户数据库服务器所在机器的本地连接访问权限。
MariaDB的用户账号不仅包含用户名,还包含客户端连接点的主机名、域名、IP地址。这个两个重要元素组成了账户。
数据库的账户与访问主机的主机名、域名、IP地址组成了账户,账户与主机相关信息均需要分别用单引好(’)区分开。
账号语法: 
‘db_id’@’HOSTNAME | 域名 |IP’ 
其语法以用户名开始,@作为分割符,最后是用户连接MariaDB服务器的客户端连接主机信息。
例如,root用户按一下注册,将只有在DB服务器本地可连接MariaDB服务器,外部其他服务器均无法连接。 
‘root’@’127.0.0.1’
例如,需要所有外部主机连接,只需要将连接MariaDB服务器的客户端连接主机部分修改为’%’。 
‘root’@’%’

【--------分割线end  以上为扩展----------】



【七.安装 phpmyadmin】

安装phpmyadmin过程中会有解压的步骤,检测是否安装了zip和unzip命令:

 zip
-bash: zip: command not found【表示未安装zip】

unzip
-bash: unzip: command not found【表示未安装unzip】

安装命令:yum install zip unzip


然后去官网下载并解压phpmyadmin:

wget https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.zip
unzip phpMyAdmin-4.6.6-all-languages.zip -d /www

复制默认配置

cp /www/phpMyAdmin-4.6.6-all-languages/config.sample.inc.php /www/phpMyAdmin-4.6.6-all-languages/config.inc.php

如果浏览器打开出现如下错误:

session_start(): open(SESSION_FILE, O_RDWR) failed: Permission de

则修改报错信息文件的所有权,如下:

chown nginx:nginx /var/lib/php/session

【完】

此时,打开浏览器,地址栏输入:服务器IP地址/phpMyAdmin-4.6.6-all-languages/

然后输入MariaDB新创建的用户名和密码即可打开此页面。


发布了26 篇原创文章 · 获赞 49 · 访问量 137万+

猜你喜欢

转载自blog.csdn.net/ldghd/article/details/76855444