cd /usr/local/src
1首先安装php的依赖
yum install gcc gcc-c++ libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel -y
2.编译安装
tar zxf php-5.6.30.tar.gz
cd php-5.6.30
./configure --prefix=/usr/local/php --enable-fpm --with-zlib --with-curl --with-pdo-mysql --enable-mbstring --with-gd --with-png-dir=/usr/lib64 --with-jpeg-dir=/usr/lib64 --with-freetype-dir=/usr/lib64
make && make install
3.添加执行用户
groupadd www-data
useradd -g www-data www-data
4.修改配置文件
另外注意一个地方就是php.ini配置文件的位置可以在编译前配置参数中设置,编译参数可以写成:--with-config-file-path=/usr/local/php 这样的话php就回去指定的目录下读取php.ini配置文件,如果不加这个参数默认位置就是php安装目录下的lib目录,具体也可以在phpinfo()输出界面查看,如果php.ini放到其他位置,php读取不到,那么所有的配置修改后都是不生效的,这点要注意
cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /usr/local/bin/php-fpm 或者 /usr/local/bin/php-fpm #可改名
chmod +x /etc/init.d/php-fpm 或者 chmod +x /usr/local/bin/php-fpm
启动php-fpm/etc/init.d/php-fpm start
vim php-fpm.conf 1.pid 前面的分号去掉 2.设置对于的用户和组 修改为 user=www-data group=www-data
首次启动测试 /usr/local/php/sbin/php-fpm 也可以把执行的php-fpm放到 /usr/local/bin
cp /usr/local/php/sbin/php-fpm /usr/local/bin
开启日志 修改php.ini
1. error_reporting = E_ALL ;将会向PHP报告发生的每个错误
2. display_errors = Off ;不显示满足上条 指令所定义规则的所有错误报告 错误信息不在页面展示
3. log_errors = On ;开启错误日志
4. log_errors_max_len = 1024 ;设置每个日志项的最大长度
5. error_log = /var/php_errors.log ;指定产生的 错误报告写入的日志文件位置 一定记得给目录文件加权限
ps -ef |grep php
nginx安装
1首先安装nginx的依赖
yum install gcc gcc-c++ openssl openssl-devel cyrus-sasl-md5 -y
cd /usr/local/src
2.上传安装包 上传 pcre-8.39.tar.gz zlib-1.2.8.tar.gz nginx-1.10.1.tar.gz 到 /usr/local/src/
tar zxf pcre-8.39.tar.gz
tar zxf zlib-1.2.8.tar.gz
tar zxf nginx-1.10.1.tar.gz
xzvf
3.编译安装
cd /usr/local/src/nginx-1.10.1
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8
make && make install
首次启动测试 /usr/local/nginx/sbin/nginx
之后可以把执行的nginx放到 /usr/local/bin
#cp /usr/local/nginx/sbin/nginx /usr/local/bin
ln -s /usr/local/nginx/sbin/* /usr/local/bin
/usr/local/bin/nginx -t #检查配置文件
/usr/local/bin/nginx -s reload #平滑重启
nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"问题 就是因为首次启动不是usr/local/nginx/sbin/nginx
重新运行下usr/local/nginx/sbin/nginx 就可以了
设置全局的nginx命令vim /etc/profile
在文件最后添加:
PATH=$PATH:/usr/local/php/bin:/usr/local/nginx/sbin/nginx
export PATH
然后执行 命令 source /etc/profile
4.创建配置文件目录
cp /usr/local/src/nginx-1.10.1/conf/nginx.conf /usr/local/nginx/conf
mkdir /usr/local/nginx/conf/vhosts #网站配置文件目录
mkdir /usr/local/nginx/conf/rewrite #重写地址规则配置文件目录
修改默认配置文件 vim /usr/local/nginx/conf/nginx.conf 改为下列代码
worker_processes 4;
error_log /usr/local/nginx/logs/error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#limit_zone crawler $binary_remote_addr 10m;
log_format '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
include /usr/local/nginx/conf/vhosts/*.conf;
}
cd /usr/local/nginx/conf/vhosts
http-demo.conf 网站配置文件
// 如果设置了域名 不想再ip被访问,多加个server 指向强制跳转到自己域名
server {
listen 80 default;
server_name _;
##以下两种二选一
rewrite ^(.*) http://www.baidu.com permanent; ##强制跳转到指定的网址
## return 403; ##或者直接返回403
}
server {
listen 80;
#server_name www.baidu.com;
server_name localhost;
index index.php index.html index.htm;
root /home/demo;
location / {
#访问路径的文件不存在则重写URL转交给ThinkPHP处理
if (!-e $request_filename) {
#rewrite ^/(.*)$ /index.php?s=$1 last;
rewrite ^/(.*)$ /index.php?s=/$1 last;
break;
}
}
location ~ \.php/?.*$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#加载Nginx默认"服务器环境变量"配置
include fastcgi.conf;
#设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
set $fastcgi_script_name2 $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
}
}
https-demo.conf 网站配置文件
server {
listen 80;
server_name www.baidu.com;
return 301 https://www.baidu.com$request_uri;
}
server {
listen 443;
server_name www.baidu.com;
ssl on;
root /home/demo;
index index.php index.html index.htm;
ssl_certificate cert/demo.crt;
ssl_certificate_key cert/demo.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
#访问路径的文件不存在则重写URL转交给ThinkPHP处理
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 break;
}
}
location ~ \.php/?.*$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#加载Nginx默认"服务器环境变量"配置
include fastcgi.conf;
#设置PATH_INFO并改写SCRIPT_FILENAME,SCRIPT_NAME服务器环境变量
set $fastcgi_script_name2 $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+\.php)(/.+)$") {
set $fastcgi_script_name2 $1;
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name2;
fastcgi_param SCRIPT_NAME $fastcgi_script_name2;
}
}
mysql安装
1.编译安装
tar zxf mysql-5.6.31.tar.gz
cd /usr/local/src/mysql-5.6.31
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data
如果提示cmake不存在 执行 yum install cmake -y
如报错误 CMake Error at cmake/readline.cmake:85 (MESSAGE): Curses library not found.
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
yum -y install ncurses-devel
find / -name CMakeCache.txt
删除找出来的CMakeCache.txt
rm -rf /usr/local/src/cmake-2.8.8/Tests/ComplexOneConfig/Cache/CMakeCache.txt
make && make install
2.创建用户和组
cd /usr/local/mysql/
groupadd mysql
useradd -r -g mysql mysql
将所有的目录都改成mysql用户和mysql组 (安装好后默认都是root)
chown -R mysql:mysql . #后面有点 一定要带着 表示当前
rm -f /etc/my.cnf
安装MySQL系统表
./scripts/mysql_install_db --user=mysql
please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解决方法是安装autoconf库y um -y install autoconf
所有目录都改成root 和root组 只有data目录不是不是
chown -R root:root .
chown -R mysql:mysql data
修改配置文件
cp support-files/my-default.cnf /etc/my.cnf
my.cnf
port = 9886
log-error = /usr/local/mysql/error.log
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
sql_mode=NO_ENGINE_SUBSTITUTION
table_open_cache=128
performance_schema_max_table_instances=200
table_definition_cache=200
启动程序
cp support-files/mysql.server /etc/init.d/mysqld 或者 cp support-files/my-default.cnf/ /usr/local/bin/mysqld
以完整路径的方式启动MySQL
/usr/local/mysql/bin/mysqld_safe --user=mysql &
190418 16:00:17 mysqld_safe Logging to '/usr/local/mysql/data/VM_0_8_centos.err'.
190418 16:00:17 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
启动时如果感觉卡住了 按下回车键
ps -ef|grep mysql
登录
/usr/local/mysql/bin/mysql -u root -p
配置MySQL守护进程 将MySQL程序复制到启动目录
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
可以使用管理服务的命令管理MySQL了
centos6 service mysqld start
centos7 systemctl start mysqld
配置环境变量
vim /etc/profile
找到文件最下面 修改对应位置 将MySQL对应的bin目录增加进去
export PATH="$PATH:/usr/local/apache/bin:/usr/local/mysql/bin"
让环境变量生效
source /etc/profile
连接MySQL 此时mysql还没有密码
mysql -u root -p
查看有哪些用户
use mysql
select user,password,host from mysql.user;
删除不必要的用户
delete from mysql.user where host <> 'localhost';
delete from mysql.user where user <> 'root';
该用户设置密码 (密码可以自定义)
update mysql.user set password=password('root') where user='root'; # 设置密码
flush privileges; # 刷新权限让密码生效
设置远程访问
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges; //刷新MySQL的系统权限相关表
如果mysql使用过程中
报错起不来 Starting MySQL..... ERROR! The server quit without updating PID file (/usr/local/mysql/data/VM_0_8_centos.pid).
按mysqld_safe启动 /usr/local/mysql/bin/mysqld_safe --user=mysql &
小内存服务器mysql占内存高优化
[mysqld]
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
忘记root密码
1.vim /etc/my.cnf 在[mysqld]的段中加上一句:skip-grant-tables
service mysqld restart
2.登录mysql -u root -p
mysql> USE mysql ;
Database changed
mysql> update user set password=password("123456") where user='root';
5.7版本 使用 update mysql.user set authentication_string=password('123456') where user='root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> flush privileges ;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
3.修改默认端口
vim /etc/my.cnf
port = 9886
log-error = /usr/local/mysql/error.log
service mysqld restart
4.远程访问 iptables防火墙添加端口 如果访问不了,考虑是否云服务器有防火墙限制
/sbin/iptables -I INPUT -p tcp --dport 9886 -j ACCEPT
然后保存:
/etc/rc.d/init.d/iptables save
service iptables restart
vim /etc/sysconfig/iptables
5.mysql设置远程访问权限 *.* 允许远程访问的IP地址 .表示所有IP都可以根据rycroot用户进行访问
登录mysql -u root -p
use mysql;
grant all privileges on *.* to 'ycroot'@'%' identified by '123456' with grant option;
flush privileges; //刷新MySQL的系统权限相关表
quit; // 退出mysql
设置用户 root 可以在本地被访问
use mysql;
grant all privileges on *.* to root@"localhost" identified by "123456";
flush privileges; //刷新MySQL的系统权限相关表
quit; // 退出mysql
创建被删除的用户,并赋予超级权限
use mysql;
grant all on*.* to root@localhost identified by '123456' with grant option; #创建被删除的用户,并赋予超级权限
flush privileges; //刷新MySQL的系统权限相关表