从我折腾完的感觉来看,非常值得折腾,以后还是要多折腾。
感受:服务器与浏览器通信的整个过程更清晰了些;有了服务器+数据库,折腾自己的项目更方便了;
买
买服务器、域名。买完域名还要备案。如果目的是了解、学习搭建服务器端搭建过程,也可以先不买域名,用IP访问也是一样的。但如果你要用它做小程序的服务器的话,还是要备案且HTTPS的。
安装
我自己搭的是LNMP,所以这里也只说LNMP,以阿里云为例。
Linux选择的系统是centos 6.8。
- 命令行登录自己的服务器:ssh root@ip 回车
- 安装Nginx:yum install nginx
- 安装php及相关模块(这里默认安装的是PHP 5.3,如果需要新版本看下面):yum install -y php php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt libmcrypt-devel php-fpm
- 安装MySQL:yum -y install mysql mysql-server
安装很方便,需要什么模块,直接yum install 模块名 即可。
更新PHP5.3到PHP7
yum默认的版本是PHP5.3,但目前很多扩展都需要PHP5.5及以上。所以就直接升到PHP7吧。
- 检查当前安装的PHP包:
yum list installed | grep php
- 如果有安装的PHP包,先删除他们,否则容易起冲突:
yum remove php*
由于默认的YUM源无法升级PHP,所以需要添加第三方的YUM源,此处用到webtatic。
1234567Centos 5.X:rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpmCentOs 6.x:rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpmCentOs 7.X:rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpmrpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpminstall新版本。
12345678php5.5yum install php55w.x86_64 php55w-cli.x86_64 php55w-common.x86_64 php55w-gd.x86_64 php55w-ldap.x86_64 php55w-mbstring.x86_64 php55w-mcrypt.x86_64 php55w-mysql.x86_64 php55w-pdo.x86_64php5.6yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64php7.0yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysql.x86_64 php70w-pdo.x86_64安装PHP FPM
1234yum install php55w-fpmyum install php56w-fpmyum install php70w-fpmsystemctl enable php-fpm.service【centos7开机自启动命令】最后,
php -v
查看下你的PHP版本吧Nginx代理设置
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#只列了http模块http {include mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log logs/access.log main;error_log logs/error.log error;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65; #开启长连接fastcgi_intercept_errors on; #这个开启才能跳转指定错误页,否则只显示404,50x#gzip on; #gzip压缩server {listen 80;server_name localhost;root /var/www/trunk/htdocs; #网站根目录#charset koi8-r;access_log logs/host.access.log main;location / { #只输入网站域名时,跳转index index.php;if (!-e $request_filename) {rewrite ^/(.*)$ /index.php/$1 last;break;}}error_page 404 http://xxx/404.html; #404页面location ~* \.(txt|htm|html|xml|shtml)$ { #静态资源缓存设置expires 600;}location ~* \.(js|css|htc|gif|ico|png|swf|jpg|jpeg|bmp)$ { #静态资源缓存设置expires 30d;}location ~ .*.php($|/) { #PHP fastcgi代理# root /var/www/htdocs;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_split_path_info ^(.+\.php)(.*)$;fastcgi_param PATH_INFO $fastcgi_path_info;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}}}先这些,域名备案还没下来,https暂时弄不了,之后再加。
PHP框架:CI
这个也很简单,在官网下载CI框架代码,然后上传到服务器对应目录下即可使用。
ci 3.0 路由,默认controller是welcome,需修改成自己的页面,否则只输入域名时,跳转默认controller页面,无法跳转自己的页面。
ci 3.0 文件名必须大写,类名必须大写,类名与方法名不能相同,否则这个方法将被作为构造函数执行。(切记:例如:Index.php中不能写index方法)
PHP包管理composer
linux全局安装:
具体安装及使用过程请参考官方文档
MySQL
额,也没啥好写的。
favicon制作
先用ps或者别的方法做一张图片,然后将其转成favicon.ico格式(网上很多在线网站可用)。将favicon.ico放到网站根目录下即可。
注意事项
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; $document_root变量表示网站根目录
将php.ini中 cgi.fix_pathinfo=1 模块开启,默认是注释掉的,否则fastCGI路由会有问题。
PHP 的配置文件修改过后需要重启php-fpm,如果你是编译安装的那么就用绝对路径去启动,如果是直接安装的可以用 service php-fpm restart
nginx修改配置后,需重载配置,才能生效:Nginx -s reload
error_page 404,50x页面的生效,需要开启: fastcgi_intercept_errors on; 否则不会跳转错误页,只会显示404
ci 3.0 路由,默认controller是welcome,需修改成自己需要的,否则只输入域名时,无法跳转自己的页面
$route[‘default_controller’] = ‘welcome’;ci 3.0 文件名必须大写,类名必须大写,类名与方法名不能相同,否则这个方法将被作为构造函数执行。(切记:例如:Index.php中不能写index方法)
PHP的错误日志,通过php.ini的配置开启及指定日志文件。不仅写满足error_reporting规则的日志,还有用户通过error_log写的日志。
- error_reporting = E_ALL ;将会向PHP报告发生的每个错误
- display_errors = Off ;不显示满足上条 指令所定义规则的所有错误报告
- log_errors = On;决定日志语句记录的位置
- log_errors_max_len = 1024 ;设置每个日志项的最大长度
- error_log = /usr/local/error.log;指定产生的 错误报告写入的日志文件位置
修改php.ini是修改的Master Value,但是local value不会被修改。
php-fpm confs 的设置会覆盖 php.ini
启动mysql服务:/etc/init.d/mysqld 或者service mysqld start
常用Linux命令
- find 查找文件:find / -name error.log -print
- tail -f 查看最新日志:tail -f /var/log/nginx/error.log
- 查看进程:ps aux | grep MySql
- 连接数据库:mysql -uroot -p
- ctrl+r:反向搜索执行过的命令
具体详细用法请自行百度。Linux命令太多了,这里只简单列几个