给站长朋友们分享一篇Linux服务器配置教程,让搭建熟悉掌握安装CentOS+Nginx+PHP+MySQL服务器环境步骤,让大家可以打造原生的服务器环境,当然了这样会很复杂。推荐大家尽量使用PHP集成环境配置linux服务器,这样会简单很多。
下面我们开始今天的Linux服务器配置CentOS+Nginx+PHP+MySQL服务器环境教程。
1、更新第三方源并升级系统 (CentOS默认的标准源里没有nginx软件包)
1.1、安装CentOS第三方yum源
** #安装下载工具wgetyum install wget
#下载atomic yum源wget http://www.atomicorp.com/installers/atomic
#安装sh ./atomic
** 或者:rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
1.2、升级CentOS系统
#更新yum软件包yum check-update
#更新系统yum update
2、安装和配置nginx
yum install nginx
#启动service nginx start
#设为开机启动chkconfig nginx on
#配置防火墙,开启80端口、3306端口vi /etc/sysconfig/iptables
#(允许80端口通过防火墙)-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#(允许3306端口通过防火墙)-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存后重启防火墙:/etc/init.d/iptables restart
#重启防火墙使配置生效
3、安装和配置PHP
3.1、安装PHP和相关插件yum install -y php php-cli php-curl php-fpm php-intl php-mcrypt php-mysql php-gd php-mbstring php-xml php-dom
3.2、修改PHP配置
#编辑php.ini , 将以下配置的值修改为1024M
vim /etc/php.ini
post_max_size = 1024M
memory_limit = 1024M
upload_max_filesize = 1024M
3.3、配置PHP-FPM
#启动php-fpm/etc/rc.d/init.d/php-fpm start
#设置开机启动chkconfig php-fpm on
#重启pfm/etc/init.d/php-fpm restart
4、安装MySql和创建EduSoho数据库
4.1、安装MySql
#询问是否要安装,输入Y即可自动安装,直到安装完成yum install mysql mysql-server
#启动MySQL/etc/init.d/mysqld start
#设为开机启动chkconfig mysqld on
#拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
修改用户密码:
修改root密码
CentOS 下 MySQL 管理员帐号默认是 root 用户,密码为空。如果你从没设置过 MySQL 的密码,使用 root 用户来连接 MySQL 服务器不需要输入密码。
🔊次设置root密码可以使用以下命令:mysqladmin -u root password NEWPASSWORD
如果你已经设置过密码了,需要要以下命令:mysqladmin -u root -p'oldpassword' password newpass
比如说,旧密码是“12345”,新密码是“nowamagic”,执行以下命令:mysqladmin -u root -p'12345' password 'nowamagic'
修改其它MySQL用户的密码
修改一个普通用户的密码你可以使用以下命令,比如用户是 nmuser:mysqladmin -u nmuser -p oldpassword password newpass
另一种修改密码的方法是,MySQL 服务器把用户名和密码储存在 MySQL 数据库的 user 表中。你可以使用以下方法来直接更新用户 nmuser 的密码:
1. 登录mysql服务器:mysql -u root -p
2. 选择 MySQL 数据库mysql> use mysql;
3. 修改 nmuser 密码mysql> update user set password=PASSWORD("NEWPASSWORD") where User='nmuser';
4. 重置权限
先执行mysql> flush privileges;
在执行mysql> quit
访问授权说明:
Mysql为了🔊性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作:
一、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:mysql -u root -p"youpassword"
进行授权操作:mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
重载授权表:FLUSH PRIVILEGES;
退出mysql数据库:exit
二、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,具体操作如下:
在本机先使用root用户登录mysql:mysql -u root -p"youpassword"
进行授权操作:GRANT ALL PRIVILEGES ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword" WITH GRANT OPTION;
重载授权表:FLUSH PRIVILEGES;
退出mysql数据库:exit
三、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,具体操作如下:
在本机先使用root用户登录mysql:mysql -u root -p"youpassword"
进行授权操作:GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword";
重载授权表:FLUSH PRIVILEGES;
退出mysql数据库:exit
四、删除用户授权,需要使用REVOKE命令,具体命令格式为:REVOKE privileges ON 数据库[.表名] FROM user-name;
具体实例,先在本机登录mysql:mysql -u root -p"youpassword"
进行授权操作:GRANT select,insert,update,delete ON TEST-DB TO test-user@"172.16.16.152" IDENTIFIED BY "youpassword";
再进行删除授权操作:REVOKE all on TEST-DB from test-user;
****注:该操作只是🔊了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。
🔊后从用户表内🔊用户:DELETE FROM user WHERE user="test-user";
重载授权表:FLUSH PRIVILEGES;
退出mysql数据库:exit
五、MYSQL权限详细分类:
全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。
4.1、创建数据库
#登录数据库
mysql -uroot -p
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 ;
GRANT ALL PRIVILEGES ON mydb .*TO’username’@’localhost’ IDENTIFIED BY ‘password’;
quit;
5、 配置Nginx
vi /etc/nginx/nginx.conf
在http{}配置中加入:
client_max_body_size 1024M;
vi /etc/nginx/conf.d/www.conf
加入以下配置:
server {
listen 80;
server_name 127.0.0.1;
root /usr/share/nginx/web;
access_log /var/log/nginx/www.access.log;
error_log /var/log/nginx/www.error.log;
location / {
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
location ~ ^/udisk {
internal;
root /usr/share/nginx/www/app/data/;
}
location ~ ^/(app|app_dev)\.php(/|$) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect;
fastcgi_param HTTP_X-Accel-Mapping /udisk=/usr/share/nginx/www/app/data/udisk;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
}
location ~* \.(jpg|jpeg|gif|png|ico|swf)$ {
expires 3y;
access_log off;
gzip off;
}
location ~* \.(css|js)$ {
access_log off;
expires 3y;
}
location ~ ^/files/.*\.(php|php5)$ {
deny all;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
include fastcgi_params;
}
}
#重启nginx
/etc/init.d/nginx restart