玩机教程 九月 30, 2019

Ubuntu18.04安装nginx+mysql+php5

文章字数 8.5k 阅读约需 8 mins. 阅读次数 1000000

参考链接:
ubuntu下配置nginx+php+mysql详解
ubuntu18.04 - server版开机启动脚本
Ubuntu18.04 rc.local systemd设置
Ubuntu18.04 安装 Phpmyadmin

1.安装php5

由于Ubuntu18.04是较新的版本,内置的PHP安装包的是php7,所以先要添加ppa源

$ sudo add-apt-repository ppa:ondrej/php

执行命令如果出现这个错误:

Command 'add-apt-repository' not found, but can be installed with:

apt install software-properties-common

按要求装一下software-properties-common,执行命令:

$ sudo apt install software-properties-common

然后重新执行命令:

$ sudo add-apt-repository ppa:ondrej/php

期间会询问是否继续,[Enter]继续,Ctrl+C退出

没有报错就说明添加成功,然后更新软件包

$ sudo apt update

更新之后可以安装php了,这里选择安装php5.6

$ sudo apt install php5.6 php5.6-gd php5.6-cgi php5.6-mysql php5.6-xml php5.6-json php5.6-mcrypt php5.6-common php5.6-dev

2.安装spawn-fcgi

安装的目的是为了控制php-cgi进程,以防止进程崩溃或是单进程的效率太低

$ sudo apt install spawn-fcgi

3.安装Nginx

$ sudo apt install nginx

说明:

  • 所有配置文件位置都在/etc/nginx
  • 虚拟主机配置/etc/nginx/sites-available
  • 程序文件/usr/sbin/nginx
  • 日志文件/var/log/nginx
  • nginx启动脚本/etc/init.d/
  • 默认的虚拟主机的目录/var/www/html

安装完成后nginx自动完成了启动,输入域名或者ip既可以看到如下界面:

如果不是的话可以手动启动一下nginx(请确保80端口没有其他服务在使用):

$ sudo /etc/init.d/nginx start

或者

$ service nginx start

如果还装了Apache的话,先关闭Apache再启动:

$ sudo killall apache2

4.配置

配置Nginx和spawn-fcgi配合运行

(1)在/etc/nginx/fastcgi_params文件最后,加入一行,可以用

$ sudo vim /etc/nginx/fastcgi_params

加入此行:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

(2)在PHP-CGI的配置文件(此配置文件位于/etc/php/5.6/cgi/php.ini)中,找到cgi.fix_pathinfo选项,修改为:

cgi.fix_pathinfo=1;

这样php-cgi才能正常使用SCRIPT_FILENAME这个变量

(3)打开/etc/nginx/sites-available/default文件,在

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    ...
    ...
}

里面添加web根目录的绝对地址,可以根据自己实际情况填写,如果已有可以自行修改

root /var/www
index index.html index.php

如果没有这个的话,容易在执行php 文件的时候,会提示”No input file specified”
然后将下面内容:

#location ~ \.php$ {
#    include snippets/fastcgi-php.conf;
#
#    # With php-fpm (or other unix sockets):
#    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
#    # With php-cgi (or other tcp sockets):
#    fastcgi_pass 127.0.0.1:9000;
#}

修改成

location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
    include /etc/nginx/fastcgi_params; #包含fastcgi的参数文件地址
}

5.开始fast_cgi进程

$ sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi5.6 -P /var/run/fastcgi-php.pid

然后重启Nginx

$ nginx -s reload

此时可以测试一下,先去web根目录下新建一个phpinfo.php文件

$ touch phpinfo.php

打开文件在里面输入如下代码:

<?php
phpinfo();

然后可以通过访问域名或ip加上phpinfo.php,如图:

那么php+nginx就算是配置好了,但是为了日后的方便,还需要将fastcgi设置开机自启

6.设置开机启动fastcgi进程并启动

ubuntu18.04不再使用initd管理系统,改用systemd,然而systemd很难用,改变太大,跟之前的完全不同。
使用systemd设置开机启动,为了像以前一样,在/etc/rc.local中设置开机启动程序,需要以下几步:

(1)systemd默认读取/etc/systemd/system下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。一般系统安装完成后会有/lib/systemd/system/rc-local.service文件,即我们需要的配置文件。先链接过来:

$ ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

然后打开rc-local.service,里面的内容如下:

#  SPDX-License-Identifier: LGPL-2.1+
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

一般正常的启动文件主要分成三部分

  • [Unit]:启动顺序与依赖关系
  • [Service]:启动行为,如何启动,启动类型
  • [Install]:定义如何安装这个配置文件,即怎样做到开机启动

(2)可以看出,/etc/rc.local的启动顺序是在网络后面,但是显然它少了[Install],也就没有定义如何做到开机启动,所以显然这样配置是无效的。因此我们就需要在后面加上 [Install]:

[Install]
WantedBy=multi-user.target
Alias=rc-local.service

但是ubuntu-18.04默认是没有/etc/rc.local这个文件,需要自己创建:

$ touch /etc/rc.local

(3)赋可执行权限

$ chmod 755 /etc/rc.local

(4)编辑rc.local,添加需要开机启动的任务

#!/bin/bash

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-cgi5.6 -P /var/run/fastcgi-php.pid

该条启动命令参数含义如下

  • -a 绑定到地址addr
  • -p 绑定到端口port
  • -C 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
  • -u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等现在可以在web根目录下放个探针或php文件测试一下了
  • -f 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
  • -P 指定产生的进程的PID文件路径

(5)测试
重新启动一下服务器,然后访问域名或ip加上phpinfo.php,出现这个图即表示没问题了

7.安装Mysql和图形化管理工具phpMyAdmin

(1)安装Mysql

$ sudo apt install mysql-server mysql-client

/etc/mysql/debian.cnf中有mysql的初始用户和密码

(2)安装phpMyAdmin

可以去phpMyAdmin官网找到下载链接,或者直接用下面的链接,到web根目录下执行:

$ wget -c https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip

下载后执行解压命令(后面的包名就是刚刚下载的文件的包名)并将文件夹重命名:

$ unzip phpMyAdmin-4.9.1-all-languages.zip && mv phpMyAdmin-4.9.1-all-languages phpMyAdmin

(3)修改Mysql密码

可以通过http://域名/phpMyAdmin/index.php访问数据库

输入/etc/mysql/debian.cnf文件中的用户名和密码登录,登录后选择 账户,我的是因为之前将其他的用户直接删除了,所以只有一个用户

在自己想要的改密的用户后面选择 修改权限,然后再选择 修改密码,自己修改密码即可


当然,自己也可以新建账户等,方法也很简单,自行探索


上一篇:
下一篇:
0%