亲手创建一台Ubuntu+PHP5+MySQL5+Nginx+openSSL+sshFtp的微信小程序云服务器
小程序要求Request必须SSL连接,一般虚拟主机不支持SSL,自己有云服务器最佳。
系统可以选Ubuntu14 64位
//更新apt-get
sudo apt-get update
//安装nginx
sudo apt-get install nginx
//选择Y安装
//安装PHP5-fpm
sudo apt-get install php5-fpm
//安装MySQL5
sudo apt-get install mysql-server mysql-client
//过程中输入两次root的密码。
//安装php的各种模块支持
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
//直接Y,全安装
//设置 php.ini
sudo vi /etc/php5/fpm/php.ini
//使用VI,按i进入insert插入模式。
//找到 #cgi.fix_pathinfo=1
//改成 cgi.fix_pathinfo=0
//记得去掉前面的注释。
//按大写的Q,输入w保存,输入q退出。
//接下来修改nginx配置。直接添加一个配置即可。
sudo vi /etc/nginx/conf.d/my.conf
//生成一个 xxxx.conf ,无所谓文件名,扩展名是conf就会被引用。
//输入下面的内容:
server {
listen 80;
listen 443 ssl;
root /我的www目录;
ssl on;
ssl_certificate /etc/ssl/private/1_api.我的域名.com_bundle.crt;
ssl_certificate_key /etc/ssl/private/2_api.我的域名.com.key;
index index.php index.html;
server_name api.我的域名.com;
error_log /var/log/nginx/error.log;
location ~ \.php$ {
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
//里面中文的部分自己修改成自己的,暂时没有证书文件,别急,等下告诉你怎么弄。
//PHP基本不需要修改啥,但是常规的话呢,建议修改一下上传文件的大小,默认2M,可以修改为20M以上,现在的图片都大,网络也好啊。
//nginx配置好了,PHP好了,mysql好了,就差重启了,但是还缺少 SSL
//如果输入ssl指令,出现错误,就说明没有安装过ssl,没有的话装一个SSL
sudo apt-get install openssl
//然后,配置证书。必须要颁布的合法证书,自己建立的没有认可的没用的。推荐百度或腾讯云,
//这里使用腾讯云,毕竟都是一家的,
//登录www.qcloud.com
,SSL证书管理功能,你的域名必须已经备案过了,不然依然没有鸟用。
//建立证书时应该输入具体域名,诸如 api.你的域名.com
,建立后,可以采用手动DNS验证法,在域名的DNS里建立一个TXT的域名,内容就填写证书要求填写的认证码,比如:
201705031627285aw1fem9slsqalbz55bs2dw055lo4t5aeltehraob4krr2kc94
//然后保存DNS解析,随后5分钟刷新证书,就会查看到证书已经颁发了。
//下载证书,会得到一个你的域名的压缩包,解压后里面有三个操作系统的证书,使用Nginx里面的两个文件,你会惊喜的发现,这两个文件的文件名,和你上面Nginx配置信息里的两个证书名字一毛一样。
//现在的问题就是:如何把证书上传上去了,因为我们没有FTP,我也不会其他方法……
//那我们早晚要传文件,我就建立一个FTP吧,安全点,就建立SFTP,基于SSH的FTP文件传输。
//安装一个sshftp server
sudo apt-get install openssh-server
//安装完服务,我们进行用户建立。
sudo useradd -m 我的用户名 -s /usr/sbin/nologin
sudo passwd 我的用户名
//建立好用户,我们要让用户不能登录ssh,于是编辑/etc/shells
sudo vi /etc/shells
//然后在shells末尾添加:
/usr/sbin/nologin
//按大写Q,w,q,保存退出。
//建立一个ftp的专用组
sudo groupadd ftpaccess
//然后注销sshd_config里面的一行:如下
sudo vi /etc/ssh/sshd_config
//注销掉: Subsystem sftp /usr/lib/openssh/sftp-server
//并在文件末尾添加:
Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
//然后保存退出。
//下面我们要把用户放到我们设计好的组里。
sudo usermod -m 我的用户名 -g ftpaccess -s /usr/sbin/nologin
//再建个你自己的目录,记得有权限啊。
sudo mkdir /我的www目录
sudo chown 我的用户名:ftpaccess /我的www目录
很重要:因为设置为 ChrootDirectory %h , 所以,如果登录失败,则是因为 “主目录”的权限问题,要求 %h 必须是所在组为root
//ftp没问题了。重启一下服务器吧:
sudo reboot now
//再启动起来时,FTP是可以使用的。于是连接FTP,使用SFTP登录,进入目录
//上传证书压缩包里的Nginx里的两个证书文件到服务器,然后复制到指定目录:
sudo cp 证书文件 /etc/ssl/private
//重启一切:
sudo service nginx restart
sudo service php5-fpm restart
sudo service mysql restart
现在你可以访问你的服务器了