在centos上通过yum安装PHP+Nginx+Mysql+phpmyadmin

时间:2022-05-14 20:34:19

我的服务器环境是DigitalOcean的Contos6.5 64位。

Step 1:首先安装Yum所需要的所有软件。

因为nginx和php-fpm都不能直接通过Yum直接安装,所以我们需要下载两个仓库到我们的VPS上。

sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
sudo rpm
-Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Step 2:安装Mysql

sudo yum install mysql mysql-server

安装完毕后,重启Mysql

sudo /etc/init.d/mysqld restart

重启完后,我们可以启动Mysql的安全配置项

sudo /usr/bin/mysql_secure_installation

这里会要求你输入root密码。

Enter current password for root (enter for none): OK, successfully used password, moving on...

因为是刚装的Mysql,所以没有密码,直接回车即可,代表空。

然后Mysql会要求你为root用户设置密码。

接下来Mysql会要求你输入一系列选项,最简单的方案是全部输入Y。具体内容可以阅读对应的选项。

By default, a MySQL installation has an anonymous user, allowing anyone
to log
into MySQL without having to have a user account created for
them
. This is intended only for testing, and to make the installation
go a bit smoother
. You should remove them before moving into a
production environment
.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password
from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access
. This is also intended only for testing, and should be removed
before moving
into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately
.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

Step 3: 安装nginx

sudo yum install nginx

因为nginx不会自启动,所以需要手动启动,命令如下。

sudo /etc/init.d/nginx start

你可以通过在浏览器上直接输入ip地址来确认你的nginx是否已经成功安装。

通过运行下面的命令来显示你服务器的ip地址。

ifconfig eth0 | grep inet | awk '{ print $2 }'

Step 4:安装php

因为php包是在REMI仓库中的,并且目前是被禁用的。我们首先要做的就是启用REMI仓库并且安装php和php-fpm还有php-mcrypt(phpmyadmin需要php-mcrypt和php-mbstring扩展,不安装可能会在启动phpmyadmin时候导致模块缺失的错误。你还可以选择安装其他所需要的扩展,已经在下面列出)。

sudo yum --enablerepo=remi,remi-php55 install php-fpm php-mysql php-mcrypt php-mbstring

更多扩展项如下:

yum --enablerepo=remi,remi-php55 install php-cli php-gd php-pear php-mysqlnd php-pdo php-pgsql php-pecl-mongo php-sqlite php-pecl-memcached php-pecl-memcache php-mbstrin php-xml php-soap php-mcrypt php-fpm

Step 5:配置php

对于php配置文件我们需要做一些细微的改动。

sudo vi /etc/php.ini

找到有cgi.fix_pathinfo=1的这一行,把1改成0。在用vi编辑器时候,可以通过输入”/”+”你所想查找的内容”进行快速查找。

cgi.fix_pathinfo=0

关于这个选项的配置的原文解释为:

If this number is kept as a 1, the php interpreter will do its best to process the file that is as near to the requested file as possible. This is a possible security risk. If this number is set to 0, conversely, the interpreter will only process the exact file path—a much safer alternative. Save and Exit.

总结一下,就是在设置成0的以后,会执行精确的文件路径,而不是在设置1时候,会查找最相近的文件进行执行,这会导致潜在的安全威胁。

Step 6:配置nginx

打开默认的nginx配置文件

sudo vi /etc/nginx/nginx.conf

将worker processes的数字提升到4,保存并退出。

现在来配置nginx的virtual hosts。

sudo vi /etc/nginx/conf.d/default.conf

相关配置和配置改动(在配置的下面)如下。

#
# The default server
#
server
{
listen
80;
server_name example
.com;
location
/ {
root
/usr/share/nginx/html;
index index
.php index.html index.htm;
}

error_page
404 /404.html;
location
= /404.html {
root /
usr/share/nginx/html;
}

error_page
500 502 503 504 /50x.html;
location
= /50x.html {
root /
usr/share/nginx/html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location
~ \.php$ {
root
/usr/share/nginx/html;
fastcgi_pass
127.0.0.1:9000;
fastcgi_index index
.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
;
include fastcgi_params
;
}
}

配置的改变内容如下:

  • 在index栏,添加了index.php。注:如果这里没有添加,一旦你的项目目录里只有index.php,没有index.html的话,会出现403 forbidden error。关于403 forbidden error这个常见错误,可以参考403 forbidden error at Nginx这篇文章
  • 改变你的server_name为你的域名或者ip地址(将配置中的example.com替换即可)
  • 将root改为 /usr/share/nginx/html;
  • 将开头为 “location ~ \.php$ {“,的部分去掉注释#
  • 改变root将其指到真实的文件root, /usr/share/nginx/html;
  • 改变fastcgi_param栏,帮助php编译器找到我们存储在文件root home的php脚本。

保存并退出。

打开php-fpm配置

sudo vi /etc/php-fpm.d/www.conf

在用户和组中,用nginx代替apache

[...]
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
[...]

保存并重启php-fpm。

sudo service php-fpm restart

Setp 7:创建php info页面查看配置结果

首先我们创建一个新的文件。

sudo vi /usr/share/nginx/html/info.php

加入

<!--?php phpinfo(); ?-->;

保存并退出。

重启nginx,使配置生效。(注:将来对配置进行任何更改后,都要重启,配置才会生效。)

访问你在配置中输入的域名或者ip地址对应的php info页面。http://12.34.56.789/info.php或者http://www.yourdomain.com/info.php

显示的页面应该类似于此页面

Step 8:设置自启动。

最后一步就是将刚刚装的所有程序设置自启动。

sudo chkconfig --levels 235 mysqld on
sudo chkconfig
--levels 235 nginx on
sudo chkconfig
--levels 235 php-fpm on

恭喜,你已经完成了配置部分。接下来我们将要安装phpmyadmin。

Step 9:安装phpmydamin。

去phpmyadmin主页下载最新版本的phpmyadmin,举例如下:

创建temp文件夹接受下载文件

mkdir /root/temp
cd
/root/temp

通过wget下载phpmyadmin,并解压。(注:也可以通过其他方式下载到,甚至可以在官网上下载到本地,再通过FTP上传到VPS服务器,根据个人喜好来)

wget http://ufpr.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.8/phpMyAdmin-4.0.8-all-languages.zip
unzip phpMyAdmin
-4.0.8-all-languages.zip

将phpmyadmin移动至目标文件夹,并生成配置文件config.inc.php。(注:目标文件夹可以根据自己喜好来定)

 mv phpMyAdmin-4.0.8-all-languages phpmyadmin
mv phpmyadmin 
/var/www/html/
cd
/var/www/html/phpmyadmin
mv config
.sample.inc.php config.inc.php

 
编辑config.inc.php,将下面这一行

 $cfg['Servers'][$i]['auth_type'] = 'cookie';

替换成:

 $cfg['Servers'][$i]['auth_type'] = 'http';

配置Nginx的server host

sudo vi /etc/nginx/conf.d/phpmyadmin.conf

具体配置如下:

#
# phpmyadmin
#
server
{
listen      
8090;
server_name  yourdomain
.com;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location
/ {
root  
/var/www/html/phpmyadmin;
index  index
.php index.html index.htm;
}

error_page 
404              /404.html;
location
= /404.html {
root   /
usr/share/nginx/html;
}

# redirect server error pages to the static page /50x.html</div>
<div>    #</div>
<div>    error_page   500 502 503 504  /50x.html;
location
= /50x.html {
root   /
usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
#    proxy_pass   <a href="http://127.0.0.1">http://127.0.0.1</a>;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location
~ \.php$ {</div>
<div>        root           /var/www/html/phpmyadmin;</div>
<div>        fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index
.php;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name
;
include        fastcgi_params
;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}

小提示:此类配置文件其实可以通过复制default.conf来减轻输入工作量。

复制后需要修改的内容:

  •  listen       80 default_server; 这个部分。可以将80改成你想要的任何端口号。可以去掉default_server,如果你想重复使用这个端口时候,有default_server会报错。
  • root路径,需要改成你所需要的路径。

最后重启Nginx使配置生效

sudo service nginx reload