linux下apache+mysql+php+phpmyadmin安装配置超详细步骤

一、准备工作

1.1、将所有源代码包下载并复制到一统一目录下

所有源代码包下载地址:

此处为隐藏的内容!
发表评论并刷新,才能查看

1.2、检查当前系统是否具有编译工具

  1. # gcc -v                     //出现 gcc 安装配置信息,如果没有使用yum install –y gcc安装
  2. # rpm -q make          //出现:make-3.81-3.el5
  3. # rpm -q gcc             //出现:gcc-4.1.2-48.el5
  4. # rpm -q gcc-c++     //出现:gcc-c++-4.1.2-48.el5,如果没有使用yum install –y gcc-c++安装

如果没有安装编译工具则在对解压后的源代码包执行./configure 命令时会报错: error: not acceptable C compiler found in $PATH

1.3、检查系统是否已经默认安装了 apache、mysql 和 php 并卸载,要卸载的话首先查看服务是否开启:

  1. # netstat –tnl
  2. 80 端口和 3306 端口是否开启先停服务再卸载,卸载时:如果是用 rpm 方式安装的,则先查找已经安装的包
  3. # rpm -qa|grep httpd
  4. # rpm -qa|grep mysql
  5. # rpm -qa|grep php
  6. # rpm –e 包名                                 //卸载
  7. # rpm –e 包名 --nodeps                 //考虑到包与包之间的依赖关系,有时要强制卸载 这样卸载先后顺序就不用考虑了 如果是使用源代码包安装方式,则停掉服务后直接删除安装目录。我们可以查看各个软件的 安装路径:
  8. # whereis mysql
  9. # whereis httpd
  10. # whereis php
  11. 然后用删除命令删除
  12. # rm –rf 文件目录名

1.4、安装所需软件

1.4.1、安装apr解决apr not found问题

  1. [root@wuwenhui ~]# tar -zxf apr-1.5.2.tar.gz
  2. [root@wuwenhui ~]# cd  apr-1.5.2
  3. [root@wuwenhui apr-1.5.2]# ./configure --prefix=/usr/local/apr
  4. [root@wuwenhui apr-1.5.2]# make
  5. [root@wuwenhui apr-1.5.2]# make install

1.4.2、安装apr-util解决APR-util not found问题

  1. [root@wuwenhui ~]# tar -zxf apr-util-1.5.4.tar.gz
  2. [root@wuwenhui ~]# cd apr-util-1.5.4
  3. [root@wuwenhui apr-util-1.5.4]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
  4. [root@wuwenhui apr-util-1.5.4]# make
  5. [root@wuwenhui apr-util-1.5.4]# make install

1.4.3、安装pcre解决pcre问题

  1. [root@wuwenhui ~]# tar -zxf pcre-8.39.tar.gz
  2. [root@wuwenhui ~]# cd pcre-8.39
  3. [root@wuwenhui pcre-8.39]# ./configure --prefix=/usr/local/pcre
  4. [root@wuwenhui pcre-8.39]# make
  5. [root@wuwenhui pcre-8.39]# make install

1.5、各个软件编译安装顺序apache、mysql、php或者mysql、apache、php

注意php的安装要放到最后。在安装php之前需要安装php5需要的最新版本库文件,如libxml2、libmacypt以及GD2库等文件。安装GD2库是为了让php5支持gif、png和jpeg图片格式,所以在安装GD2库之前还要先安装最新的zlib、libpng、freetype和jpegsrc等库文件。

二、MySQL 安装

2.1、检查库文件是否存在,如有删除。

  1. # rpm -qa | grep mysql
  2. mysql-libs-5.1.52-1.el6_0.1.x86_64
  3. # rpm -e mysql-libs-5.1.52.x86_64 --nodeps

2.2、检查mysql组和用户是否存在,如无创建。

  1. # cat /etc/group | grep mysql
  2. mysql:x:490:
  3. # cat /etc/passwd | grep mysql
  4. mysql:x:496:490::/home/mysql:/bin/bash
  5. //以上为默认存在的情况,如无,执行添加命令:
  6. # groupadd mysql
  7. # useradd -r -g mysql mysql
  8. //useradd -r参数表示mysql用户是系统用户,不可用于登录系统。

2.3、解压TAR包,更改所属的组和用户

  1. [root@wuwenhui ~]# cd /usr/local/
  2. [root@wuwenhui local]# tar xvfz mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz
  3. [root@wuwenhui local]# mv mysql-5.7.16-linux-glibc2.5-x86_64 mysql
  4. [root@wuwenhui local]# chown -R mysql mysql/
  5. [root@wuwenhui local]# chgrp -R mysql mysql/
  6. [root@wuwenhui local]# cd mysql/

2.4、安装和初始化数据库

  1. [root@wuwenhui mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

报错:bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

解决方法:

  1. [root@wuwenhui mysql]# yum install -y libaio*          //安装 libaio 和 libaio-devel
  1. [root@wuwenhui mysql]# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
  2. 2016-12-05T10:08:27.741267Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).      
  3. 2016-12-05T10:08:28.045205Z 0 [Warning] InnoDB: New log files created, LSN=45790      
  4. 2016-12-05T10:08:28.127371Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.      
  5. 2016-12-05T10:08:28.205159Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: c46242f1-bad2-11e6-b565-000c293ec131.      
  6. 2016-12-05T10:08:28.207573Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.      
  7. 2016-12-05T10:08:28.210201Z 1 [Note] A temporary password is generated for root@localhost: WrEdzr%U*8js                  //WrEdzr%U*8js 为生成的临时密码记住后面要用

----------------------

如果改变默认安装路径,则需要

1)/etc/my.cnf、/etc/init.d/mysqld中修改

basedir='/apps/mysql'

datadir='/apps/mysql/data'

2)创建ln

mkdir -p /usr/local/mysql/bin

ln -s /apps/mysql/bin/mysqld /usr/local/mysql/bin/mysqld

----------------------

  1. [root@wuwenhui mysql]# cp -a ./support-files/my-default.cnf /etc/my.cnf
  2. [root@wuwenhui mysql]# cp -a ./support-files/mysql.server /etc/init.d/mysqld
  3. [root@wuwenhui mysql]# cd bin/
  4. [root@wuwenhui bin]# ./mysqld_safe --user=mysql &
  5. [1] 2932   
  6. [root@wuwenhui bin]# 2016-06-01T22:27:09.708557Z mysqld_safe Logging to '/usr/local/mysql/data/localhost.localdomain.err'.   
  7. 2016-06-01T22:27:09.854913Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data   
  8. [root@wuwenhui bin]# /etc/init.d/mysqld restart        //设置开机启动
  9. Shutting down MySQL..2016-06-01T22:27:50.498694Z mysqld_safe mysqld from pid file /usr/local/mysql/data/localhost.localdomain.pid ended   
  10. SUCCESS!   
  11. Starting MySQL. SUCCESS!   
  12. [1]+ Done ./mysqld_safe --user=mysql   
  13. [root@wuwenhui bin]#
  14. [root@wuwenhui bin]# chkconfig --level 35 mysqld on

2.5、初始化密码

mysql5.7会生成一个初始化密码前面安装步骤已经生成。

  1. [root@wuwenhui bin]# ./mysql -uroot -p
  2. Enter password:   
  3. Welcome to the MySQL monitor. Commands end with ; or \g.   
  4. Your MySQL connection id is 2   
  5. Server version: 5.7.12   
  6. Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.   
  7. Oracle is a registered trademark of Oracle Corporation and/or its   
  8. affiliates. Other names may be trademarks of their respective   
  9. owners.   
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.   
  11. mysql> SET PASSWORD = PASSWORD('123456');        //将密码修改为123456
  12. Query OK, 0 rows affected, 1 warning (0.00 sec)   
  13. mysql> flush privileges;
  14. Query OK, 0 rows affected (0.00 sec)

2.6、添加远程访问权限

  1. mysql> use mysql;
  2. Reading table information for completion of table and column names   
  3. You can turn off this feature to get a quicker startup with -A   
  4. Database changed   
  5. mysql> update user set host = '%' where user = 'root';
  6. Query OK, 1 row affected (0.00 sec)   
  7. Rows matched: 1 Changed: 1 Warnings: 0   
  8. mysql> select host, user from user;
  9. +-----------+-----------+   
  10. | host | user |   
  11. +-----------+-----------+   
  12. | % | root |   
  13. | localhost | mysql.sys |   
  14. +-----------+-----------+   
  15. 重启生效
  16. [root@wuwenhui bin]/etc/init.d/mysqld restart

三、Apache 安装

3.1、解压并进入安装

  1. # cd /usr/local/
  2. # tar zxvf httpd-2.4.23.tar.gz
  3. # cd httpd-2.4.23
  4. #./configure --prefix=/usr/local/apache  --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
  5. # make
  6. # make install

3.2、测试 apache 服务器

3.2.1、检查安装目录

  1. # ls /usr/local/apache

3.2.2、检查配置文件目录

  1. # ls /usr/local/apache/conf

3.2.3、启动 apache

  1. # /usr/local/apache/bin/apachectl start

如果出现错误 httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

解决办法:只要把/conf/httpd.conf 文件的#ServerName 前的#去掉,然后重启下服务

3.2.4、查看 80 端口是否开启 netstat -tnl||grep 80 也可以查看进程:

  1. # ps –le|grep httpd

3.2.5、关闭 apache

  1. # /usr/local/apache/bin/apachectl stop

3.2.6、远程访问 apache 服务器

ifconfig 查看 IP 地址,找到 httpd.conf 配置文件修改 ServerName 为本机 IP

  1. # cd /usr/local/apache/conf/httpd.conf
  2. # vi httpd.conf

修改 ServerName 192.168.1.109:80 修改配置文件后要将服务重启后才生效。

远程登录输入网址格式 http://IP/

这时候如果远程访问不了,将服务器防火墙关掉

  1. # /etc/init.d/iptables status    //查看防火墙状态
  2. # /etc/init.d/iptables stop      //关闭防火墙 如果网页显示 It Works!说明 apache 安装成功

或者在防火墙规则里添加允许80、3306端口通过

  1. # vi /etc/sysconfig/iptables
  2. -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT      //允许80端口通过防火墙 
  3. -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT    //允许3306端口通过防火墙 

特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面

20161129094257

3.2.7、添加自启动

  1. echo /usr/local/apache/bin/apachectl start >>/etc/rc.local

四、PHP安装

4.1、php库文件安装

在安装 php 之前,有时候我们需要安装 php 所需要的库文件。4.1php 库文件的安装主要是为了以后 php 的应用,我们可以根据项目需要有选择的安装。

1)安装 libxml2 最新库文件

  1. # tar -zxf libxml2-2.8.0.tar.gz
  2. # cd libxml2-2.8.0
  3. # ./configure --prefix=/usr/local/libxml2
  4. # make
  5. # make  install

其中 3.prefix 参数指定安装目录为 libxml2,如果该目录不存在,则在配置阶段会自动创建, 安装过程中注意每个步骤完成后有无 error 错误,库文件的安装成功检测,进入安装后的目录。

  1. # cd /usr/local/libxml2/
  2. # ls                                         //看有没有一些子目录

2)安装 libmcrypt 最新库文件

  1. # tar -zxf libmcrypt-2.5.8.tar.gz
  2. # cd libmcrypt-2.5.8
  3. # ./configure --prefix=/usr/local/libmcrypt
  4. # make
  5. # make install
  6. # cd libltdl
  7. # ./configure --enable-ltdl-install
  8. # make
  9. # make install

3)安装 zlib 最新库文件

直接安装在系统库里,不用指定安装目录

  1. # tar -xvf zlib-1.2.8.tar.gz
  2. # cd zlib-1.2.8
  3. # ./configure
  4. # make
  5. # make install

4)安装 libpng 最新库文件(zlib 要在之前安装)

  1. # tar -zxf libpng-1.6.26.tar.gz
  2. # cd libpng-1.6.26
  3. # ./configure --prefix=/usr/local/libpng
  4. # make
  5. # make install

5)安装 jpeg6 最新库文件

安装目录不会自动创建,需要自己创建

  1. mkdir /usr/local/jpeg6                                 //建立 jpeg6 软件安装目录
  2. mkdir /usr/local/jpeg6/bin                          //建立存放命令的目录
  3. mkdir /usr/local/jpeg6/lib                           //建立 jpeg6 库文件所在目录
  4. mkdir /usr/local/jpeg6/include                   //建立存放头文件目录
  5. mkdir -p /usr/local/jpeg6/man/man1        //建立存放手册的目录
  6. # tar -zxf libjpeg-6b.tar.gz
  7. # cd libjpeg-6b
  8. # ./configure --prefix=/usr/local/jpeg6 --enable-shared --enable-static
  9. # make
  10. # make install

有时编译时会出现“make:/libtool:命令未找到”错误 解决办法:首先看有没有安装 libtool

  1. # rpm -qa|grep libtool                           //没有 yum install -y libtool 安装

然后将 libtool 里的两个配置文件覆盖掉 jpeg-6b 里的配置文件(CentOS6.2系统则较下多了一级config文件夹)

  1. # cp /usr/share/libtool/config/config.sub /usr/local/src/jpeg-6b/config.sub            //回车 y
  2. # cp /usr/share/libtool/config/config.guess /usr/local/src/jpeg-6b/config.guess     //回车 y

然后重新 configure

6)安装 freetype 最新库文件

  1. # tar -zxf freetype-2.7.tar.gz
  2. # cd freetype-2.7
  3. # ./configure --prefix=/usr/local/freetype
  4. # make
  5. # make install

7)安装 autoconf 最新库文件

直接安装在系统库里,不用指定安装目录

  1. # tar -zxf autoconf-2.69.tar.gz
  2. # cd autoconf-2.69
  3. # ./configure
  4. # make
  5. # make install

8)安装最新的 GD 库文件

  1. # tar -zxf libgd-2.1.1.tar.gz
  2. # cd libgd-2.1.1
  3. # ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib --with-jpeg=/usr/local/jpeg6 --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype
  4. # make
  5. # make install

9)安装 curl

  1. # tar -zxf curl-7.51.0.tar.gz
  2. # cd curl-7.51.0
  3. # ./configure --prefix=/usr/local/curl
  4. # make
  5. # make install

10)安装libXpm、perl、perl-devel

  1. # yum install -y libXpm-devel.x86_64
  2. # yum install -y perl perl-devel

4.2、PHP安装

因为 php 是作为 apache 的配置模块安装的,所以启动 apache 即启动了 php

  1. # tar -zxf php-5.6.28.tar.gz
  2. # cd php-5.6.28
  3. # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-curl=/usr/local/curl --with-libxml-dir=/usr/local/libxml2 --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg6 --with-freetype-dir=/usr/local/freetype --with-gd=/usr/local/gd2 --with-xpm-dir=/usr/lib64 --with-mcrypt=/usr/local/libmcrypt --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-soap --enable-mbstring=all --enable-sockets
  4. //--with-apxs2 必选项告诉php查找Apache的地方
  5. //--with-mysql 必选项
  6. # make
  7. # make install

./configure报错:The output of /usr/local/apache/bin/apxs follows:
./configure: /usr/local/apache/bin/apxs: /replace/with/path/to/perl/interpreter: bad interpreter: No such file or directory
configure: error: Aborting

解决方法:

找到apache目录下的apxs脚本文件,然后编辑它,把第一行的注释的地方修改为perl的可执行路径(首先要保证你安装过perl,没有安装请先行安装)。

  1. # vi /usr/local/apache2/bin/apxs

将第一行

  1. #!/replace/with/path/to/perl/interpreter -w

修改为

  1. #!/usr/bin/perl -w

./configure报错:configure: error: Cannot find libmysqlclient_r under /usr/local/mysql.
Note that the MySQL client library is not bundled anymore!

解决方法:

  1. # cd /usr/local/mysql/lib/
  2. # ln -s libmysqlclient.so.20.3.3 libmysqlclient_r.so

make 的时候出现以下错误

1)/usr/bin/ld: cannot find –lltdl collect2: ld returned 1 exit status

make: *** [libphp5.la] Error 1

解决办法:这是因为找不到 libltdl 库文件

  1. # ldconfig –p|grep ltdl

安装 libltdl 库文件

  1. # tar -zxf libmcrypt-2.5.8.tar.gz
  2. # cd libmcry-2.5.8/libltdl
  3. # ./configure --enable-ltdl-install
  4. # make
  5. # make install

4.3、Lamp 环境整合

1、查看 php 模块是否已经在 apache 下

  1. # cd /usr/local/apache/modules
  2. # ls

是否有 libphp5.so 模块

2、创建 php 配置文件

  1. # cd
  2. # cp php-5.6.28/php.ini-production /usr/local/php/etc/php.ini

3、用 vi 编辑 apache 配置文件

  1. # vi /usr/local/apache/conf/httpd.conf
  2. 添加:AddType application/x-httpd-php .php .phtml  //指定后缀名让服务器将解析,可任意 添加
  3. 修改:DirectoryIndex index.php index.html
  4. //对配置文件所做的修改,需要重启服务,又因为php作为apache的加载模块,所以在修改php配置文件后也要重启apache服务
  5. # /usr/local/apache/bin/apachectl stop
  6. # /usr/local/apache/bin/apachectl start

4、测试php

  1. # cd /usr/local/apache/htdocs
  2. # vi test.php
  3. <?php
  4. Phpinfo();
  5. ?>

在网页上输入 http://127.0.0.1/test.php

5、再次修改 test.php 添加数据库相关代码测试是否连接 mysql

  1. <?php
  2. If(mysql_connect(„localhost‟,‟root‟,‟123456‟))
  3. {
  4. Echo‟OK‟;
  5. }
  6. Else
  7. Echo‟Failed‟;}?>

6、以后做好的 php 网页放到/usr/local/apache/htdocs 下,如果是文件夹,要将文件夹的用户改
为运行 apache 用户(有些需要写文件)

  1. # ps –aux|grep httpd                 //查看运行 apache 用户
  2. chown –R wuwenhui.test       //上传的文件夹名

五、phpMyAdmin安装

作用:管理数据库的 web 页面,可以远程管理服务器上的数据库

1、安装

  1. # tar -zxf phpMyAdmin-4.6.5.1-all-languages.tar.gz
  2. //拷贝目录到指定位置并改名为 phpmyadmin
  3. # cp -a phpMyAdmin-4.6.5.1-all-languages /usr/local/apache/htdocs/phpmyadmin
  4. # cp /usr/local/apache/htdocs/phpMyAdmin/config.sample.inc.php config.inc.php
  5. //生成配置文件

2、phpMyAdmin 的配置

# vi config.inc.php

//修改 auth_type 选择就可以改变身份验证模式,默认情况为 cookie 身份验证模式。

http 和 cookie 身份验证模式要求用户在 phpMyAdmin 登录窗口里输入 MySQL 数据库有效用 户名和密码,才能使用 phpMyAdmin 程序。这两种身份模式尤其适合数据库中多个用户账号的情况。

config 身份验证模式,这种模式与前两种不同的是,要将 MySQL 用户名和密码写 config.inc.php 文件中,这样在登录 phpMyAdmin 时就不会提示数据用户名和密码了,如果只是在一个本地 系统上使用 phpMyAdmin,就可以使用这种模式。

修改方式:

  1. http 身份验证模式:$cfg['Servers'][$i]['auth_type'] = 'http';
  2. // 直接改为 http 即可。
  3. cookie 身份验证模式:$cfg['blowfish_secret'] = 'xxxxxx';
  4. // 这里需要一个任意字符串
  5. $cfg['Servers'][$i]['auth_type'] = 'cookie
  6. config 身份验证模式:$cfg['Servers'][$i]['auth_type'] = 'config';
  7. //添加以下两个选项
  8. $cfg['Servers'][$i]['user'] = 'root';                    //MySQL 数据库用户名
  9. $cfg['Servers'][$i]['password'] = '123456';      //数据库密码

访问 phpmyadmin:http://ip/phpmyadmin,

页面底部显示配置文件现在需要一个短语密码。

20161130142846

如需让其不显示,解决方法:

1)将 phpMyAdmin/libraries/config.default.php中的

$cfg['blowfish_secret'] = ''; 改成 $cfg['blowfish_secret'] = 'jPXuc2pTrmUUum5M51BS3TKStGuUZfiyn60'; (注:其中的'′内的为随意的字符)

2)在phpMyAdmin目录中,打开config.sample.inc.php(我的刚生成了这个文件config.inc.php),所以我是改config.inc.php文件,18行

$cfg['blowfish_secret'] = ''; 改成 $cfg['blowfish_secret'] = 'jPXuc2pTrmUUum5M51BS3TKStGuUZfiyn60'; (注:其中的'′内的为随意的字符)

密码我设置的短就提示:配置文件中的密文(blowfish_secret)太短,所以我生成了个35位的字符就没提示了。

20161130144038

这个密码用于Cookies的加密,以免多个PhpMyAdmin或者和其他程序共用Cookies时搞混。

做好以上两步,刷新网页,OK,“配置文件现在需要一个短语密码。”的提示不存在了!

六、总结

6.1、apache、mysql、php 配置文件

6.1.1、apache 安装时如果没指定配置文件的目录,安装后默认在

  1. # vi /usr/local/apache(安装路径)/conf/httpd.conf

6.1.2、mysql 和 php 安装后未生成配置文件,需要我们自己从源码包创建到指定目录

  1. # cp /usr/local/php-5.6.28/php.ini-dist /usr/local/php/etc/php.ini
  2. # cp /usr/local/mysql-5.7.16/support-files/my-medium.cnf /etc/my.cnf

6.1.3、修改配置文件后,要重启服务才会生效。其中 php 配置文件修改后,重启的是 appache 服 务

Apache:

  1. # /usr/local/apache/bin/apachectl start
  2. # /usr/local/apache/bin/apachectl stop

MySQL:

  1. # /usr/local/mysql/bin/mysqld_safe &
  2. # /usr/local/mysql/bin/mysqladmin –u root –p shutdown

6.1.4、查看服务是否开启

  1. # Netstat –tnl                  //查看 80 端口和 3306 端口是否打开

6.1.5、为 apache 和 mysql 添加开机自启动

  1. echo /usr/local/mysql/bin/mysqld_safe --user=mysql & >>/etc/rc.local
  2. echo /usr/local/apache/bin/apachectl start >>/etc/rc.local

6.2、 配置文件常见参数修改

6.2.1、Apache:/usr/local/apache/conf/httpd.conf

  1. ServerName: 192.168.1.1                //改为本机 IP
  2. DirectoryIndex index.php index.html    //增加 php 默认网页
  3. Addtype application/x-httpd-php .php   //添加 php 后缀名让服务器能够解析 php 文件

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: