PHP+Nginx+MySQL搭建网站简易教程(以Centos7

2019-01-20  本文已影响0人  bugprogrammer

准备工作

安装PHP7.0及其扩展

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel
php -v

安装MySQL

yum install wget
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-community-server
systemctl start mysqld

修改Mysql root密码

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改。

grep 'temporary password' /var/log/mysqld.log

返回的字符串就是默认生成的密码。如图:


image
mysql -uroot -p
set password for root@localhost = password('新密码');
flush privileges;

编译安装Nginx

选择编译安装Nginx的理由

因为nginx功能强大,模块众多,所以自己需要了解究竟需要什么模块,实现那些功能,这就需要我们自己定制Nginx,编译安装满足高自定义性,故采用编译安装。

编译教程

wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && ls
image
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-stream_ssl_module --with-http_v2_module --with-threads
make && make install
image
/usr/local/nginx/sbin/nginx

Nginx基础使用

Nginx相关文件路径

Nginx相关操作

启动

/usr/local/nginx/sbin/nginx

重启

/usr/local/nginx/sbin/nginx -s restart

关闭

/usr/local/nginx/sbin/nginx -s stop

查看配置文件

nano /usr/local/nginx/conf/nginx.conf

查看出错日志

nano /usr/local/nginx/logs/error.log

nginx.conf简单解读(写法很多)

server {
    listen       80; #监听80端口,接收http请求
    server_name  bugprogrammer.tk; #就是网站地址
    root /var/www/phpmyadmin; # 准备存放代码工程的路径
    #路由到网站根目录bugprogrammer.me时候的处理
    location / {
        index index.php; #跳转到bugprogrammer.tk/index.php
        autoindex on;
    }   

    #当请求网站下php文件的时候,反向代理到php-fpm
    location ~ \.php$ {
        include /usr/local/etc/nginx/fastcgi.conf; #加载nginx的fastcgi模块
        fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000; #nginx fastcgi进程监听的IP地址和端口
    }
}

php-fpm+Nginx整合配置

修改nginx.conf

取消首行user以及php-fpm模块前的注释,并修改网站目录(注意主服务和php-fpm都要修改),如图:


image
image

在网站目录(上图为phpmyadmin目录)新建一个index.php文件,并粘贴如下代码(伟大的Hello World!!!)

<html>
 <head>
  <title>PHP 测试</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?>
 </body>
</html>

启动php-fpm

service php-fpm start

启动Nginx(见Nginx相关操作)并在浏览器输入域名或ip测试,如下及成功。

image

建立网站(以phpmyadmin为例)

相关错误以及解决方案

常见错误1,如图

image

这个错误的原因是phpmyadmin找不到sesson的存放路径,所以在浏览器允许session的情况下需要调整php的配置文件php.ini

解决方案
session.save_path = "/var/lib/php/session"
mkdir /var/lib/php/session && chmod -R 777 /var/lib/php/session && chown -R nobody:nobody /var/lib/php/session

常见错误2,如图

image
解决方案

进入phpmyadmin目录下将config.sample.inc.php文件改名为config.inc.php并打开,将cfg['Servers'][i]['host'] = 'localhost'改为
cfg['Servers'][i]['host'] = '127.0.0.1'并保存,命令及图解如下:

cd /var/www/phpmyadmin && mv config.sample.inc.php config.inc.php && nano config.inc.php
image

常见错误3,如图

image
解决方案

同(2)打开config.inc.php,找到$cfg['blowfish_secret'] = '',在引号中填写短语密码,推荐填写UUID,如图:


image

常见错误4,如图

image
解决方案

创建tmp文件夹并给予读写权限即可

mkdir tmp && chmod 777 tmp

阶段成果

image
image

后续优化(前提是按照我的教程编译安装的Nginx,注意SSL和HTTP 2.0模块)

升级https

/usr/local/nginx/sbin/nginx -s stop
git clone https://github.com/letsencrypt/letsencrypt && cd letsencrypt
./certbot-auto certonly
image
image
server {

    listen 443 ssl;
    server_name 域名;
    …

    ssl on;
    ssl_certificate /etc/letsencrypt/live/域名/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/域名/privkey.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ‘EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH’;

    …

}
新建如下server即可
server {
    listen 80;
    server_name 域名;
    return 301 https://$host$request_uri;
}

(更新)SSL通配符版本申请

一个天大的好消息,Let's Encrypt已经发布了通配符版本SSL证书。顾名思义,通配符SSL证书不再需要为每一个二级域名重复申请SSL证书,以域名bugprogrammer.tk为例,只需要申请*.bugprogrammer.tk以及bugprogrammer.tk即可用于根域名以及所有二级域名,非常方便。申请教程如下。

wget https://get.acme.sh
./certbot-auto certonly  -d *.bugprogrammer.tk -d bugprogrammer.tk --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
image

升级http2

上一篇 下一篇

猜你喜欢

热点阅读