近期学习小程序,需要搭建一个小型测试服务器,准备用LNMP,在此记录下搭建过程。
1.启用密钥登录
云服务器默认使用用户名密码登录ubuntu系统。
为了以后ssh连接方便,需要在云服务器控制台创建登录密钥对(控制台--》云服务器ECS--》菜单栏--》网络与安全),并下载秘钥文件到本地,进行无密码ssh登录,命令如下:
ssh -i xxx.pem root@xxx.xxx.xxx.xxx。
2.安装MySQL数据库
sudo apt-get update
sudo apt-get install mysql-server mysql-client
//登录mysql 进行验证
mysql –u root –p"xxxxx"
修改MySQL配置文件/etc/mysql/my.cnf ,使MySQL支持中文:
//修改之前先备份
sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.back
sudo vi /etc/mysql/my.cnf
在配置文件的节点[client]下,加入
default-character-set = utf8
在[mysqld]下,加入
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
然后重新加载文件,并重启MySQL服务:
sudo service mysql reload
sudo service mysql restart
登录MySQL,查看系统字符集,看到字符集是utf-8:
mysql -u root -p"xxx"
show variables like '%character%'
/* 查询结果如下:
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
*/
3.安装nginx
sudo apt-get install nginx
sudo service nginx start
安装完成后再浏览器中使用ip地址测试:xxx.xxx.xxx.xxx 。
4.安装php
sudo apt-get install php5-fpm
5.配置nginx
配置nginx.conf,将keepalive_timeout设置为2。(减小服务器压力?)
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.back(备份)
sudo vi /etc/nginx/nginx.conf
配置/etc/nginx/sites-available/default:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.back
sudo vi /etc/nginx/sites-available/default
http访问nginx配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /root/xxxx; #存放php文件的路径;使用root目录,需要将root的目录的权限修改为551
index index.html index.htm index.php; #这行后面添加 index.php作为访问首页
server_name _;
location / {
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root/xxxxxx;
}
location ~ \.php$ { #是php配置的信息
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
https访问nginx配置:
配置https之前,需要先申请ssl证书。目前可以https://common-buy.aliyun.com/?commodityCode=cas#/buy申请免费的ssl证书,并下载证书文件,上传至自己的服务器。
server {
listen 443;
server_name _;
root /root/xxxxxx;
index index.html index.htm index.php;
ssl on;
ssl_certificate /root/xxxxx/ssl/213969032760959.pem; #ssl_certificate和ssl_certificate_key为证书路径信息
ssl_certificate_key /root/xxxx/ssl/213969032760959.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root/xxxxx;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ =404;
}
}
6.配置php
在php.ini中设置cgi.fix_pathinfo=0,并反注释该行。
sudo cp /etc/php5/fpm/php.ini /etc/php5/fpm/php.ini.back
sudo vi /etc/php5/fpm/php.ini
//修改文件后重新加载
sudo service php5-fpm reload
sudo service php5-fpm restart
配置PHP支持MySQL:
sudo apt-get install php5-mysql php5-curl
7.验证
配置完成后,进行验证:http:// xxx.xxx.xxx.xxx/xxxx.php
vi /usr/share/nginx/html/info.php //修改为你配置的路径
/*文件内容
<?php
phpinfo();
?>
*/
vi /usr/share/nginx/html/mysqltest.php
/*文件内容
<?php
//连接mysql
$con = mysql_connect( "localhost", "root", "xxxx");
if ( ! $con ) {
echo 'Could not connect: ' . mysql_error();
die();
}
//创建一个数据库test
if( mysql_query( 'create database test' , $con ) ) {
echo 'Database created! ';
} else {
echo 'Database created error : ' . mysql_error();
}
mysql_close( $con );
?>
*/
8.一些小问题记录
1、sudo service php5-fpm reload,如果这个命令不起作用,采用如下方式修复:
curl -L https://raw.githubusercontent.com/AbhishekGhosh/Nginx-PHP5-FPM-Restart-Fix-on-Ubuntu/master/php5-fpm > /etc/init.d/php5-fpm
chmod +x /etc/init.d/php5-fpm
sudo /etc/init.d/php5-fpm reload/restart/start/stop //命令
2、ubuntu设置开机启动:
在/etc/rc.local中exit 0 前面添加启动命令,如果测试发现没运行则将其默认的Shell更改为Bash:
//方法1 选择no
sudo dpkg-reconfigure dash
//方法2 重新进行软链接
sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh
3、php里localhost访问MySQL失败:
mysqld --verbose --help | grep socket
//输出结果一般为/var/run/mysqld/mysqld.sock
sudo vi /etc/php5/fpm/php.ini
//修改mysql.default_socket = /var/run/mysqld/mysqld.sock
//然后 reload php配置文件,重启php服务
4、设置php允许上传文件
sudo vi /etc/php5/fpm/php.ini
//修改下列行:
upload_tmp_dir = /home/ubuntu/xdfserver/tempData 临时文件路径
file_uploads = On 允许上传文件
upload_max_filesize = 15M 最大上传文件大小
post_max_size = 20M 最大post数据大小
max_execution_time = 300 每个php页面运行时间
max_input_time = 300 每个php页面解析数据时间
memory_limit = 128M 默认128,内存大小
//需要保持 memory_limit > post_max_size > upload_max_filesize
5、php 运行加密解密算法报错
//方法1
sudo php5enmod mcrypt
//方法2
sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/cli/conf.d/mcrypt.ini
6、snmp-mibs-downloader 安装失败的修改方法:
//错误:Package ‘snmp-mibs-downloader’ has no installation candidate
sudo vim /etc/apt/sources.list
/*加入:
# ref. http://packages.ubuntu.com/precise/all/snmp-mibs-downloader/download
deb http://fr.archive.ubuntu.com/ubuntu precise main multiverse
*/
sudo apt-get update && sudo apt-get install snmp-mibs-downloader
7.远程访问数据库:
netstat -an|grep 3306 //127.0.0.1:3306,表示的是本地
sudo vim /etc/mysql/my.cnf //将bind-address = 127.0.0.1注销
//重启ubuntu
netstat -an|grep 3306 //显示 0.0.0.0:3306
mysql -uroot -p"xxxx"
GRANT ALL PRIVILEGES ON *.* TO '你的用户名'@'%' IDENTIFIED BY '你的数据库密码' WITH GRANT OPTION;
flush privileges; //更新权限