Ubuntu 17.10 用 apt 搭建 lamp 环境、安装 phpmyadmin、redis 服务+扩展、mysql 扩展、开启错误提示、配置虚拟主机

一、最终环境

Ubuntu17.10、Apache2.4.27、MySQL5.7.20、PHP7.1.8

二、安装 apache

官方源有,直接安装:

sudo apt-get install apache2

三、安装 mysql

官方源有,直接安装:

sudo apt-get install mysql-server

安装期间会提示设置 MySQL administrator 的密码

============================================

PS:需要什么软件或包,直接用 apt-cache 搜索

apt-cache search <关键词>

确认包名后,直接用 apt-get install 安装。

四、安装 php

官方源有 php7.1,直接安装:

sudo apt-get install php7.1 php7.1-dev

注意带上版本号,不然默认安装 7.x。php7.1 是主程序,php7.1-dev 是 7.1 版的开发包(有 phpize、php-config 等等,phpize 可以为 已编译好的 php 加载外挂模块,php-config 可以获得 php 的详细配置)。

============================================

如果要装 php5.6 的话,推荐这个 PPA 源:ppa:ondrej/php。这个源有 php5.6 和 php7.x 以及绝大多数的 php 扩展,包括 redis、memcache、mongodb 等等。

添加 ppa:ondrej/php 源:

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

安装 php5.6:

sudo apt-get install php5.6 php5.6-dev

五、重启 apache

sudo /etc/init.d/apache2 restart

更多选项:

Usage: apache2 {start|stop|graceful-stop|restart|reload|force-reload}

六、检查 apache

访问 http://localhost/。这是 apache 服务器的默认页在 /var/www/html 下,里面还介绍了 apche 的相关配置文件。

未分类

七、检查 mysql

终端输入 mysql,跟着打两个 Tab,看到所有有关 mysql 的命令包:

mingc@mingc-GE60-2PL:~$ mysql
mysql                      mysql_install_db
mysqladmin                 mysqloptimize
mysqlanalyze               mysql_plugin
mysqlbinlog                mysqlpump
mysqlcheck                 mysqlrepair
mysql_config_editor        mysqlreport
mysqld                     mysql_secure_installation
mysqld_multi               mysqlshow
mysqld_safe                mysqlslap
mysqldump                  mysql_ssl_rsa_setup
mysqldumpslow              mysql_tzinfo_to_sql
mysql_embedded             mysql_upgrade
mysqlimport               

输入 mysql -u<你的账号> -p ,回车,输入密码,进入 mysql:

mingc@mingc-GE60-2PL:~$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 73
Server version: 5.7.20-0ubuntu0.17.10.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql>

八、检查 php

php -v

不出意外的话,应该显示 php 的版本

============================================

也可以查看 apache 和 mysql 版本:

apache2 -v
mysql -V

九、创建 php 探针

sudo vim /var/www/html/info.php

添加如下内容:

<?php
phpinfo();

改变所有者:

sudo chown www-data:www-data /var/www/html/info.php

访问 http://localhost/info.php,得到有关 PHP 的详细页面。

未分类

十、安装 phpmyadmin

sudo apt-get install phpmyadmin

安装期间,

询问要连接的服务器,选择 apache2;

询问创建 phpmyadmin 的数据库,选择“是”;

询问设置登录 phpmyadmin 的用户和密码。

然后浏览器访问:http://localhost/phpmyadmin

未分类

十一、安装 redis 服务和 redis 扩展

官方源有,直接安装:

(1)redis 服务器

sudo apt-get install redis-server

期间,一些需要的工具包也会自动安装。安装好后,默认自启动、后台运行,配置文件在 /etc/redis 目录下。

(2)php 的 redis 扩展模块

sudo apt-get install php-redis

其他的扩展也可以这么装,利用 apt-cache search 搜索包名,再用 apt-get install 安装。

重启 apche, sudo /etc/init.d/apache2 restart

访问 http://localhost/info.php,确认 redis 扩展:

未分类

测试一下:

终端输入 redis-,跟着打两个 Tab 键,看到有关 redis 的命令和工具:

mingc@mingc-GE60-2PL:~$ redis-
redis-benchmark  redis-check-rdb  redis-server    
redis-check-aof  redis-cli

redis-cli 是 访问 redis-server 的客户端接口,执行 redis-cli 即可登录到 redis 服务器:

mingc@mingc-GE60-2PL:~$ redis-cli
127.0.0.1:6379>

更多 redis-cli 的命令选项,使用 redis-cli –help 查看。

再写一段 php 脚本测试一下, vim /var/www/html/test_redis.php

内容如下:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
echo "Server is running: " . $redis->ping(); 

十二、安装 mysql 扩展

在上面的 http://localhost/info.php 里可以看到,没有 mysql 扩展。虽说 php7 弃用了 mysql 扩展,但有些旧项目还是需要的。装一下 mysql 扩展。

这里选择编译安装(通过 apt 安装的 php-mysql 扩展,如果是 php7.x,那就是装 pdo 和 pdo_mysql 扩展)

(1)直接从 PECL 官方站 搜索 mysql,找到 MySQL 扩展的 页面 ,点击页面的 [ Browse Source ],选择最新的 commit、下载 tar.gz 包。我下载后的包名为 mysql-fae9884.tar.gz。

(2)编译安装:

tar -xf mysql-fae9884.tar.gz
cd mysql-fae9884
phpize
./configure --with-php-config=/usr/bin/php-config
sudo make && sudo make install

前面装 php7.1 的时候,也装了 php7.1-dev,这里面就有 phpize 和 php-config。而 –with-php-config 是 php-config 程序(命令)的位置,可以使用 whereis php-config 查看。

编译安装成功后,会有成功提示 和 mysql 扩展模块(.so 文件)的路径:

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/lib/php/20160303/  

然后,编辑 php 用于 apache 的配置文件 /etc/php/7.1/apache2/php.ini,在最后添加一行:

extension=mysql.so

重启 apache, sudo /etc/init.d/apache2 restart

访问 http://localhost/info.php,确认下有了 mysql 扩展。

未分类

写一段 php 脚本测试: vim /etc/www/html/test_mysql.php

内容如下:

<?php
$mysql = mysql_connect('127.0.0.1', 'root', 'root');
if(!$mysql) {
    die(mysql_error($mysql));
}
echo 'Ok' . "rn";

由于 mysql 模块是手动编译安装的,所以默认不会进入 php 的命令行配置。

下面把 mysql 模块加入到 php 的 cli(命令行) 配置,让 php 的命令行模式也支持 mysql 模块:

sudo vim /etc/php/7.1/mods-available/mysql.ini

编辑内容如下:

extension=mysql.so

建立符号链接:

sudo ln -s /etc/php/7.1/mods-available/mysql.ini /etc/php/7.1/cli/conf.d/mysql.ini

检查一下,确认 php 命令行模式启用了 mysql 扩展模块:

php -m | grep mysql  

十三、开启 php 和 apache 的错误提示

默认不显示 php 错误,下面开启。

(1)修改 php 的配置文件,在 /etc/php/7.1/apache2 下,打开 php.ini。

(2)搜索 display_errors = Off,修改为 On

(3)搜索 error_reporting = E_ALL & ~E_NOTICE,修改为 E_ALL | E_STRICT(搜不到的话就搜短一点:“error_reporting =”)。

(4)修改 apache 的配置文件,在 /etc/apache2 下,打开 apache.conf。

(5)文件最后添加两行:

php_flag display_errors        on
php_value error_reporting       2039

(6)重启 apache:

sudo /etc/init.d/apache2 restart

十四、创建虚拟主机

创建虚拟主机自然用 apache 配置,了解一下 apache 的配置目录:

/etc/apache2
├── apache2.conf      # 主配置文件,其他的一些配置文件通过 Include 指令包含进来
├── conf-available    # 所有可用的配置文件(里面的 *.conf 文件内容几乎都被默认注释了)
├── conf-enabled      # 可用的配置文件中,启用了哪些,一般都是符号链接、指向上面的 conf-available 目录里每个 *.conf 文件
├── envvars           # 环境变量
├── magic
├── mods-available    # 所有可用的模块
├── mods-enabled      # 哪些模块被启用了
├── ports.conf        # 定义端口监听
├── sites-available   # 重点来了:所有可用的站点
└── sites-enabled     # 哪些站点被启用了

步骤简单,就是在 sites-available 目录定义站点配置文件,然后在 sites-enabled 里建立指向这个配置文件的符号链接。

(1)建配置

cd /etc/apache2/sites-available/
sudo cp 000-default.conf my.site.conf
vim my.site.conf

修改如下(注意别把注释与指令行放在一行,不然会有语法错误;精简版在后面):

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.

    # 域名
    ServerName my.site
    # 域名别名,可以设置多个,空格隔开
    ServerAlias my.site

    ServerAdmin webmaster@localhost

    # 站点根目录
    DocumentRoot /var/www/my.site
    <Directory "/var/www/my.site/">
        # 启用符号链接
        Options FollowSymLinks

        DirectoryIndex index.php index.html index.htm

        # 注意这个配置,会影响本地目录下的 .htaccess 的启用
        AllowOverride All

        Order deny,allow
        Allow from All

        # 限制访问目录,多个目录用冒号隔开
        # php_admin_value open_basedir "/var/www/my.site/:/tmp:/usr/lib/php/"
    </Directory>

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

精简版(去掉了多余注释):

<VirtualHost *:80>
    ServerName my.site
    ServerAlias my.site
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/my.site
    <Directory "/var/www/my.site/">
        Options FollowSymLinks
        DirectoryIndex index.php index.html index.htm
        AllowOverride All
        Order deny,allow
        Allow from All
        # php_admin_value open_basedir "/var/www/my.site/:/tmp:/usr/lib/php/"
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

(2)建符号链接

sudo ln -s /etc/apache2/sites-available/my.site.conf /etc/apache2/sites-enabled/my.site.conf

(3)检查语法

终端执行:

apachectl configtest

(4)添加 hosts 解析

vim /etc/hosts ,添加一行:

127.0.0.1   my.site

(5)重启 apache

sudo /etc/init.d/apache2 restart

然后,按照配置的站点目录 /etc/www/my.site,创建目录和测试文件:

sudo makedir -p /etc/www/my.site
cd /etc/www/my.site/
sudo echo "<h2>Welcome to my.site!</h2>" > index.html

浏览器访问 http://my.site,

未分类

OK,完成~~

十五、相关链接

PHP 及扩展的 PPA 源:https://launchpad.net/~ondrej/+archive/ubuntu/php/+index?batch=75&memo=75&start=75

虚拟机Ubuntu17.04环境下搭建PHP7.0+ Apache+MySQL+PhpMyAdmin 攻略

打开“终端窗口”进行软件源的更新,不更新软件源直接安装PHP,会出现有些软件包下载失败,终端更新命令“sudo apt-get update ” –回车– “输入管理员密码”进行更新。

未分类

(1)软件更新完后,就可以安装PHP、Apache、MySQL了,一般安装顺序是先安装MySQL在安装Apache最后安装PHP,Pache和MySQL安装顺序可以颠倒,因为二者依赖性并不是很强,但PHP要安装在这两个后面,因为是要依赖Apache和MySQL的服务的。

(2)MysSQL安装:

终端命令输入:“ sudo apt-get install mysql-server php-mysql ” — “ 输入管理员密码 ” — “ 回车 ” 开始安装。

未分类

安装中间需要设定MySQL的root管理员密码,密码需要输入两遍。

未分类

(3)Apache2 安装:

终端命令:“ sudo apt-get install apache2 ” — “ 输入管理员密码 ” — “ 回车 ” 开始安装。

未分类

安装完成后可以在浏览器中输入“ 127.0.0.1 ” 或者 “ localhost ” ,就能查看Apache2是否安装成功。

未分类

(4) PhpMyAdminde 安装:

终端命令:“ sudo apt-get install phpmyadmin ” — “ 输入管理员密码 ” — “ 确定 ” 。

未分类

安装 PhpMyAdminde 时需要选择Apache2 和MySQL的root密码,这里的密码也需要输入两遍。

未分类

未分类

(5)PHP 和php相关插件包安装:

终端命令:“ sudo apt-get install php libapache2-mod-php php-mcrypt php-curl php-imagick php-cli ” — “输入管理员密码” — “确定”开始安装

未分类

可以用这个命令新建脚本文件:

sudo vi /var/www/html/info.php

打开info.php文件,输入以下内容。

<?php
phpinfo();
?>

未分类

在浏览器访问该文件本地就用“ 127.0.0.1/info.php ” 或者“ http://你的服务器的IP地址/info.php ” 查看,要是看到下面信息就说明php安装成功。

测试成功后,最好删掉这个info.php文件,因为这个文件会让其他人看到你服务器的一些配置,

输入下边的命令:sudo rm /var/www/html/info.php

未分类

(6)总结:现在已经安装完LAMP了,快去开发属于自己的网站吧。

解决从phpmyadmin导入sql文件大小被限制的问题

昨天部署了一套考试系统,打算将原来考试系统的数据库直接导入新系统,省去录入数据的苦恼。无奈发现phpmyadmin导入数据限制大小为2M。网上搜索了很多解决办法,将其综合最终导入成功。具体步骤:

1、打开PHP配置文件php.ini。查找upload_max_filesize 和post_max_size 把他们的值修改的大一点(100M)。如果上传的文件很大,还需进行以下修改:

  • max_execution_time(php页面执行最大时间)

  • max_input_time(php页面接受数据最大时间)

  • memory_limit(php页面占用的最大内存)

这是因为phpmyadmin上传大文件时,php页面的执行时间、内存占用也势必变得更长更大,其需要php运行环境的配合,光修改上传文件大小限制是不够的。

2、打开 phpmyadmin 目录下的config.inc.php 文件,查找$cfg[‘ExecTimeLimit’]配置选项,默认值是300,需要修改为0,即没有时间限制。

实际上,在我的环境中$cfg[‘ExecTimeLimit’]的配置项在文件config.default.php中(612行)。

3、打开 phpmyadmin 目录下的import.php 文件 修改$memory_limit 的值

if(empty($memory_limit)){

$memory_limit=2*1024*1024;

}

if(($memory_limit)==-1){

$memory_limit=10*1024*1024;

}

都改成10010241024(根据自己实际情况)。

说明:首选读取php.ini配置文件中的内存配置选项memory_limit,如果为空则默认内存大小限制为2M,如果没有限制则内存大小限制为10M,你可以结合你php.ini配置文件中的相关信息修改这段代码。

注意此时重启服务,会发现文件限制的大小已经变成了100M。但是当我欣喜的导入的时候碰到了另一个问题:

Error: mysql server has gone away。

解决的方法就是找到mysql安装目录,找到my.ini文件,在文件的最后添加:max_allowed_packet = 100M(也可以设置自己需要的大小)。 max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。

不得不说的是,我在配置这个参数之前,在my.ini中还添加了两个参数:

在my.cnf文件中添加或者修改以下两个变量:

wait_timeout=2880000

interactive_timeout = 2880000

关于两个变量的具体说明可以google或者看官方手册。

(虽然这里说的是my.cnf,但是我是在my.ini中添加的)

最后,成功导入了一个30多M的数据库备份。

centos系统安装配置phpMyAdmin数据库管理工具

centos下安装配置phpmyadmin,我花了二个晚上,郁闷的我不行,配置phpmyadmin简单吧,很简单,我刚工作的时候,就配置过,很顺利,5年后,竟然花了我二个晚上,感觉在centos下有好多陷井,貌似可以走的通,但是进去后,是死胡同。所以做个笔记

一、在phpMyAdmin官方网站http://www.phpmyadmin.net/downloads/下载源码包

cd /usr/local/src

wget https://files.phpmyadmin.net/phpMyAdmin/4.6.0/phpMyAdmin-4.6.0-all-languages.tar.gz

tar zxvf phpMyAdmin-4.6.0-all-languages.tar.gz

二、将phpMyAdmin-4.6.0-all-languages放到web目录下

mv phpMyAdmin-4.6.0-all-languages /usr/local/nginx/html
//重命名
mv phpMyAdmin-4.6.0-all-languages phpMyAdmin

三、配置

cd /usr/local/nginx/html/phpMyAdmin/libraries

vim config.default.php

//修改以下地方
// localhost => 127.0.0.1
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456';

四、访问

  • 本项目在放在nginx测试目录html下

  • 在浏览器中输入http://localhost/phpMyAdmin

  • 然后输入用户名、密码即可

五、错误信息

1、the local server’s socket is not correctly configured

解决方案如下,在配置文件中修改host

// localhost => 127.0.0.1 
$cfg[‘Servers'][$i][‘host'] = ‘127.0.0.1';

以上就是本文的全部内容,希望对大家的学习有所帮助。

解决phpmyadmin出现The mbstring extension is missing错误方法

这篇文章主要介绍了phpmyadmin提示The mbstring extension is missing的解决方法,分析了错误提示的原因与不同平台的解决方法,具有一定的参考借鉴价值,需要的朋友可以参考下

一、问题:

phpmyadmin提示:The mbstring extension is missing. Please check your PHP configuration.

二、解决方法:

其实只要运行一段:

yum install php-mbstring

就OK了。

如果用的是linux的话,可能是这个问题:查看一下 /etc/php5/mods-available/json.ini 这个文件,把第二行开头的分号去掉,也就是去掉注释,然后保存,重启php就可以了。

ubuntu mysql远程连接+phpmyadmin安装

一、如何让ubuntu上的mysql允许远程连接

进入MySQL,执行如下命令:

use mysql;

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

flush privileges; //刷新

select host,user from user; //查看是否成功

退出mysql;

  • 打开sudo vim /etc/mysql/my.cnf(可能不是此路径,也可能是my。conf,在该目录下找一下)
  • 将bind-address = 127.0.0.1
  • 设置成bind-address = 0.0.0.0(设备地址)

重新启动(命令如下):

sudo /etc/init.d/mysql restart

这样就可以远程连接了!

二、ubuntu如何安装phpmyadmin

方法一:

在phpmyadmin官网(https://www.phpmyadmin.net/)上下载压缩包,解压至你apache根目录下(默认/var/www/html),重命名为phpmyadmin;

sudo apt-get install php-mbstring php-gettext

然后修改PHP配置文件:

sudo vim /etc/php/7.0/apache/php/ini
display_errors = On(都改为On)
extension=php_mbstring.dll (去掉前面的;)

重启apache:

sudo /etc/init.d/apache2 restart

可以用http://localhost/phpmyadmin访问了!

方法二:

sudo apt-get install phpmyadmin

建立/var/www/html 下的软连接:

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

安装php-mbstring和php.ini配置同方法一。

mysql5.7 phpMyAdmin Access denied for user ‘root’@’localhost’

遇到这种报错,先检查MySQL版本,如果是5.7的话,那默认是不允许phpmyadmin使用root登录的。
解决办法是,建立一个phpmyadmin专用账户,流程如下:

1. 进入mysql命令行

sudo mysql --user=root mysql

2. 创建phpmyadmin用户

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 用刚才创建的用户登录即可

方法来自:https://askubuntu.com/questions/763336/cannot-enter-phpmyadmin-as-root-mysql-5-7

phpmyadmin错误The plain HTTP request was sent to HTTPS port

今天在配置nginx的https支持,把phpmyadmin放在一个子目录下,即https://ip/phpmyadmin,登录出现The plain HTTP request was sent to HTTPS port错误,现给出解决方法:
1.在location ~ .php$区域添加fastcgi_param HTTPS on;如以下代码:

  1. location ~ .php$ {
  2.                 fastcgi_index index.php;
  3.                 include /etc/nginx/fastcgi_params;
  4.                 fastcgi_param HTTPS on;
  5.                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  6.                 fastcgi_pass 127.0.0.1:9000;
  7.         }

2.在http区域添加

  1. map $scheme $fastcgi_https {
  2. default off;
  3. https on;
  4. }

如例子:

  1. http
  2. {
  3. map $scheme $fastcgi_https {
  4. default off;
  5. https on;
  6. }
  7.  
  8.     include       /etc/nginx/mime.types;
  9.     default_type  application/octet-stream;
  10. ………
  11. }

之后重载nginx即生效.